diff options
Diffstat (limited to 'src/drivers/driver.c')
-rw-r--r-- | src/drivers/driver.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/drivers/driver.c b/src/drivers/driver.c index fae54e7..829262e 100644 --- a/src/drivers/driver.c +++ b/src/drivers/driver.c @@ -12,10 +12,11 @@ static driver_vtable_t const driver_vtable = { driver_print_info }; -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 ) { memset( driver, 0, sizeof( driver_t ) ); + driver->type = type; driver->interrupt = interrupt; driver->context = context; @@ -96,3 +97,18 @@ void driver_manager_print_info_all( driver_manager_t *manager ) driver->vtable->print_info( driver ); } } + +driver_t *driver_manager_find_driver( driver_manager_t *manager, driver_type_t type ) +{ + driver_t *driver; + + for( int i = 0; i < manager->nof_drivers; i++ ) { + driver_t *driver = (driver_t *)manager->driver[i]; + if( driver->type == type ) { + return driver; + } + } + + return NULL; + +} |