Re:Another question about L4 system call

Bob <[email protected]> Fri, 5 Sep 2008 14:07:08 +0800 (CST)
Newsgroups gmane.comp.micro-kernel.l4.l4ka.general
Message-ID <29432216.187551220594828965.JavaMail.coremail@bj163app137.163.com>
what's  more, in file  \user\lib\l4\ia32_syscall_init.cc
#define FIXUP(syscall)       \
do {         \
    void __L4_##syscall (void);      \
    *(L4_Word8_t *) (__L4_##syscall) = 0xe9;    \
    *(L4_Word32_t *) ((L4_Word_t) __L4_##syscall + 1) =   \
 (L4_Word_t) kip + kip->syscall - (L4_Word_t) __L4_##syscall - 5;\
} while (0)
 
But kip has no filed named syscall, so how kip->syscall in this marco work.

Thanks , All
Bob 

在2008-09-05,Bob <[email protected]> 写道:


Hi, All

I have another question about L4 system call.
I think all system call are implemented in system space. So only enter system level can execute it. 

Now I saw the code just jmp to the system call address getted from kip_area. And then will 
use "int SYSCALL_NUMBER" instruction enter system level or not.

But the system call address getted from kip_area is in system space. If don't enter system level first, isn't there a page fault will occur?

Anyone could tell me why ?


Thank you very much !

Bob






KFC骨肉相连优惠券