hc
2023-11-22 f743a7adbd6e230d66a6206fa115b59fec2d88eb
kernel/include/linux/device.h
....@@ -1711,6 +1711,34 @@
17111711 } \
17121712 module_exit(__driver##_exit);
17131713
1714
+
1715
+
1716
+#define module_driver1(__driver, __register, __unregister, ...) \
1717
+static int __init __driver##_init(void) \
1718
+{ \
1719
+ return __register(&(__driver) , ##__VA_ARGS__); \
1720
+} \
1721
+arch_initcall(__driver##_init); \
1722
+static void __exit __driver##_exit(void) \
1723
+{ \
1724
+ __unregister(&(__driver) , ##__VA_ARGS__); \
1725
+} \
1726
+module_exit(__driver##_exit);
1727
+
1728
+
1729
+
1730
+#define module_driver2(__driver, __register, __unregister, ...) \
1731
+static int __init __driver##_init(void) \
1732
+{ \
1733
+ return __register(&(__driver) , ##__VA_ARGS__); \
1734
+} \
1735
+late_initcall(__driver##_init); \
1736
+static void __exit __driver##_exit(void) \
1737
+{ \
1738
+ __unregister(&(__driver) , ##__VA_ARGS__); \
1739
+} \
1740
+module_exit(__driver##_exit);
1741
+
17141742 /**
17151743 * builtin_driver() - Helper macro for drivers that don't do anything
17161744 * special in init and have no exit. This eliminates some boilerplate.