Lines Matching refs:test_dev

108 	struct kmod_test_device *test_dev;  member
178 static void kmod_test_done_check(struct kmod_test_device *test_dev, in kmod_test_done_check() argument
181 struct test_config *config = &test_dev->config; in kmod_test_done_check()
183 test_dev->done++; in kmod_test_done_check()
184 dev_dbg(test_dev->dev, "Done thread count: %u\n", test_dev->done); in kmod_test_done_check()
186 if (test_dev->done == config->num_threads) { in kmod_test_done_check()
187 dev_info(test_dev->dev, "Done: %u threads have all run now\n", in kmod_test_done_check()
188 test_dev->done); in kmod_test_done_check()
189 dev_info(test_dev->dev, "Last thread to run: %u\n", idx); in kmod_test_done_check()
190 complete(&test_dev->kthreads_done); in kmod_test_done_check()
196 struct kmod_test_device *test_dev = info->test_dev; in test_kmod_put_module() local
197 struct test_config *config = &test_dev->config; in test_kmod_put_module()
219 struct kmod_test_device *test_dev = info->test_dev; in run_request() local
220 struct test_config *config = &test_dev->config; in run_request()
236 dev_dbg(test_dev->dev, "Ran thread %u\n", info->thread_idx); in run_request()
240 mutex_lock(&test_dev->thread_mutex); in run_request()
242 kmod_test_done_check(test_dev, info->thread_idx); in run_request()
243 mutex_unlock(&test_dev->thread_mutex); in run_request()
250 struct kmod_test_device *test_dev = info->test_dev; in tally_work_test() local
251 struct test_config *config = &test_dev->config; in tally_work_test()
262 dev_info(test_dev->dev, in tally_work_test()
270 dev_info(test_dev->dev, "Sync thread %u fs: %s\n", in tally_work_test()
290 static void tally_up_work(struct kmod_test_device *test_dev) in tally_up_work() argument
292 struct test_config *config = &test_dev->config; in tally_up_work()
298 mutex_lock(&test_dev->thread_mutex); in tally_up_work()
300 dev_info(test_dev->dev, "Results:\n"); in tally_up_work()
303 info = &test_dev->info[idx]; in tally_up_work()
315 mutex_unlock(&test_dev->thread_mutex); in tally_up_work()
318 static int try_one_request(struct kmod_test_device *test_dev, unsigned int idx) in try_one_request() argument
320 struct kmod_test_device_info *info = &test_dev->info[idx]; in try_one_request()
323 mutex_lock(&test_dev->thread_mutex); in try_one_request()
326 info->test_dev = test_dev; in try_one_request()
331 test_dev->test_is_oom = true; in try_one_request()
332 dev_err(test_dev->dev, "Setting up thread %u failed\n", idx); in try_one_request()
336 dev_dbg(test_dev->dev, "Kicked off thread %u\n", idx); in try_one_request()
338 mutex_unlock(&test_dev->thread_mutex); in try_one_request()
344 mutex_unlock(&test_dev->thread_mutex); in try_one_request()
349 static void test_dev_kmod_stop_tests(struct kmod_test_device *test_dev) in test_dev_kmod_stop_tests() argument
351 struct test_config *config = &test_dev->config; in test_dev_kmod_stop_tests()
355 dev_info(test_dev->dev, "Ending request_module() tests\n"); in test_dev_kmod_stop_tests()
357 mutex_lock(&test_dev->thread_mutex); in test_dev_kmod_stop_tests()
360 info = &test_dev->info[i]; in test_dev_kmod_stop_tests()
362 dev_info(test_dev->dev, in test_dev_kmod_stop_tests()
378 mutex_unlock(&test_dev->thread_mutex); in test_dev_kmod_stop_tests()
387 static int try_requests(struct kmod_test_device *test_dev) in try_requests() argument
389 struct test_config *config = &test_dev->config; in try_requests()
395 if (test_dev->test_is_oom) { in try_requests()
400 ret = try_one_request(test_dev, idx); in try_requests()
408 test_dev->test_is_oom = false; in try_requests()
409 dev_info(test_dev->dev, in try_requests()
411 wait_for_completion(&test_dev->kthreads_done); in try_requests()
412 tally_up_work(test_dev); in try_requests()
414 test_dev->test_is_oom = true; in try_requests()
415 dev_info(test_dev->dev, in try_requests()
417 test_dev_kmod_stop_tests(test_dev); in try_requests()
424 static int run_test_driver(struct kmod_test_device *test_dev) in run_test_driver() argument
426 struct test_config *config = &test_dev->config; in run_test_driver()
428 dev_info(test_dev->dev, "Test case: %s (%u)\n", in run_test_driver()
431 dev_info(test_dev->dev, "Test driver to load: %s\n", in run_test_driver()
433 dev_info(test_dev->dev, "Number of threads to run: %u\n", in run_test_driver()
435 dev_info(test_dev->dev, "Thread IDs will range from 0 - %u\n", in run_test_driver()
438 return try_requests(test_dev); in run_test_driver()
441 static int run_test_fs_type(struct kmod_test_device *test_dev) in run_test_fs_type() argument
443 struct test_config *config = &test_dev->config; in run_test_fs_type()
445 dev_info(test_dev->dev, "Test case: %s (%u)\n", in run_test_fs_type()
448 dev_info(test_dev->dev, "Test filesystem to load: %s\n", in run_test_fs_type()
450 dev_info(test_dev->dev, "Number of threads to run: %u\n", in run_test_fs_type()
452 dev_info(test_dev->dev, "Thread IDs will range from 0 - %u\n", in run_test_fs_type()
455 return try_requests(test_dev); in run_test_fs_type()
462 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_show() local
463 struct test_config *config = &test_dev->config; in config_show()
466 mutex_lock(&test_dev->config_mutex); in config_show()
497 mutex_unlock(&test_dev->config_mutex); in config_show()
507 static int __trigger_config_run(struct kmod_test_device *test_dev) in __trigger_config_run() argument
509 struct test_config *config = &test_dev->config; in __trigger_config_run()
511 test_dev->done = 0; in __trigger_config_run()
515 return run_test_driver(test_dev); in __trigger_config_run()
518 dev_warn(test_dev->dev, in __trigger_config_run()
522 return run_test_fs_type(test_dev); in __trigger_config_run()
524 dev_warn(test_dev->dev, in __trigger_config_run()
531 static int trigger_config_run(struct kmod_test_device *test_dev) in trigger_config_run() argument
533 struct test_config *config = &test_dev->config; in trigger_config_run()
536 mutex_lock(&test_dev->trigger_mutex); in trigger_config_run()
537 mutex_lock(&test_dev->config_mutex); in trigger_config_run()
539 ret = __trigger_config_run(test_dev); in trigger_config_run()
542 dev_info(test_dev->dev, "General test result: %d\n", in trigger_config_run()
561 mutex_unlock(&test_dev->config_mutex); in trigger_config_run()
562 mutex_unlock(&test_dev->trigger_mutex); in trigger_config_run()
572 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in trigger_config_store() local
575 if (test_dev->test_is_oom) in trigger_config_store()
584 ret = trigger_config_run(test_dev); in trigger_config_store()
642 static void kmod_config_free(struct kmod_test_device *test_dev) in kmod_config_free() argument
646 if (!test_dev) in kmod_config_free()
649 config = &test_dev->config; in kmod_config_free()
651 mutex_lock(&test_dev->config_mutex); in kmod_config_free()
653 mutex_unlock(&test_dev->config_mutex); in kmod_config_free()
660 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_test_driver_store() local
661 struct test_config *config = &test_dev->config; in config_test_driver_store()
664 mutex_lock(&test_dev->config_mutex); in config_test_driver_store()
670 mutex_unlock(&test_dev->config_mutex); in config_test_driver_store()
695 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_test_driver_show() local
696 struct test_config *config = &test_dev->config; in config_test_driver_show()
698 return config_test_show_str(&test_dev->config_mutex, buf, in config_test_driver_show()
707 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_test_fs_store() local
708 struct test_config *config = &test_dev->config; in config_test_fs_store()
711 mutex_lock(&test_dev->config_mutex); in config_test_fs_store()
717 mutex_unlock(&test_dev->config_mutex); in config_test_fs_store()
726 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_test_fs_show() local
727 struct test_config *config = &test_dev->config; in config_test_fs_show()
729 return config_test_show_str(&test_dev->config_mutex, buf, in config_test_fs_show()
734 static int trigger_config_run_type(struct kmod_test_device *test_dev, in trigger_config_run_type() argument
737 struct test_config *config = &test_dev->config; in trigger_config_run_type()
739 mutex_lock(&test_dev->config_mutex); in trigger_config_run_type()
746 mutex_unlock(&test_dev->config_mutex); in trigger_config_run_type()
751 mutex_unlock(&test_dev->config_mutex); in trigger_config_run_type()
757 mutex_unlock(&test_dev->config_mutex); in trigger_config_run_type()
759 test_dev->test_is_oom = false; in trigger_config_run_type()
761 return trigger_config_run(test_dev); in trigger_config_run_type()
764 static void free_test_dev_info(struct kmod_test_device *test_dev) in free_test_dev_info() argument
766 vfree(test_dev->info); in free_test_dev_info()
767 test_dev->info = NULL; in free_test_dev_info()
770 static int kmod_config_sync_info(struct kmod_test_device *test_dev) in kmod_config_sync_info() argument
772 struct test_config *config = &test_dev->config; in kmod_config_sync_info()
774 free_test_dev_info(test_dev); in kmod_config_sync_info()
775 test_dev->info = in kmod_config_sync_info()
778 if (!test_dev->info) in kmod_config_sync_info()
800 static int __kmod_config_init(struct kmod_test_device *test_dev) in __kmod_config_init() argument
802 struct test_config *config = &test_dev->config; in __kmod_config_init()
826 ret = kmod_config_sync_info(test_dev); in __kmod_config_init()
830 test_dev->test_is_oom = false; in __kmod_config_init()
835 test_dev->test_is_oom = true; in __kmod_config_init()
836 WARN_ON(test_dev->test_is_oom); in __kmod_config_init()
847 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in reset_store() local
850 mutex_lock(&test_dev->trigger_mutex); in reset_store()
851 mutex_lock(&test_dev->config_mutex); in reset_store()
853 ret = __kmod_config_init(test_dev); in reset_store()
865 mutex_unlock(&test_dev->config_mutex); in reset_store()
866 mutex_unlock(&test_dev->trigger_mutex); in reset_store()
872 static int test_dev_config_update_uint_sync(struct kmod_test_device *test_dev, in test_dev_config_update_uint_sync() argument
875 int (*test_sync)(struct kmod_test_device *test_dev)) in test_dev_config_update_uint_sync() argument
885 mutex_lock(&test_dev->config_mutex); in test_dev_config_update_uint_sync()
890 ret = test_sync(test_dev); in test_dev_config_update_uint_sync()
894 ret = test_sync(test_dev); in test_dev_config_update_uint_sync()
897 mutex_unlock(&test_dev->config_mutex); in test_dev_config_update_uint_sync()
901 mutex_unlock(&test_dev->config_mutex); in test_dev_config_update_uint_sync()
906 static int test_dev_config_update_uint_range(struct kmod_test_device *test_dev, in test_dev_config_update_uint_range() argument
922 mutex_lock(&test_dev->config_mutex); in test_dev_config_update_uint_range()
924 mutex_unlock(&test_dev->config_mutex); in test_dev_config_update_uint_range()
930 static int test_dev_config_update_int(struct kmod_test_device *test_dev, in test_dev_config_update_int() argument
941 mutex_lock(&test_dev->config_mutex); in test_dev_config_update_int()
943 mutex_unlock(&test_dev->config_mutex); in test_dev_config_update_int()
948 static ssize_t test_dev_config_show_int(struct kmod_test_device *test_dev, in test_dev_config_show_int() argument
954 mutex_lock(&test_dev->config_mutex); in test_dev_config_show_int()
956 mutex_unlock(&test_dev->config_mutex); in test_dev_config_show_int()
961 static ssize_t test_dev_config_show_uint(struct kmod_test_device *test_dev, in test_dev_config_show_uint() argument
967 mutex_lock(&test_dev->config_mutex); in test_dev_config_show_uint()
969 mutex_unlock(&test_dev->config_mutex); in test_dev_config_show_uint()
978 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in test_result_store() local
979 struct test_config *config = &test_dev->config; in test_result_store()
981 return test_dev_config_update_int(test_dev, buf, count, in test_result_store()
989 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_num_threads_store() local
990 struct test_config *config = &test_dev->config; in config_num_threads_store()
992 return test_dev_config_update_uint_sync(test_dev, buf, count, in config_num_threads_store()
1001 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_num_threads_show() local
1002 struct test_config *config = &test_dev->config; in config_num_threads_show()
1004 return test_dev_config_show_int(test_dev, buf, config->num_threads); in config_num_threads_show()
1012 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_test_case_store() local
1013 struct test_config *config = &test_dev->config; in config_test_case_store()
1015 return test_dev_config_update_uint_range(test_dev, buf, count, in config_test_case_store()
1025 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_test_case_show() local
1026 struct test_config *config = &test_dev->config; in config_test_case_show()
1028 return test_dev_config_show_uint(test_dev, buf, config->test_case); in config_test_case_show()
1036 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in test_result_show() local
1037 struct test_config *config = &test_dev->config; in test_result_show()
1039 return test_dev_config_show_int(test_dev, buf, config->test_result); in test_result_show()
1059 ATTRIBUTE_GROUPS(test_dev);
1061 static int kmod_config_init(struct kmod_test_device *test_dev) in kmod_config_init() argument
1065 mutex_lock(&test_dev->config_mutex); in kmod_config_init()
1066 ret = __kmod_config_init(test_dev); in kmod_config_init()
1067 mutex_unlock(&test_dev->config_mutex); in kmod_config_init()
1075 struct kmod_test_device *test_dev; in alloc_test_dev_kmod() local
1078 test_dev = vzalloc(sizeof(struct kmod_test_device)); in alloc_test_dev_kmod()
1079 if (!test_dev) in alloc_test_dev_kmod()
1082 mutex_init(&test_dev->config_mutex); in alloc_test_dev_kmod()
1083 mutex_init(&test_dev->trigger_mutex); in alloc_test_dev_kmod()
1084 mutex_init(&test_dev->thread_mutex); in alloc_test_dev_kmod()
1086 init_completion(&test_dev->kthreads_done); in alloc_test_dev_kmod()
1088 ret = kmod_config_init(test_dev); in alloc_test_dev_kmod()
1094 test_dev->dev_idx = idx; in alloc_test_dev_kmod()
1095 misc_dev = &test_dev->misc_dev; in alloc_test_dev_kmod()
1105 return test_dev; in alloc_test_dev_kmod()
1108 free_test_dev_info(test_dev); in alloc_test_dev_kmod()
1109 kmod_config_free(test_dev); in alloc_test_dev_kmod()
1111 vfree(test_dev); in alloc_test_dev_kmod()
1112 test_dev = NULL; in alloc_test_dev_kmod()
1117 static void free_test_dev_kmod(struct kmod_test_device *test_dev) in free_test_dev_kmod() argument
1119 if (test_dev) { in free_test_dev_kmod()
1120 kfree_const(test_dev->misc_dev.name); in free_test_dev_kmod()
1121 test_dev->misc_dev.name = NULL; in free_test_dev_kmod()
1122 free_test_dev_info(test_dev); in free_test_dev_kmod()
1123 kmod_config_free(test_dev); in free_test_dev_kmod()
1124 vfree(test_dev); in free_test_dev_kmod()
1125 test_dev = NULL; in free_test_dev_kmod()
1131 struct kmod_test_device *test_dev = NULL; in register_test_dev_kmod() local
1142 test_dev = alloc_test_dev_kmod(num_test_devs); in register_test_dev_kmod()
1143 if (!test_dev) in register_test_dev_kmod()
1146 ret = misc_register(&test_dev->misc_dev); in register_test_dev_kmod()
1149 free_test_dev_kmod(test_dev); in register_test_dev_kmod()
1150 test_dev = NULL; in register_test_dev_kmod()
1154 test_dev->dev = test_dev->misc_dev.this_device; in register_test_dev_kmod()
1155 list_add_tail(&test_dev->list, &reg_test_devs); in register_test_dev_kmod()
1156 dev_info(test_dev->dev, "interface ready\n"); in register_test_dev_kmod()
1163 return test_dev; in register_test_dev_kmod()
1169 struct kmod_test_device *test_dev; in test_kmod_init() local
1172 test_dev = register_test_dev_kmod(); in test_kmod_init()
1173 if (!test_dev) { in test_kmod_init()
1186 ret = trigger_config_run_type(test_dev, TEST_KMOD_DRIVER); in test_kmod_init()
1190 ret = trigger_config_run_type(test_dev, TEST_KMOD_FS_TYPE); in test_kmod_init()
1200 void unregister_test_dev_kmod(struct kmod_test_device *test_dev) in unregister_test_dev_kmod() argument
1202 mutex_lock(&test_dev->trigger_mutex); in unregister_test_dev_kmod()
1203 mutex_lock(&test_dev->config_mutex); in unregister_test_dev_kmod()
1205 test_dev_kmod_stop_tests(test_dev); in unregister_test_dev_kmod()
1207 dev_info(test_dev->dev, "removing interface\n"); in unregister_test_dev_kmod()
1208 misc_deregister(&test_dev->misc_dev); in unregister_test_dev_kmod()
1210 mutex_unlock(&test_dev->config_mutex); in unregister_test_dev_kmod()
1211 mutex_unlock(&test_dev->trigger_mutex); in unregister_test_dev_kmod()
1213 free_test_dev_kmod(test_dev); in unregister_test_dev_kmod()
1218 struct kmod_test_device *test_dev, *tmp; in test_kmod_exit() local
1221 list_for_each_entry_safe(test_dev, tmp, &reg_test_devs, list) { in test_kmod_exit()
1222 list_del(&test_dev->list); in test_kmod_exit()
1223 unregister_test_dev_kmod(test_dev); in test_kmod_exit()