Hello evebody,

Here's a small observation that I made:
In SMT configurations for ALPHA/Linux, the first workload that finishes
terminates all the other workloads on the CPU because it makes the system
call, exit_group(). This problem, however, does not surface with the "hello"
binary checked into the repository because, I think, it is compiled with an
older compiler toolchain (which was build with linux 2.4.3) and it makes a
call to exit() instead of exit_group().

So my question is:
Shouldn't the exit_group() syscall be simulated by the exit() syscall in SE
mode? Here is the diff in the source:

diff -r e0c1c6d87649 src/sim/syscall_emul.cc
--- a/src/sim/syscall_emul.cc   Sun Aug 23 14:19:14 2009 -0700
+++ b/src/sim/syscall_emul.cc   Mon Aug 31 16:18:05 2009 -0400
@@ -110,12 +110,16 @@
 exitGroupFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
               ThreadContext *tc)
 {
+#if !FULL_SYSTEM
+    return exitFunc(desc, callnum, process, tc);
+#else
     // really should just halt all thread contexts belonging to this
     // process in case there's another process running...
     exitSimLoop("target called exit()",
                 process->getSyscallArg(tc, 0) & 0xff);

     return 1;
+#endif
 }

regards,
Soumyaroop.

-- 
Soumyaroop Roy
Ph.D. Candidate
Department of Computer Science and Engineering
University of South Florida, Tampa
http://www.csee.usf.edu/~sroy <http://www.csee.usf.edu/%7Esroy>
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to