From: BlaisorBlade <bla...@ya...> - 2004-02-25 19:11:41
|
Alle 22:30, gioved=EC 19 febbraio 2004, kuas ha scritto: > Hello, > > I'm posting this question to here since this is development problem, the > other newsgroup seems to be more like users problem and I would think > this forum would be able to explain more about my question. I will post > to the other newsgroup if that's the one where I should really be posting Perfect choice. I'll try to answer, for things I know or I *think* to know. > I seems to me the new or current implementation of system call involves > conversion from interupt 80 at the host OS into signals back in UML > kernel. Is this the same mechanism for the current TT and SKAS? Or TT > mode still using ptrace thread tracing mechanism to intercept the system > call? SKAS mode, the more modern one, still uses the same interception mechanism = as=20 TT: i.e. ptraces the child, intercepts the syscall, nullifies it (i.e. the= =20 host kernel receives a getpid syscall) and goes on. Look at these files: arch/um/kernel/skas/process.c: handle_trap () and userspace(). arch/um/kernel/skas/syscall_*.c Only difference is that in SKAS mode you have one single child process bein= g=20 ptraced, on the host; it runs the virtual processes code, and does syscall= =20 with int 0x80 which are intercepted. To do a context switch, UML uses setjm= p=20 and longjmp to switch the stack state and PTRACE_SWITCH_MM (implemented on= =20 the host inside arch/i386/kernel/ptrace.c, read the skas patch) to switch t= he=20 virtual mappings of the child at once. More details about memory handling a= t=20 request, since you asked for one exact thing and maybe are not interested i= n=20 this. > If there is a signal from the host to UML kernel process, there > must be a signal handler registered by the UML kernel. > > Any quick deeper overview about this mechanism would be really welcome. > Thanks in advance. =2D-=20 Paolo Giarrusso, aka Blaisorblade Linux registered user n. 292729 |