From d86f301ecb8c773cde8afc646a8b7ae578b8a232 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Tue, 1 Aug 2017 16:23:09 +0200 Subject: we can receive network events, but the receive buffer remains empty this is because we must enable DMA transfering on the PCI bus (bus master enable) --- src/kernel/kernel.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/kernel') diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c index c1f7cd1..486e04f 100644 --- a/src/kernel/kernel.c +++ b/src/kernel/kernel.c @@ -16,6 +16,7 @@ #include "video.h" #include "pci.h" #include "memorymanagement.h" +#include "network.h" #include "setjmp.h" @@ -35,6 +36,7 @@ static jmp_buf panic_jmp_buf; static void handle_keyboard_event( keyboard_event_t *event, void *context ); static void handle_mouse_event( mouse_event_t *event, void *context ); +static void handle_network_event( network_event_t *event, void *context ); typedef enum { MODE_TEXT, @@ -55,6 +57,7 @@ typedef struct { window_t window2; window_t window3; text_widget_t widget3; + network_t *network; } global_context_t; static global_context_t global_context; @@ -150,6 +153,14 @@ void kernel_main( void ) // TODO: also, what to do if there is more than one driver? global_context.video = (video_t *)driver_manager_find_driver( &global_context.driver_manager, DRIVER_TYPE_VIDEO ); + // network driver testing + global_context.network = (network_t *)driver_manager_find_driver( &global_context.driver_manager, DRIVER_TYPE_NETWORK ); + if( global_context.network == NULL ) { + puts( "No suitable network driver found" ); + } else { + ((network_vtable_t *)( global_context.network->base.vtable ))->register_handler( global_context.network, handle_network_event ); + } + puts( "Activating drivers" ); driver_manager_activate_all( &global_context.driver_manager ); @@ -438,3 +449,8 @@ void __stack_chk_fail( void ) // make gcc happy on noreturn does return for( ;; ); } + +void handle_network_event( network_event_t *event, void *context ) +{ + puts( "NETWORK EVENT" ); +} -- cgit v1.2.3-54-g00ecf