diff options
Diffstat (limited to 'sys/include')
-rw-r--r-- | sys/include/sys/driver.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/include/sys/driver.h b/sys/include/sys/driver.h index 9f08de3..a7cb2ae 100644 --- a/sys/include/sys/driver.h +++ b/sys/include/sys/driver.h @@ -43,6 +43,7 @@ struct driver_var { struct driver { int(*init)(void); + const char *name; struct driver_var *data; }; @@ -56,7 +57,7 @@ extern char __drivers_init_end[]; extern char __driversd_init_start[]; extern char __driversd_init_end[]; -#define DRIVER_EXPORT(INIT) \ +#define DRIVER_EXPORT(INIT, NAME) \ static struct driver_var __driver_var = { \ .deferred = 0 \ }; \ @@ -64,7 +65,8 @@ extern char __driversd_init_end[]; __attribute__((used, section(".drivers"))) \ static struct driver __driver_desc = { \ .init = INIT, \ - .data = &__driver_var \ + .data = &__driver_var, \ + .name = NAME \ } /* @@ -84,7 +86,7 @@ extern char __driversd_init_end[]; * context has yet to be initialized. The driver may * use this to defer requests for I/O. */ -#define DRIVER_DEFER(INIT) \ +#define DRIVER_DEFER(INIT, NAME) \ static struct driver_var __driver_var = { \ .deferred = 1 \ }; \ @@ -92,7 +94,8 @@ extern char __driversd_init_end[]; __attribute__((used, section(".drivers.defer"))) \ static struct driver __driver_desc = { \ .init = INIT, \ - .data = &__driver_var \ + .data = &__driver_var, \ + .name = NAME \ } #define DRIVER_DEFERRED() __driver_var.deferred |