From 5ef2934bf8c5dc644cdd0615e7dd733a019f929e Mon Sep 17 00:00:00 2001 From: Bas Wijnen Date: Mon, 18 Jan 2010 07:31:19 +0100 Subject: [PATCH] working usbfs --- boot-programs/init.ccp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/boot-programs/init.ccp b/boot-programs/init.ccp index 89eb44a..7f77952 100644 --- a/boot-programs/init.ccp +++ b/boot-programs/init.ccp @@ -364,25 +364,28 @@ void handle_init (): Kernel::wait () switch Kernel::recv.data[0].l: case Parent::PROVIDE_DEVICE: - Dev::add (Kernel::recv.data[1].l, Kernel::recv.data[0].h, Kernel::get_arg ()) - kdebug ("added dev ") + kdebug ("adding dev ") kdebug_num (Kernel::recv.data[1].l) kdebug (":") kdebug_num (Kernel::recv.data[0].h) kdebug ("\n") - Kernel::recv.reply.invoke () + Kernel::Cap reply = Kernel::get_reply () + Dev::add (Kernel::recv.data[1].l, Kernel::recv.data[0].h, Kernel::get_arg ()) + reply.invoke () + Kernel::free_cap (reply) break case Parent::GET_DEVICE: + Kernel::Cap reply = Kernel::get_reply () Dev *d = Dev::find (Kernel::recv.data[1].l, Kernel::recv.data[0].h) if d: - kdebug ("given dev ") + kdebug ("giving dev ") kdebug_num (Kernel::recv.data[1].l) kdebug (":") kdebug_num (Kernel::recv.data[0].h) kdebug ("\n") Kernel::Cap cap = d->dev.create_user (Kernel::my_memory) d->dev.use (cap) - Kernel::recv.reply.invoke (0, 0, cap.copy ()) + reply.invoke (0, 0, cap.copy ()) Kernel::free_cap (cap) else: kdebug ("device not found: ") @@ -391,11 +394,11 @@ void handle_init (): kdebug_num (Kernel::recv.data[0].h) Dev::kdebug_list () kdebug ("\n") - Kernel::recv.reply.invoke (~0, ~0) + reply.invoke (~0, ~0) Kernel::panic (0) + Kernel::free_cap (reply) break case Parent::INIT_DONE: - kdebug ("init done\n") return default: kdebug ("unknown init request\n") @@ -404,7 +407,7 @@ void handle_init (): Kernel::Num start (): // Wait for the debugging device to be active, in case there is one. Kernel::schedule () - //Dev::devs = NULL + Dev::devs = NULL init_alloc () top_memory = Kernel::get_top_memory () Directory root = receive_devices () @@ -419,6 +422,7 @@ Kernel::Num start (): run (&files[index[i]], files[index[i]].name[0] == '#') kdebug ("running\n") handle_init () + kdebug ("init done\n") root.unlock_ro () Kernel::free_slot (slot) Kernel::my_memory.destroy (caps)