summaryrefslogtreecommitdiff
path: root/src/kernel
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2017-07-16 09:21:36 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2017-07-16 09:21:36 +0200
commit8183f17368ea6944c8b36d7cb7564b33d2a0503a (patch)
treefc9ea3df698cab447dcee86cf94e047db037e9b6 /src/kernel
parent1e8bad98827b651009a8ad4b8134d8a72a004be3 (diff)
downloadabaos-8183f17368ea6944c8b36d7cb7564b33d2a0503a.tar.gz
abaos-8183f17368ea6944c8b36d7cb7564b33d2a0503a.tar.bz2
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
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/kernel.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c
index 31d4ec7..e107b8a 100644
--- a/src/kernel/kernel.c
+++ b/src/kernel/kernel.c
@@ -108,7 +108,7 @@ void kernel_main( void )
goto TERMINATE;
}
- // TODO: two demo tasks for now, later we should do something useful in a task
+ // task manager for VGA graphic refresh
task_manager_init( &global_context.task_manager );
task_t taskRefreshScreen;
task_init( &taskRefreshScreen, GDT_CODE_SEGMENT_SELECTOR, &refresh_screen );
@@ -145,9 +145,9 @@ void kernel_main( void )
pci_controller_scan_and_register( &pci_controller, &global_context.driver_manager, &interrupt, &global_context );
// TODO: merge with the text mode vga_text_t object
- global_context.vga = (vga_t *)malloc( sizeof( vga_t ) );
- vga_init( global_context.vga, &interrupt, &global_context );
- driver_manager_add_driver( &global_context.driver_manager, (driver_t *)global_context.vga );
+ // TODO: introduce a graphics driver type, don't cast diretly here
+ // TODO: also, what to do if there is more than one driver?
+ global_context.vga = (vga_t *)driver_manager_find_driver( &global_context.driver_manager, DRIVER_TYPE_GRAPHICS );
puts( "Activating drivers" );
driver_manager_activate_all( &global_context.driver_manager );