Oh, that is correct, Steve!

Ok, so here's the problem:
If I were to run an SMT configuration, say, 2T-hello-gzip (both compiled
with gcc 4.3.2 built with linux kernel 2.6.X) as two workloads on a single
processor using O3 or inorder, when "hello" finishes, it kills off gzip too.
I figured that this happens because the workloads make syscalls to
exit_group instead of exit. This behavior is different for the "hello"
binary distributed with M5 because it does NOT make a syscall to exit_group
but makes a call to exit.

regards,
Soumyaroop.

On Tue, Sep 1, 2009 at 11:39 AM, Steve Reinhardt <[email protected]> wrote:

> What exactly is the problem that you're encountering?
>
> Note that syscall emulation only occurs in SE mode (that's what the SE
> stands for).  The file syscall_emul.cc doesn't even get compiled if
> FULL_SYSTEM is defined.
>
> Steve
>
> On Mon, Aug 31, 2009 at 1:20 PM, soumyaroop roy<[email protected]> wrote:
> > 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
> >
> >
> _______________________________________________
> m5-dev mailing list
> [email protected]
> http://m5sim.org/mailman/listinfo/m5-dev
>



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

Reply via email to