tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: updating COMPAT_LINUX for linux 2.6.x support.
On Tue, May 04, 2010 at 10:54:27AM +0000, Andrew Doran wrote:
> On Sun, May 02, 2010 at 07:32:09PM -0700, Chuck Silvers wrote:
>
> > I tried following the suggestion in PR 37437 (moving the ps_sigignore
> > and ps_sigcatch fields from struct sigctx to struct sigacts, which is
> > shared between linux threads), and I moved p_sigpend from struct proc
> > to struct sigacts as well. this, together with other fixes allows
> > all of the netbsd libpthread regression tests to pass (except the one
> > that also fails natively on linux), and gives much improved results
> > on the LTP/posixtest tests. I put my current diff (still larded with
> > debug stuff and with linux stuff hardcoded instead of called through
> > new emul callbacks) in:
> > ftp://ftp.netbsd.org/pub/NetBSD/misc/chs/linux/diff.linux-nptl.4
>
> I think there should be no reason for sigacts to have its own lock.
> I changed things so that cloned processes share the same p->p_lock.
> If you check fork1() to ensure that p->p_lock is always shared
> if any kind of signal state is shared by the child, then the sigacts
> lock can be removed.
I was wondering about that when I was doing the first version of this,
it wasn't clear what the sigacts lock really protected.
> > before continuing down this path, I was wondering if it would be
> > possible to move from the current way of supporting linux threads
> > (each linux thread is a separate netbsd process, with extra sharing
> > happening behind the scenes) to the native netbsd way (1 process with
> > multiple LWPs)? the only problem I can think of is that something
> > might assume that linux thread IDs are globally unique, or that the
> > thread ID of the original thread is the same as the process ID.
> > but that seems a bit unlikely, since I don't see any place that the
> > linux thread ID is used (thought I could easily have missed that).
> > does anyone know of any reason why this wouuldn't work?
>
> I wish we could go back in time and undo clone(), it makes a hash of the
> the process data structures.
well, I'll see if I can clean up the implementation a bit once I finish
with this NPTL stuff.
-Chuck
Home |
Main Index |
Thread Index |
Old Index