#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 const *vtable; } driver_t; void driver_init( driver_t *driver ); void driver_activate( void *obj ); void driver_deactivate( void *obj ); void driver_deinit( void *obj ); void driver_print_info( void *obj ); #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