| .. | .. |
|---|
| 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. |
|---|