Home | History | Annotate | Download | only in common
History log of /src/sys/compat/linux/common/linux_emuldata.h
RevisionDateAuthorComments
 1.20  20-May-2022  andvar s/auxillary/auxiliary/ in comments.
 1.19  26-Apr-2020  thorpej Add a NetBSD native futex implementation, mostly written by riastradh@.
Map the COMPAT_LINUX futex calls to the native ones.
 1.18  02-Nov-2010  chs personality() now interprets its parameter as having
the base personality type in the low byte and
various flags in the upper bytes. for now just mask off
the flags to make sure the base type is one we accept.
store the current personality in the emuldata so that
we can return the expected value for PER_QUERY.
 1.17  07-Jul-2010  chs many changes for COMPAT_LINUX:
- update the linux syscall table for each platform.
- support new-style (NPTL) linux pthreads on all platforms.
clone() with CLONE_THREAD uses 1 process with many LWPs
instead of separate processes.
- move the contents of sys__lwp_setprivate() into a new
lwp_setprivate() and use that everywhere.
- update linux_release[] and linux32_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.
- disable the non-functional "vdso" code in linux32/amd64,
glibc works fine without it.
- fix a race in the futex code where we could miss a wakeup after
a requeue operation.
- redo futex locking to be a little more efficient.
 1.16  26-Oct-2008  christos branches: 1.16.14; 1.16.16;
futex support fixes from FreeBSD via cube+pengo.
 1.15  28-Apr-2008  martin branches: 1.15.6;
Remove clause 3 and 4 from TNF licenses
 1.14  04-Mar-2007  christos branches: 1.14.36; 1.14.38; 1.14.40;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.13  05-Feb-2007  njoly branches: 1.13.2;
Add a new linux_emuldata_shared flag value LINUX_LES_USE_NPTL to allow
both NPTL and old linuxthreads behaviour depending on process needs.

Apply to exit_group(), getpid() and getppid() to share them between
compat linux32 (non NPTL) and compat linux (NPTL) on amd64.

ok by manu and christos
 1.12  23-Aug-2006  manu branches: 1.12.2; 1.12.6;
1) Complete Linux exit_group() emulation
Members of the thread group must die without reporting to the parent and
without going to zombie stage. We do that by reparenting to init before
catching a SIGKILL. The parent will not see the child death.

The thread group leader must report the exit status, even if it exits
because of another thread calling exit_group(). We do that by storing the
exit status in struct linux_emuldata_shared, and the exit hook has the
duty of setting struct proc's p_xstat for the thread group leader.

2) For exit/fork/exec hooks, move the NPTL specific code to separate functions
that are shared between COMPAT_LINUX and COMPAT_LINUX32

3) Fix LINUX_CLONE_PARENT_SETTID semantics
 1.11  25-Jun-2006  manu - Complete exit_group() implementation. We now maintain a list of Linux
threads in a processes and kill them properly. The code is a bit too
complicated, but I could not find a simplier way of dealing with it

- Change getpid() and getppid() semantics to match what Linux does,
and implement gettid(). In the Linux kernel, threads are implemnted
as plain old processes. A thread group is just a set of processes,
with the parent called leader. Thread ID, which are returned by gettid(),
are just the PID of the plain old processes, and getpid() returns the
PID of the thread group leader.

- Remove struct linux32_emuldata. COMPAT_LINUX32 uses a lot of COMPAT_LINUX
code, where a struct linux_emuldata is assumed. By having distinct emuldata
structure with different sizes and layouts, we caused kernel memory
corruptions.

- Fix setprioriry() and getpriority()

Thanks to Nicolas Joly for tracking down the problem and providing me the
hardware to fix them.
 1.10  11-Dec-2005  christos branches: 1.10.4; 1.10.8; 1.10.16;
merge ktrace-lwp.
 1.9  05-Nov-2005  manu Instead of ifdef'ing __amd64__ all the Linux NPTL stuff, introduce an
ifdef LINUX_NPTL.
Also implement SETTLS flag to Linux clone()
 1.8  22-Jun-2005  manu branches: 1.8.2;
Implent CLONE_PARENT_SETTID, CLONE_CHILD_CLEARTID, and CLONE_CHILD_SETTID
options to clone(). This makes fork() work on amd64.

clone() prototype has changed and the changes is probably revelant on some
other arches.
 1.7  26-Feb-2005  perry nuke trailing whitespace
 1.6  08-Aug-2004  jdolecek branches: 1.6.4; 1.6.6;
linux processes sharing VM space (via clone() call) must also
share same 'break' value used for brk()/sbrk(), otherwise application SIGSEGVs
quickly once different threads try to adjust data segment size

this fixes linux Mozilla crashes with SuSE 9.1 libraries, and possibly
other linux applications using real threads
 1.5  23-Jun-2003  erh branches: 1.5.2; 1.5.4;
Add copyright+license.
 1.4  15-Feb-2002  christos - add a real linux_sys___sysctl because the mib numbers are different.
implement only the kernel version getting entries.
- make the signal conversion functions consistent; dest is arg 1.
- make linux_fakedev deal with block and char devices differently.
- add linux_sys_ugetrlimit, and flesh out the regular get/setrlimit so
that they work properly.
- add linux_mmap2 [untested].
- bump kernel to 2.4.18, and make the date be valentine's day :-)
- linux_sys_*stat64 family was totally busted. Fix it.

tested only on i386.

Status:
gdb, telnet, work
jdk-1.4.0 extractor works, jdk still coredumps.

christos
 1.3  15-Mar-2001  manu branches: 1.3.2;
Fixed brk() emulation. We now keep track of the processes' idea of the
break value. See http://mail-index.netbsd.org/tech-kern/2001/03/15/0000.html
for more details.
 1.2  21-Nov-2000  jdolecek branches: 1.2.2;
comment out ps_siginfo from struct emuldata for now, add int debugreg[8]
update comment a bit
 1.1  08-Dec-1998  erh branches: 1.1.10;
At least make this compile. Add linux compat version of auxillary data eventually to be used to make the emulation work correctly.
 1.1.10.2  27-Mar-2001  bouyer Sync with HEAD.
 1.1.10.1  22-Nov-2000  bouyer Sync with HEAD.
 1.2.2.2  28-Feb-2002  nathanw Catch up to -current.
 1.2.2.1  09-Apr-2001  nathanw Catch up with -current.
 1.3.2.1  16-Mar-2002  jdolecek Catch up with -current.
 1.5.4.1  15-Aug-2004  tron Pull up revision 1.6 (requested by jdolecek in ticket #762):
linux processes sharing VM space (via clone() call) must also
share same 'break' value used for brk()/sbrk(), otherwise application SIGSEGVs
quickly once different threads try to adjust data segment size
this fixes linux Mozilla crashes with SuSE 9.1 libraries, and possibly
other linux applications using real threads
 1.5.2.5  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.5.2.4  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.5.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.5.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.5.2.1  12-Aug-2004  skrll Sync with HEAD.
 1.6.6.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.6.4.1  29-Apr-2005  kent sync with -current
 1.8.2.4  03-Sep-2007  yamt sync with head.
 1.8.2.3  26-Feb-2007  yamt sync with head.
 1.8.2.2  30-Dec-2006  yamt sync with head.
 1.8.2.1  21-Jun-2006  yamt sync with head.
 1.10.16.1  13-Jul-2006  gdamore Merge from HEAD.
 1.10.8.2  03-Sep-2006  yamt sync with head.
 1.10.8.1  26-Jun-2006  yamt sync with head.
 1.10.4.1  09-Sep-2006  rpaulo sync with head
 1.12.6.1  28-Mar-2007  jdc Pull up revision 1.13 (requested by njoly in ticket #523).

Add a new linux_emuldata_shared flag value LINUX_LES_USE_NPTL to allow
both NPTL and old linuxthreads behaviour depending on process needs.

Apply to exit_group(), getpid() and getppid() to share them between
compat linux32 (non NPTL) and compat linux (NPTL) on amd64.

ok by manu and christos
 1.12.2.1  09-Feb-2007  ad Sync with HEAD.
 1.13.2.1  12-Mar-2007  rmind Sync with HEAD.
 1.14.40.3  11-Aug-2010  yamt sync with head.
 1.14.40.2  04-May-2009  yamt sync with head.
 1.14.40.1  16-May-2008  yamt sync with head.
 1.14.38.1  18-May-2008  yamt sync with head.
 1.14.36.2  17-Jan-2009  mjf Sync with HEAD.
 1.14.36.1  02-Jun-2008  mjf Sync with HEAD.
 1.15.6.1  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.16.16.1  05-Mar-2011  rmind sync with head
 1.16.14.2  06-Nov-2010  uebayasi Sync with HEAD.
 1.16.14.1  17-Aug-2010  uebayasi Sync with HEAD.

RSS XML Feed