Hi, all?

First of all, I apologize you for the previous incomplete mail and this
spam.  I'm working with QEMU v0.12.1 with i386 Linux guest on x86-64 Linux
host. I'm trying to find a point in the source code where a system call from
the guest OS is handled. If I'm not mistaken, QEMU disassembles an
instruction of INT # in a switch statement of target-i386/translate.c and
then calls helper_sysenter of target-i386/op_helper.c. The problem is how to
tell difference between a system call of the guest OS and a system call of
QEMU (I'm not sure of this, though). Assume the following code is executed
after compilation in the guest OS:

int main() {
   int fd;
   if (access("hello.txt", R_OK) != 0) {
     exit(0);
   }
   fd=open("hello.txt", O_RDONLY);
   close(fd);
   return 0;
}

For this simple sequence of system calls, acess() -> open() -> close(), QEMU
goes through disas_insn() and helper_sysenter() more than 3 times. This
makes me really confused because I believed those should be called 3 times,
though. It'd be greatly appreciated in advance if someone helps me out this.

Thanks a lot,
Jong

Reply via email to