hc
2024-08-14 93e8ba98c407598d13d8ade71bc7802acfb19c58
kernel/include/linux/device/driver.h
....@@ -272,6 +272,30 @@
272272 } \
273273 module_exit(__driver##_exit);
274274
275
+#define module_driver1(__driver, __register, __unregister, ...) \
276
+static int __init __driver##_init(void) \
277
+{ \
278
+ return __register(&(__driver) , ##__VA_ARGS__); \
279
+} \
280
+arch_initcall(__driver##_init); \
281
+static void __exit __driver##_exit(void) \
282
+{ \
283
+ __unregister(&(__driver) , ##__VA_ARGS__); \
284
+} \
285
+module_exit(__driver##_exit)
286
+
287
+#define module_driver2(__driver, __register, __unregister, ...) \
288
+static int __init __driver##_init(void) \
289
+{ \
290
+ return __register(&(__driver) , ##__VA_ARGS__); \
291
+} \
292
+late_initcall(__driver##_init); \
293
+static void __exit __driver##_exit(void) \
294
+{ \
295
+ __unregister(&(__driver) , ##__VA_ARGS__); \
296
+} \
297
+module_exit(__driver##_exit);
298
+
275299 /**
276300 * builtin_driver() - Helper macro for drivers that don't do anything
277301 * special in init and have no exit. This eliminates some boilerplate.