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
