.. | .. |
---|
1725 | 1725 | } \ |
---|
1726 | 1726 | module_exit(__driver##_exit); |
---|
1727 | 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 | + |
---|
1728 | 1742 | /** |
---|
1729 | 1743 | * builtin_driver() - Helper macro for drivers that don't do anything |
---|
1730 | 1744 | * special in init and have no exit. This eliminates some boilerplate. |
---|