diff options
author | Ian Moffett <ian@osmora.org> | 2025-07-03 17:50:35 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-07-03 17:51:02 -0400 |
commit | 8378d14cc0f4996080e21c84491ba9b8fcb679a4 (patch) | |
tree | ffbf2f0bfa473003ff1b6992fea685a2860f285f /sys/include | |
parent | 197b0ecd37e8c41015586ee9711c807b9b625b0b (diff) |
kernel: driver: Assign names to all drivers
Assign a name to each driver through the DRIVER_EXPORT() or
DRIVER_DEFER() macros. This can be used for blacklisting driver
startups.
Signed-off-by: Ian Moffett <ian@osmora.org>
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 |