1 // SPDX-License-Identifier: GPL-2.0 2 #include <kunit/test.h> 3 #include <kunit/test-bug.h> 4 #include <linux/module.h> 5 #include <linux/miscdevice.h> 6 7 /* dynamic minor (2) */ 8 static struct miscdevice dev_dynamic_minor = { 9 .minor = 2, 10 .name = "dev_dynamic_minor", 11 }; 12 13 /* static minor (LCD_MINOR) */ 14 static struct miscdevice dev_static_minor = { 15 .minor = LCD_MINOR, 16 .name = "dev_static_minor", 17 }; 18 19 /* misc dynamic minor */ 20 static struct miscdevice dev_misc_dynamic_minor = { 21 .minor = MISC_DYNAMIC_MINOR, 22 .name = "dev_misc_dynamic_minor", 23 }; 24 25 static void kunit_dynamic_minor(struct kunit *test) 26 { 27 int ret; 28 29 ret = misc_register(&dev_dynamic_minor); 30 KUNIT_EXPECT_EQ(test, 0, ret); 31 KUNIT_EXPECT_EQ(test, 2, dev_dynamic_minor.minor); 32 misc_deregister(&dev_dynamic_minor); 33 } 34 35 static void kunit_static_minor(struct kunit *test) 36 { 37 int ret; 38 39 ret = misc_register(&dev_static_minor); 40 KUNIT_EXPECT_EQ(test, 0, ret); 41 KUNIT_EXPECT_EQ(test, LCD_MINOR, dev_static_minor.minor); 42 misc_deregister(&dev_static_minor); 43 } 44 45 static void kunit_misc_dynamic_minor(struct kunit *test) 46 { 47 int ret; 48 49 ret = misc_register(&dev_misc_dynamic_minor); 50 KUNIT_EXPECT_EQ(test, 0, ret); 51 misc_deregister(&dev_misc_dynamic_minor); 52 } 53 54 static struct kunit_case test_cases[] = { 55 KUNIT_CASE(kunit_dynamic_minor), 56 KUNIT_CASE(kunit_static_minor), 57 KUNIT_CASE(kunit_misc_dynamic_minor), 58 {} 59 }; 60 61 static struct kunit_suite test_suite = { 62 .name = "misc_minor_test", 63 .test_cases = test_cases, 64 }; 65 kunit_test_suite(test_suite); 66 67 MODULE_LICENSE("GPL"); 68 MODULE_AUTHOR("Vimal Agrawal"); 69 MODULE_DESCRIPTION("misc minor testing"); 70