summaryrefslogtreecommitdiff
path: root/src/drivers/driver.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/driver.h')
-rw-r--r--src/drivers/driver.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index 38dfe64..4d5689e 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -10,13 +10,21 @@ typedef struct {
void (*print_info)( void *obj );
} driver_vtable_t;
+typedef enum {
+ DRIVER_TYPE_KEYBOARD,
+ DRIVER_TYPE_MOUSE,
+ DRIVER_TYPE_GRAPHICS,
+ DRIVER_TYPE_NETWORK
+} driver_type_t;
+
typedef struct {
driver_vtable_t const *vtable;
+ driver_type_t type;
interrupt_t *interrupt;
void *context;
} driver_t;
-void driver_init( driver_t *driver, interrupt_t *interrupt, void *context );
+void driver_init( driver_t *driver, driver_type_t type, interrupt_t *interrupt, void *context );
void driver_activate( void *obj );
void driver_deactivate( void *obj );
void driver_deinit( void *obj );
@@ -35,5 +43,6 @@ void driver_manager_activate_all( driver_manager_t *manager );
void driver_manager_deactivate_all( driver_manager_t *manager );
void driver_manager_deinit( driver_manager_t *manager );
void driver_manager_print_info_all( driver_manager_t *manager );
+driver_t *driver_manager_find_driver( driver_manager_t *manager, driver_type_t type );
#endif // DRIVER_H