From: Paolo 'Blaisorblade' Giarrusso <[EMAIL PROTECTED]>

Add some comments about the "uml-sysemu-fixes" patch of 2.6.10-mm1 (merged in 
2.6.11-rc1).

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <[EMAIL PROTECTED]>
---

 linux-2.6.11-paolo/arch/um/kernel/tt/tracer.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+)

diff -puN arch/um/kernel/tt/tracer.c~uml-comment-fix-sysemu-tt 
arch/um/kernel/tt/tracer.c
--- linux-2.6.11/arch/um/kernel/tt/tracer.c~uml-comment-fix-sysemu-tt   
2005-01-13 01:56:56.494835760 +0100
+++ linux-2.6.11-paolo/arch/um/kernel/tt/tracer.c       2005-01-13 
01:56:56.498835152 +0100
@@ -313,6 +313,15 @@ int tracer(int (*init_proc)(void *), voi
                                sig = 0;
                                op = do_proc_op(task, proc_id);
                                switch(op){
+                               /*
+                                * This is called when entering user mode; after
+                                * this, we start intercepting syscalls.
+                                *
+                                * In fact, a process is started in kernel mode,
+                                * so with is_tracing() == 0 (and that is reset
+                                * when executing syscalls, since UML kernel has
+                                * the right to do syscalls);
+                                */
                                case OP_TRACE_ON:
                                        arch_leave_kernel(task, pid);
                                        tracing = 1;
@@ -347,6 +356,11 @@ int tracer(int (*init_proc)(void *), voi
                                        continue;
                                }
                                tracing = 0;
+                               /* local_using_sysemu has been already set
+                                * below, since if we are here, is_tracing() on
+                                * the traced task was 1, i.e. the process had
+                                * already run through one iteration of the
+                                * loop which executed a OP_TRACE_ON request.*/
                                do_syscall(task, pid, local_using_sysemu);
                                sig = SIGUSR2;
                                break;
_


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

Reply via email to