Subject: Re: lwp_emuldata
To: Emmanuel Dreyfus <manu@netbsd.org>
From: Matt Thomas <matt@3am-software.com>
List: tech-kern
Date: 12/13/2003 08:34:07
On Dec 13, 2003, at 3:51 AM, Emmanuel Dreyfus wrote:

> So here is what we could do:
>
> - add l_emuldata in struct lwp
>
> - add void e_newlwp and e_lwp_exit hooks in struct emul:
> void e_newlwp(struct lwp *l1, struct lwp *l2);
> void e_lwp_exit(struct lwp *l);

I'd like to see a second int argument, 'const struct emul *newemul' 
which
can take will be either a pointer to new emul of the process if execing
or NULL if exiting.

> - call e_newlwp just before returning from newlwp

Wouldn't e_lwp_fork be a better name since it corresponds to
cpu_lwp_fork?

> - call e_lwp_exit at the very beginning of lwp_exit (after the DPRINTF)

There should also be a call to e_lwp_exit with the emulation before exec
commits to execing a new program.  (assume you run the OSX sh and then
exec a NetBSD program, shouldn't the OSX emul data be removed?)

> As far as COMPAT_MACH is concerned, e_newlwp does not need the parent
> thread l1. Should we have it anyway?

Yes.  It doesn't hurt to have it.