diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2017-07-16 09:21:36 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2017-07-16 09:21:36 +0200 |
commit | 8183f17368ea6944c8b36d7cb7564b33d2a0503a (patch) | |
tree | fc9ea3df698cab447dcee86cf94e047db037e9b6 /src/drivers/driver.h | |
parent | 1e8bad98827b651009a8ad4b8134d8a72a004be3 (diff) | |
download | abaos-8183f17368ea6944c8b36d7cb7564b33d2a0503a.tar.gz abaos-8183f17368ea6944c8b36d7cb7564b33d2a0503a.tar.bz2 |
introduced classes of driver types (graphics, mouse, keyboard, network, etc.)
removed direct vga_init from kernel.c, using pci for this now, get the
driver of type graphics from driver_manager
Diffstat (limited to 'src/drivers/driver.h')
-rw-r--r-- | src/drivers/driver.h | 11 |
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 |