On Monday 16 May 2005 20:52, Young Koh wrote: > Hi, Thanks for the reply. Let me have one following question. > > As my understand, in SKAS mode, tracer and tracee are different host > processes, and they have UML kernel code and application code > respectively. (in TT mode, tracee has both kernel and application > code) Yes, exactly. > Suppose the tracee attmpts to invoke a host system call. then, it will > be intercepted by the tracer as in TT mode. (In TT mode, the tracer > turns off tracing and sends SIGUSR2 to the tracee, and then, the > signal handler in the tracee will execute the system call.) Ok, perfect. > but, in > SKAS mode, because the tracee doesn't have the UML kernel code, only > the tracer knows about the system call code. The tracer cannot simply > send a signal to make the tracee execute the system call. Then how > does it do? Does the tracer execute the system call for the tracee?
Exactly. in arch/um/kernel/skas/process.c, userspace() loops doing PTRACE_SYSCALL, and when SIGTRAP | 0x80 is received by waiting on the tracee, and it's handled by handle_trap(), which reads the syscall params in the registers saved by userspace. You'll probably find the 0x80 strange, since ptrace(2) documents SIGTRAP; but in recent UML kernels we set PTRACE_O_SYSGOOD so we get the additional 0x80 (which does not happen on normal SIGTRAP, due for instance to singlestepping). See, in arch/i386/kernel/ptrace.c:do_syscall_trace(), the call to ptrace_notify(). -- Paolo Giarrusso, aka Blaisorblade Skype user "PaoloGiarrusso" Linux registered user n. 292729 http://www.user-mode-linux.org/~blaisorblade ------------------------------------------------------- This SF.Net email is sponsored by Oracle Space Sweepstakes Want to be the first software developer in space? Enter now for the Oracle Space Sweepstakes! http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel