.. | .. |
---|
272 | 272 | } \ |
---|
273 | 273 | module_exit(__driver##_exit); |
---|
274 | 274 | |
---|
| 275 | + |
---|
| 276 | + |
---|
| 277 | +#define module_driver2(__driver, __register, __unregister, ...) \ |
---|
| 278 | +static int __init __driver##_init(void) \ |
---|
| 279 | +{ \ |
---|
| 280 | + return __register(&(__driver) , ##__VA_ARGS__); \ |
---|
| 281 | +} \ |
---|
| 282 | +late_initcall(__driver##_init); \ |
---|
| 283 | +static void __exit __driver##_exit(void) \ |
---|
| 284 | +{ \ |
---|
| 285 | + __unregister(&(__driver) , ##__VA_ARGS__); \ |
---|
| 286 | +} \ |
---|
| 287 | +module_exit(__driver##_exit); |
---|
| 288 | + |
---|
275 | 289 | /** |
---|
276 | 290 | * builtin_driver() - Helper macro for drivers that don't do anything |
---|
277 | 291 | * special in init and have no exit. This eliminates some boilerplate. |
---|