summaryrefslogtreecommitdiff
path: root/sys/include
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-07-03 17:50:35 -0400
committerIan Moffett <ian@osmora.org>2025-07-03 17:51:02 -0400
commit8378d14cc0f4996080e21c84491ba9b8fcb679a4 (patch)
treeffbf2f0bfa473003ff1b6992fea685a2860f285f /sys/include
parent197b0ecd37e8c41015586ee9711c807b9b625b0b (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.h11
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