Pagefault in StringItem IPC
BERTRAND Joel <[email protected]> Tue, 30 Nov 2010 19:15:34 +0100
| Newsgroups | gmane.comp.micro-kernel.l4.l4ka.general |
|---|---|
| Message-ID | <[email protected]> |
Hello,
I'm trying to send a StringItem to a thread with L4_Call() and this
function raises a page fault. This is a minimal function that raises
pagefault error :
rtl$sprint(&str, fmt, arg); // <- create a string
si = L4_StringItem(str.length_trim, (void *) str.c);
// I have checked that si contains what I want.
L4_Clear(&msg);
L4_Append(&msg, si);
L4_Set_Label(&msg, 1);
L4_Load(&msg);
L4_KDB_Enter("pager");
L4_Call(L4_Pager());
L4_KDB_Enter("pager2");
and its output :
sys$pagefault(addr=200110 caller=3c00000001)
sys$pagefault(ref=2a31)
sys$pagefault(addr=10dff8 caller=3c00000001)
sys$pagefault(ref=29d1)
sys$pagefault(addr=201490 caller=3c00000001)
sys$pagefault(ref=2a31)
--- "pager" ---
--------------------------------- (eip=00000000002002d1,
esp=000000000010d8b8) -
> showtcbext
tcb/tid/name [current]: 3c00000001
=== TCB: ffffffffc0ab4000 === ID: 0000003c00000001 =
0000000000007200/ffffffffc=
...
mr(00): 0000000000010080 0000000000006400 000000000010d8b8...
...
Message Tag: 0 untyped, 2 typed, label = 1, flags = ----
string item: len=19, num=1, cont=0, cache=0
( 000000000010d8b8 )
...
Acceptor: 0000000000000000 (s)
fpage : (NIL-FPAGE)
> go
sys$pagefault(addr=0 caller=3c00000001)
Halting a thread with ongoing kernel operations is not supported--- "KD#
UNIMPL-
Kernel debugger shows that StringItem is written in MR1 and MR2. I
don't understand why L4_Call() raises a pagefault error. Any explanation ?
Best regards,
JB