summaryrefslogtreecommitdiff
path: root/src/kernel/kernel.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/kernel.c')
-rw-r--r--src/kernel/kernel.c16
1 files changed, 16 insertions, 0 deletions
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" );
+}