1 //---------------------------------------------------------------------------
2 IMPLEMENTATION [debug]:
8 class Syscalls : public Thread { };
10 extern "C" void sys_invoke_debug(Kobject *o, Syscall_frame *f);
12 PUBLIC inline NOEXPORT ALWAYS_INLINE
14 Syscalls::sys_invoke_debug()
16 Syscall_frame *f = this->regs();
17 //printf("sys_invoke_debugger(f=%p, obj=%lx)\n", f, f->ref().raw());
18 Kobject_iface *o = space()->obj_space()->lookup_local(f->ref().cap());
20 ::sys_invoke_debug(o->kobject(), f);
22 f->tag(commit_error(access_utcb(), L4_error::Not_existent));
26 // these wrappers must come last in the source so that the real sys-call
27 // implementations can be inlined by g++
29 extern "C" void sys_invoke_debug_wrapper()
30 { static_cast<Syscalls*>(current_thread())->sys_invoke_debug(); }
32 //---------------------------------------------------------------------------
33 IMPLEMENTATION [!debug]:
37 extern "C" void sys_invoke_debug_wrapper() {}
39 //---------------------------------------------------------------------------
40 INTERFACE [ia32 || ux || amd64]:
42 extern void (*syscall_table[])();
45 //---------------------------------------------------------------------------
46 IMPLEMENTATION [ia32 || ux || amd64]:
48 void (*syscall_table[])() =
52 sys_invoke_debug_wrapper,