From c302b8a5a4b2fadf29b4f695dca7ba97b0491ba6 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Wed, 5 Jul 2017 15:46:18 +0200 Subject: removed superfluous context in vga driver (was not used) added dummy methods and driver_init for anonymous driver initialization --- src/drivers/driver.c | 32 ++++++++++++++++++++++++++++++++ src/drivers/driver.h | 6 ++++++ src/drivers/video/vga.c | 4 +--- src/drivers/video/vga.h | 3 +-- src/kernel/kernel.c | 2 +- 5 files changed, 41 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/drivers/driver.c b/src/drivers/driver.c index 8c20676..aac2e36 100644 --- a/src/drivers/driver.c +++ b/src/drivers/driver.c @@ -2,6 +2,38 @@ #include "kernel.h" #include "string.h" +#include "stdio.h" + +static driver_vtable_t const driver_vtable = { + driver_activate, + driver_deactivate, + driver_deinit, + driver_print_info +}; + +void driver_init( driver_t *driver ) +{ + memset( driver, 0, sizeof( driver_t ) ); + + driver->vtable = &driver_vtable; +} + +void driver_activate( void *obj ) +{ +} + +void driver_deactivate( void *obj ) +{ +} + +void driver_deinit( void *obj ) +{ +} + +void driver_print_info( void *obj ) +{ + puts( "Unknown driver" ); +} void driver_manager_init( driver_manager_t *manager ) { diff --git a/src/drivers/driver.h b/src/drivers/driver.h index c725871..0f1a2b4 100644 --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -14,6 +14,12 @@ 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 { diff --git a/src/drivers/video/vga.c b/src/drivers/video/vga.c index b8e3120..146194e 100644 --- a/src/drivers/video/vga.c +++ b/src/drivers/video/vga.c @@ -17,7 +17,7 @@ static vga_vtable_t const vga_vtable = { } }; -void vga_init( vga_t *vga, void *context ) +void vga_init( vga_t *vga ) { memset( vga, 0, sizeof( vga_t ) ); @@ -33,8 +33,6 @@ void vga_init( vga_t *vga, void *context ) port8_init( &vga->attribute_controller_write_port, 0x3C0 ); port8_init( &vga->attribute_controller_reset_port, 0x3DA ); - vga->context = context; - ((driver_t *)vga)->vtable = (driver_vtable_t *)&vga_vtable; } diff --git a/src/drivers/video/vga.h b/src/drivers/video/vga.h index d15a55d..bdc15cf 100644 --- a/src/drivers/video/vga.h +++ b/src/drivers/video/vga.h @@ -41,7 +41,6 @@ typedef struct { port8_t attribute_controller_write_port; port8_t attribute_controller_reset_port; vga_mode_t mode; - void *context; bool use_z_buffer; // TODO: the Z-buffer should actually be allocated dynamically // depending on the current mode, for now it's a static buffer @@ -57,7 +56,7 @@ typedef struct { driver_vtable_t base; } vga_vtable_t; -void vga_init( vga_t *vga, void *context ); +void vga_init( vga_t *vga ); void vga_activate( void *obj ); void vga_deactivate( void *obj ); void vga_deinit( void *obj ); diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c index a789139..dd61f45 100644 --- a/src/kernel/kernel.c +++ b/src/kernel/kernel.c @@ -152,7 +152,7 @@ void kernel_main( void ) pci_controller_scan_and_register( &pci_controller, &global_context.driver_manager, &interrupt ); // TODO: merge with the text mode vga_text_t object - vga_init( &global_context.vga, NULL ); + vga_init( &global_context.vga ); driver_manager_add_driver( &global_context.driver_manager, (driver_t *)&global_context.vga ); puts( "Activating drivers" ); -- cgit v1.2.3-54-g00ecf