small questions regarding JDB ipc call trace

Stefan Kalkowski stefan.kalkowski at ...1...
Tue Jan 15 12:34:56 CET 2013


Hi Jaeyong,

On 01/15/2013 02:03 AM, jaeyong yoo wrote:
> Hello!
> 
> Here goes an example line of jdb IPC call trace output:
> 
>     ipc: 04df repl->[C:INV] DID=ffffffff L=0 [00000000]
> (00000000,00000000) TO=0/0
>     ipc: 045f call ipc->[C:205003] DID=40d L=0 [0000000b]
> (00000fb0,00000003) TO=INF/INF
> 
> I have looked through the fiasco source code that generates this output
> and figured out that
> 
>     L=0 is the label of message
>     [00000000] is the tag of the message
>     (00000fb0,00000003) is the first two words of the message
> 
> My questions are:
> 1) I observe most labels are zero in the output. I think genode defines
> label 0 as invalid capability, then this value looks like not correct?
> 

Label doesn't mean the label of Genode's capability here. Given the
abstraction level of the kernel's IPC trace buffer entries, "label" is a
user-defined value, which is AFAIK used to distinct messages of
different types. For example, you can use it to distinct pagefault, or
exception messages from other IPC. Have a look here:

http://os.inf.tu-dresden.de/L4Re/doc/group__l4__msgtag__api.html#ga80cb4e4d8263e92c14c212d6108bbd19

> 2) What is the tag of the message?

It's a message descriptor that is set up by the user land code to tell
the kernel how to interpret the UTCB content when an IPC syscall is
triggered. The descriptor has the size of one machine word:

http://os.inf.tu-dresden.de/L4Re/doc/structl4__msgtag__t.html

Therefore, 0x0000000b in your example would tell the kernel that 11
words have to be transfered, but no mappings at all. The kernel debugger
seems to interpret a part of the message tag on the basis of the chosen
label, have a look at:

kernel/fiasco/src/kern/tb_entry_output.cpp:121

For non Genode-specific information about trace buffer entries, and
their general structure, it's even better to ask on the l4-hackers
mailing list, because the kernel maintainers are much more aware of the
kernel internals, than me.

> 
> 3) By any chance, the second word of the message is the opcode? (Since I
> would like to know the opcode in IPC, that is my wish)

Mostly yes. Whenever it is a call of a client to a server, it is the
opcode, obviously that doesn't count for e.g.: replies where it is the
return value.

I hope that helps.
Regards
Stefan

> 
> Best regards
> Jaeyong
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------------
> Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
> and more. Get SQL Server skills now (including 2012) with LearnDevNow -
> 200+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
> SALE $99.99 this month only - learn more at:
> http://p.sf.net/sfu/learnmore_122512
> 
> 
> 
> _______________________________________________
> Genode-main mailing list
> Genode-main at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/genode-main
> 

-- 
Stefan Kalkowski
Genode Labs

http://www.genode-labs.com/ ยท http://genode.org/




More information about the users mailing list