From 8183f17368ea6944c8b36d7cb7564b33d2a0503a Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sun, 16 Jul 2017 09:21:36 +0200 Subject: 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 --- src/drivers/driver.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/drivers/driver.c') 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; + +} -- cgit v1.2.3-54-g00ecf