tech-pkg archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
updating COMPAT_LINUX for linux 2.6.x support (take 2)
hi folks,
I rewrote my COMPAT_LINUX changes using the 1-proc-many-LWPs model.
the patch is at:
ftp://ftp.netbsd.org/pub/NetBSD/misc/chs/linux/diff.linux-nptl-take2.23
this patch includes:
- joerg's patch for amd64 TLS.
- update linux syscall table (for each platform).
- support new-style (NPTL) linux pthreads on all platforms
where linux supports it. clone() with CLONE_THREAD uses
1 process with many LWPs instead of separate processes.
- update linux_release[] to "2.6.18".
- adjust placement of emul fork/exec/exit hooks as needed
and adjust other emul code to match.
- convert all struct emul definitions to use named initializers.
- change the pid allocator to allow multiple pids to refer to the same proc.
- remove a few fields from struct proc that are no longer needed.
- fix obreak() to honor RLIMIT_AS as well as RLIMIT_DATA.
this will affect native processes as well as linux ones,
but it seems appropriate.
what is missing:
- linux32 support (needs 32-bit-compat TLS on amd64)
I've tested this on i386 and amd64 using both the netbsd regress/lib/libpthread
tests and the LTP pthreads tests. the netbsd tests all pass except for
"cancel2", which also fails on linux. as for the LTP/posixtest tests,
there are a number of failures remaining, all of which fall into one of
the following categories:
- sched_[sg]etscheduler() has rounding errors converting back and forth.
- the test uses PTHREAD_PROCESS_SHARED, which we don't implement.
- the test requires clock_getcpuclockid(), which we don't implement.
- the test fails on linux too.
I don't see any of these as being a showstopper.
I've also verified that with these changes, the latest and greatest
flash plugin works fine on i386 (though it needs a bunch more shared
libs that are not part of the pkgsrc pkgs).
other than finishing the linux32 stuff, does anyone see anything else
that I should do for this?
-Chuck
Home |
Main Index |
Thread Index |
Old Index