diff options
Diffstat (limited to 'src/drivers/driver.h')
-rw-r--r-- | src/drivers/driver.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/drivers/driver.h b/src/drivers/driver.h new file mode 100644 index 0000000..c110308 --- /dev/null +++ b/src/drivers/driver.h @@ -0,0 +1,31 @@ +#ifndef DRIVER_H +#define DRIVER_H + +#include "interrupts.h" + +typedef struct { + void (*activate)( void *obj ); + void (*deactivate)( void *obj ); + void (*deinit)( void *obj ); + void (*print_info)( void *obj ); +} driver_vtable_t; + +typedef struct { + driver_vtable_t *vtable; +} driver_t; + +#define MAX_NOF_DRIVERS 256 + +typedef struct { + int nof_drivers; + driver_t *driver[MAX_NOF_DRIVERS]; +} driver_manager_t; + +void driver_manager_init( driver_manager_t *manager ); +void driver_manager_add_driver( driver_manager_t *manager, driver_t *driver ); +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 ); + +#endif // DRIVER_H |