From 21c1989527191fa3739984a167d7a1cf939cfd6b Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sat, 15 Jul 2017 21:14:10 +0200 Subject: started to make driver construtors similar (keyboard, mouse) passing context around to pci scanning function for driver initialization --- src/hardware/pci.c | 10 +++++----- src/hardware/pci.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src/hardware') diff --git a/src/hardware/pci.c b/src/hardware/pci.c index 84249f9..0945a9a 100644 --- a/src/hardware/pci.c +++ b/src/hardware/pci.c @@ -65,7 +65,7 @@ void pci_controller_write( pci_controller_t *controller, uint16_t bus, uint16_t port32_write( &controller->data_port, data ); } -void pci_controller_scan_and_register( pci_controller_t *controller, driver_manager_t *driver_manager, interrupt_t *interrupt ) +void pci_controller_scan_and_register( pci_controller_t *controller, driver_manager_t *driver_manager, interrupt_t *interrupt, void *context ) { for( int bus = 0; bus < NOF_BUSES; bus++ ) { for( int device = 0; device < NOF_DEVICES_PER_BUS; device++ ) { @@ -103,7 +103,7 @@ void pci_controller_scan_and_register( pci_controller_t *controller, driver_mana } } - driver_t *driver = pci_device_get_driver( &device_descriptor, interrupt ); + driver_t *driver = pci_device_get_driver( &device_descriptor, interrupt, context ); if( driver ) { driver_manager_add_driver( driver_manager, driver ); } @@ -157,7 +157,7 @@ void pci_base_address_register_init( pci_base_address_register_t *base_address_r } } -driver_t *pci_device_get_driver( pci_device_descriptor_t *descriptor, interrupt_t *interrupt ) +driver_t *pci_device_get_driver( pci_device_descriptor_t *descriptor, interrupt_t *interrupt, void *context ) { driver_t *driver = NULL; @@ -167,7 +167,7 @@ driver_t *pci_device_get_driver( pci_device_descriptor_t *descriptor, interrupt_ switch( descriptor->device_id ) { case 0x8139: // RTL8139 driver = (driver_t *)malloc( sizeof( rtl8139_t ) ); - rtl8139_init( (rtl8139_t *)driver, interrupt, NULL ); + rtl8139_init( (rtl8139_t *)driver, interrupt, context ); break; } break; @@ -188,7 +188,7 @@ driver_t *pci_device_get_driver( pci_device_descriptor_t *descriptor, interrupt_ // cannot load dynamically a VGA driver here! // for now, let's put it directly into kernel.c // for testing - // vga_t *vga = malloc( sizeof( vga_t ) ); + // vga_t *vga = malloc( sizeof( vga_t ), interrupt, context ); break; } break; diff --git a/src/hardware/pci.h b/src/hardware/pci.h index ddbc990..fcc957e 100644 --- a/src/hardware/pci.h +++ b/src/hardware/pci.h @@ -38,12 +38,12 @@ void pci_controller_init( pci_controller_t *controller ); uint16_t pci_controller_read( pci_controller_t *controller, uint16_t bus, uint16_t device, uint16_t function, uint32_t offset ); void pci_controller_write( pci_controller_t *controller, uint16_t bus, uint16_t device, uint16_t function, uint32_t offset, uint32_t data ); -void pci_controller_scan_and_register( pci_controller_t *controller, driver_manager_t *driver_manager, interrupt_t *interrupt ); +void pci_controller_scan_and_register( pci_controller_t *controller, driver_manager_t *driver_manager, interrupt_t *interrupt, void *context ); void pci_device_descriptor_init( pci_device_descriptor_t *descriptor, pci_controller_t *controller, uint16_t bus, uint16_t device, uint16_t function ); void pci_base_address_register_init( pci_base_address_register_t *base_address_register, pci_controller_t *controller, uint16_t bus, uint16_t device, uint16_t function, uint16_t bar ); -driver_t *pci_device_get_driver( pci_device_descriptor_t *descriptor, interrupt_t *interrupt ); +driver_t *pci_device_get_driver( pci_device_descriptor_t *descriptor, interrupt_t *interrupt, void *context ); #endif // PCI_H -- cgit v1.2.3-54-g00ecf