Hi,
where in l4 does an exception (int 0x80) get trapped and turned into an appropriate l4 ipc and sent to l4linux? for instance:
if (from an l4linux program), i do a system call like this (in assembly)
mov bx, 0x20 mov ax, 0x10 int 0x80
where will i see 0x10 and 0x20 (the syscall parameters) inside the l4 IPC ??
Thanks very much in advance -andrew
On Mon Jun 06, 2005 at 15:05:44 -0400, Andrew Davenport wrote:
where in l4 does an exception (int 0x80) get trapped and turned into an appropriate l4 ipc and sent to l4linux? for instance:
if (from an l4linux program), i do a system call like this (in assembly)
mov bx, 0x20 mov ax, 0x10 int 0x80
where will i see 0x10 and 0x20 (the syscall parameters) inside the l4 IPC ??
Depending on the mechanism used, one will either see it in a thing called UTCB in the exception handler (l4linux2.6 or l4linux-2.4-x2), or in a data structure shared between the Linux server and the Linux process (l4linux-2.4-v2, l4linux-2.2). In the latter case some emulation code in the address space of the process is called when an exception (int $0x80) happens. This code saves all state in the shared data structure and sends an IPC to the Linux server. The Linux server can then extract the register values from the shared data structure. After replying to the IPC the emulation code restores the (new) state and continues after the exception.
Adam
l4-hackers@os.inf.tu-dresden.de