Lines Matching refs:test_dev
86 * @test_dev: test device test is being performed under
98 struct kmod_test_device *test_dev;
168 static void kmod_test_done_check(struct kmod_test_device *test_dev,
171 struct test_config *config = &test_dev->config;
173 test_dev->done++;
174 dev_dbg(test_dev->dev, "Done thread count: %u\n", test_dev->done);
176 if (test_dev->done == config->num_threads) {
177 dev_info(test_dev->dev, "Done: %u threads have all run now\n",
178 test_dev->done);
179 dev_info(test_dev->dev, "Last thread to run: %u\n", idx);
180 complete(&test_dev->kthreads_done);
186 struct kmod_test_device *test_dev = info->test_dev;
187 struct test_config *config = &test_dev->config;
209 struct kmod_test_device *test_dev = info->test_dev;
210 struct test_config *config = &test_dev->config;
226 dev_dbg(test_dev->dev, "Ran thread %u\n", info->thread_idx);
230 mutex_lock(&test_dev->thread_mutex);
232 kmod_test_done_check(test_dev, info->thread_idx);
233 mutex_unlock(&test_dev->thread_mutex);
240 struct kmod_test_device *test_dev = info->test_dev;
241 struct test_config *config = &test_dev->config;
252 dev_info(test_dev->dev,
260 dev_info(test_dev->dev, "Sync thread %u fs: %s\n",
280 static void tally_up_work(struct kmod_test_device *test_dev)
282 struct test_config *config = &test_dev->config;
288 mutex_lock(&test_dev->thread_mutex);
290 dev_info(test_dev->dev, "Results:\n");
293 info = &test_dev->info[idx];
305 mutex_unlock(&test_dev->thread_mutex);
308 static int try_one_request(struct kmod_test_device *test_dev, unsigned int idx)
310 struct kmod_test_device_info *info = &test_dev->info[idx];
313 mutex_lock(&test_dev->thread_mutex);
316 info->test_dev = test_dev;
321 test_dev->test_is_oom = true;
322 dev_err(test_dev->dev, "Setting up thread %u failed\n", idx);
326 dev_dbg(test_dev->dev, "Kicked off thread %u\n", idx);
328 mutex_unlock(&test_dev->thread_mutex);
334 mutex_unlock(&test_dev->thread_mutex);
339 static void test_dev_kmod_stop_tests(struct kmod_test_device *test_dev)
341 struct test_config *config = &test_dev->config;
345 dev_info(test_dev->dev, "Ending request_module() tests\n");
347 mutex_lock(&test_dev->thread_mutex);
350 info = &test_dev->info[i];
352 dev_info(test_dev->dev,
368 mutex_unlock(&test_dev->thread_mutex);
377 static int try_requests(struct kmod_test_device *test_dev)
379 struct test_config *config = &test_dev->config;
385 if (test_dev->test_is_oom) {
390 ret = try_one_request(test_dev, idx);
398 test_dev->test_is_oom = false;
399 dev_info(test_dev->dev,
401 wait_for_completion(&test_dev->kthreads_done);
402 tally_up_work(test_dev);
404 test_dev->test_is_oom = true;
405 dev_info(test_dev->dev,
407 test_dev_kmod_stop_tests(test_dev);
414 static int run_test_driver(struct kmod_test_device *test_dev)
416 struct test_config *config = &test_dev->config;
418 dev_info(test_dev->dev, "Test case: %s (%u)\n",
421 dev_info(test_dev->dev, "Test driver to load: %s\n",
423 dev_info(test_dev->dev, "Number of threads to run: %u\n",
425 dev_info(test_dev->dev, "Thread IDs will range from 0 - %u\n",
428 return try_requests(test_dev);
431 static int run_test_fs_type(struct kmod_test_device *test_dev)
433 struct test_config *config = &test_dev->config;
435 dev_info(test_dev->dev, "Test case: %s (%u)\n",
438 dev_info(test_dev->dev, "Test filesystem to load: %s\n",
440 dev_info(test_dev->dev, "Number of threads to run: %u\n",
442 dev_info(test_dev->dev, "Thread IDs will range from 0 - %u\n",
445 return try_requests(test_dev);
452 struct kmod_test_device *test_dev = dev_to_test_dev(dev);
453 struct test_config *config = &test_dev->config;
456 mutex_lock(&test_dev->config_mutex);
487 mutex_unlock(&test_dev->config_mutex);
497 static int __trigger_config_run(struct kmod_test_device *test_dev)
499 struct test_config *config = &test_dev->config;
501 test_dev->done = 0;
505 return run_test_driver(test_dev);
507 return run_test_fs_type(test_dev);
509 dev_warn(test_dev->dev,
516 static int trigger_config_run(struct kmod_test_device *test_dev)
518 struct test_config *config = &test_dev->config;
521 mutex_lock(&test_dev->trigger_mutex);
522 mutex_lock(&test_dev->config_mutex);
524 ret = __trigger_config_run(test_dev);
527 dev_info(test_dev->dev, "General test result: %d\n",
546 mutex_unlock(&test_dev->config_mutex);
547 mutex_unlock(&test_dev->trigger_mutex);
557 struct kmod_test_device *test_dev = dev_to_test_dev(dev);
560 if (test_dev->test_is_oom)
569 ret = trigger_config_run(test_dev);
627 static void kmod_config_free(struct kmod_test_device *test_dev)
631 if (!test_dev)
634 config = &test_dev->config;
636 mutex_lock(&test_dev->config_mutex);
638 mutex_unlock(&test_dev->config_mutex);
645 struct kmod_test_device *test_dev = dev_to_test_dev(dev);
646 struct test_config *config = &test_dev->config;
649 mutex_lock(&test_dev->config_mutex);
655 mutex_unlock(&test_dev->config_mutex);
680 struct kmod_test_device *test_dev = dev_to_test_dev(dev);
681 struct test_config *config = &test_dev->config;
683 return config_test_show_str(&test_dev->config_mutex, buf,
692 struct kmod_test_device *test_dev = dev_to_test_dev(dev);
693 struct test_config *config = &test_dev->config;
696 mutex_lock(&test_dev->config_mutex);
702 mutex_unlock(&test_dev->config_mutex);
711 struct kmod_test_device *test_dev = dev_to_test_dev(dev);
712 struct test_config *config = &test_dev->config;
714 return config_test_show_str(&test_dev->config_mutex, buf,
719 static int trigger_config_run_type(struct kmod_test_device *test_dev,
724 struct test_config *config = &test_dev->config;
726 mutex_lock(&test_dev->config_mutex);
742 mutex_unlock(&test_dev->config_mutex);
748 mutex_unlock(&test_dev->config_mutex);
751 test_dev->test_is_oom = true;
755 test_dev->test_is_oom = false;
757 return trigger_config_run(test_dev);
760 static void free_test_dev_info(struct kmod_test_device *test_dev)
762 vfree(test_dev->info);
763 test_dev->info = NULL;
766 static int kmod_config_sync_info(struct kmod_test_device *test_dev)
768 struct test_config *config = &test_dev->config;
770 free_test_dev_info(test_dev);
771 test_dev->info =
774 if (!test_dev->info)
796 static int __kmod_config_init(struct kmod_test_device *test_dev)
798 struct test_config *config = &test_dev->config;
817 ret = kmod_config_sync_info(test_dev);
821 test_dev->test_is_oom = false;
826 test_dev->test_is_oom = true;
827 WARN_ON(test_dev->test_is_oom);
838 struct kmod_test_device *test_dev = dev_to_test_dev(dev);
841 mutex_lock(&test_dev->trigger_mutex);
842 mutex_lock(&test_dev->config_mutex);
844 ret = __kmod_config_init(test_dev);
856 mutex_unlock(&test_dev->config_mutex);
857 mutex_unlock(&test_dev->trigger_mutex);
863 static int test_dev_config_update_uint_sync(struct kmod_test_device *test_dev,
866 int (*test_sync)(struct kmod_test_device *test_dev))
876 mutex_lock(&test_dev->config_mutex);
881 ret = test_sync(test_dev);
885 ret = test_sync(test_dev);
888 mutex_unlock(&test_dev->config_mutex);
892 mutex_unlock(&test_dev->config_mutex);
897 static int test_dev_config_update_uint_range(struct kmod_test_device *test_dev,
913 mutex_lock(&test_dev->config_mutex);
915 mutex_unlock(&test_dev->config_mutex);
921 static int test_dev_config_update_int(struct kmod_test_device *test_dev,
932 mutex_lock(&test_dev->config_mutex);
934 mutex_unlock(&test_dev->config_mutex);
939 static ssize_t test_dev_config_show_int(struct kmod_test_device *test_dev,
945 mutex_lock(&test_dev->config_mutex);
947 mutex_unlock(&test_dev->config_mutex);
952 static ssize_t test_dev_config_show_uint(struct kmod_test_device *test_dev,
958 mutex_lock(&test_dev->config_mutex);
960 mutex_unlock(&test_dev->config_mutex);
969 struct kmod_test_device *test_dev = dev_to_test_dev(dev);
970 struct test_config *config = &test_dev->config;
972 return test_dev_config_update_int(test_dev, buf, count,
980 struct kmod_test_device *test_dev = dev_to_test_dev(dev);
981 struct test_config *config = &test_dev->config;
983 return test_dev_config_update_uint_sync(test_dev, buf, count,
992 struct kmod_test_device *test_dev = dev_to_test_dev(dev);
993 struct test_config *config = &test_dev->config;
995 return test_dev_config_show_int(test_dev, buf, config->num_threads);
1003 struct kmod_test_device *test_dev = dev_to_test_dev(dev);
1004 struct test_config *config = &test_dev->config;
1006 return test_dev_config_update_uint_range(test_dev, buf, count,
1016 struct kmod_test_device *test_dev = dev_to_test_dev(dev);
1017 struct test_config *config = &test_dev->config;
1019 return test_dev_config_show_uint(test_dev, buf, config->test_case);
1027 struct kmod_test_device *test_dev = dev_to_test_dev(dev);
1028 struct test_config *config = &test_dev->config;
1030 return test_dev_config_show_int(test_dev, buf, config->test_result);
1050 ATTRIBUTE_GROUPS(test_dev);
1052 static int kmod_config_init(struct kmod_test_device *test_dev)
1056 mutex_lock(&test_dev->config_mutex);
1057 ret = __kmod_config_init(test_dev);
1058 mutex_unlock(&test_dev->config_mutex);
1066 struct kmod_test_device *test_dev;
1069 test_dev = vzalloc(sizeof(struct kmod_test_device));
1070 if (!test_dev)
1073 mutex_init(&test_dev->config_mutex);
1074 mutex_init(&test_dev->trigger_mutex);
1075 mutex_init(&test_dev->thread_mutex);
1077 init_completion(&test_dev->kthreads_done);
1079 ret = kmod_config_init(test_dev);
1085 test_dev->dev_idx = idx;
1086 misc_dev = &test_dev->misc_dev;
1096 return test_dev;
1099 free_test_dev_info(test_dev);
1100 kmod_config_free(test_dev);
1102 vfree(test_dev);
1103 test_dev = NULL;
1108 static void free_test_dev_kmod(struct kmod_test_device *test_dev)
1110 if (test_dev) {
1111 kfree_const(test_dev->misc_dev.name);
1112 test_dev->misc_dev.name = NULL;
1113 free_test_dev_info(test_dev);
1114 kmod_config_free(test_dev);
1115 vfree(test_dev);
1116 test_dev = NULL;
1122 struct kmod_test_device *test_dev = NULL;
1133 test_dev = alloc_test_dev_kmod(num_test_devs);
1134 if (!test_dev)
1137 ret = misc_register(&test_dev->misc_dev);
1140 free_test_dev_kmod(test_dev);
1141 test_dev = NULL;
1145 test_dev->dev = test_dev->misc_dev.this_device;
1146 list_add_tail(&test_dev->list, ®_test_devs);
1147 dev_info(test_dev->dev, "interface ready\n");
1154 return test_dev;
1160 struct kmod_test_device *test_dev;
1163 test_dev = register_test_dev_kmod();
1164 if (!test_dev) {
1177 ret = trigger_config_run_type(test_dev,
1181 ret = trigger_config_run_type(test_dev,
1192 void unregister_test_dev_kmod(struct kmod_test_device *test_dev)
1194 mutex_lock(&test_dev->trigger_mutex);
1195 mutex_lock(&test_dev->config_mutex);
1197 test_dev_kmod_stop_tests(test_dev);
1199 dev_info(test_dev->dev, "removing interface\n");
1200 misc_deregister(&test_dev->misc_dev);
1202 mutex_unlock(&test_dev->config_mutex);
1203 mutex_unlock(&test_dev->trigger_mutex);
1205 free_test_dev_kmod(test_dev);
1210 struct kmod_test_device *test_dev, *tmp;
1213 list_for_each_entry_safe(test_dev, tmp, ®_test_devs, list) {
1214 list_del(&test_dev->list);
1215 unregister_test_dev_kmod(test_dev);