Home | History | Annotate | Download | only in i386
History log of /src/sys/compat/linux/arch/i386/linux_exec_machdep.c
RevisionDateAuthorComments
 1.20  05-Sep-2020  riastradh Round of uvm.h cleanup.

The poorly named uvm.h is generally supposed to be for uvm-internal
users only.

- Narrow it to files that actually need it -- mostly files that need
to query whether curlwp is the pagedaemon, which should maybe be
exposed by an external header.

- Use uvm_extern.h where feasible and uvm_*.h for things not exposed
by it. We should split up uvm_extern.h but this will serve for now
to reduce the uvm.h dependencies.

- Use uvm_stat.h and #ifdef UVMHIST uvm.h for files that use
UVMHIST(ubchist), since ubchist is declared in uvm.h but the
reference evaporates if UVMHIST is not defined, so we reduce header
file dependencies.

- Make uvm_device.h and uvm_swap.h independently includable while
here.

ok chs@
 1.19  19-Jul-2020  maxv don't include opt_user_ldt.h when it is not needed
 1.18  12-Aug-2017  maxv Remove vm86.

Pass 3.
 1.17  29-Mar-2011  plunky branches: 1.17.14; 1.17.32;
tidy up include pathname to exclude undefined behaviour

"If the characters ', \, ", //, or /* occur in the sequence between
the < and > delimiters, the behavior is undefined."
 1.16  07-Jul-2010  chs branches: 1.16.2;
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.15  23-Apr-2010  joerg Use struct segment_descriptor for pcb_fsd and pcb_gsd instead of int[2].
 1.14  23-Nov-2009  rmind branches: 1.14.2; 1.14.4;
Use lwp_getpcb() in compat code, clean from struct user.
 1.13  20-Sep-2009  taca Trying to fix build problem. Thanks to joerg's advise.
 1.12  29-Mar-2009  mrg - add new RLIMIT_AS (aka RLIMIT_VMEM) resource that limits the total
address space available to processes. this limit exists in most other
modern unix variants, and like most of them, our defaults are unlimited.
remove the old mmap / rlimit.datasize hack.

- adds the VMCMD_STACK flag to all the stack-creation vmcmd callers.
it is currently unused, but was added a few years ago.

- add a pair of new process size values to kinfo_proc2{}. one is the
total size of the process memory map, and the other is the total size
adjusted for unused stack space (since most processes have a lot of
this...)

- patch sh, and csh to notice RLIMIT_AS. (in some cases, the alias
RLIMIT_VMEM was already present and used if availble.)

- patch ps, top and systat to notice the new k_vm_vsize member of
kinfo_proc2{}.

- update irix, svr4, svr4_32, linux and osf1 emulations to support
this information. (freebsd could be done, but that it's best left
as part of the full-update of compat/freebsd.)


this addresses PR 7897. it also gives correct memory usage values,
which have never been entirely correct (since mmap), and have been
very incorrect since jemalloc() was enabled.

tested on i386 and sparc64, build tested on several other platforms.

thanks to many folks for feedback and testing but most espcially
chuq and yamt for critical suggestions that lead to this patch not
having a special ugliness i wasn't happy with anyway :-)
 1.11  26-Oct-2008  christos branches: 1.11.2; 1.11.4; 1.11.8;
changes from pengo that make initializing skype more reliable.
 1.10  26-Oct-2008  christos use a symbolic constant instead of 6.
 1.9  26-Oct-2008  christos use GUGS_SEL instead of 3.
 1.8  26-Oct-2008  ad Assert that the segment descriptors we generate for TLS will not allow
privilege elevation.
 1.7  26-Oct-2008  christos don't forget the percpu stuff and load gs immediately.
 1.6  25-Oct-2008  christos Add preliminary tls support for i386. Does not work yet. From FreeBSD.
 1.5  28-Apr-2008  martin branches: 1.5.6;
Remove clause 3 and 4 from TNF licenses
 1.4  19-Oct-2007  ad branches: 1.4.16; 1.4.18; 1.4.20;
machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h
 1.3  11-Dec-2005  christos branches: 1.3.30; 1.3.44; 1.3.46; 1.3.50;
merge ktrace-lwp.
 1.2  26-Feb-2005  perry branches: 1.2.4;
nuke trailing whitespace
 1.1  13-Nov-2004  christos branches: 1.1.2; 1.1.6; 1.1.8;
Split out the setup stack function for the benefit of lkms.
XXX: Our lkm system sucks. We really need to be exporting symbols, but
that leads to symbol conflicts.
 1.1.8.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.1.6.1  29-Apr-2005  kent sync with -current
 1.1.2.4  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.1.2.3  04-Feb-2005  skrll Adapt to branch.
 1.1.2.2  14-Nov-2004  skrll Sync with HEAD.
 1.1.2.1  13-Nov-2004  skrll file linux_exec_machdep.c was added on branch ktrace-lwp on 2004-11-14 08:15:33 +0000
 1.2.4.2  27-Oct-2007  yamt sync with head.
 1.2.4.1  21-Jun-2006  yamt sync with head.
 1.3.50.1  25-Oct-2007  bouyer Sync with HEAD.
 1.3.46.1  06-Nov-2007  matt sync with HEAD
 1.3.44.1  26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.3.30.1  23-Oct-2007  ad Sync with head.
 1.4.20.4  11-Aug-2010  yamt sync with head.
 1.4.20.3  11-Mar-2010  yamt sync with head
 1.4.20.2  04-May-2009  yamt sync with head.
 1.4.20.1  16-May-2008  yamt sync with head.
 1.4.18.1  18-May-2008  yamt sync with head.
 1.4.16.2  17-Jan-2009  mjf Sync with HEAD.
 1.4.16.1  02-Jun-2008  mjf Sync with HEAD.
 1.5.6.1  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.11.8.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.11.4.1  01-Apr-2009  snj Pull up following revision(s) (requested by mrg in ticket #622):
bin/csh/csh.1: revision 1.46
bin/csh/func.c: revision 1.37
bin/ps/print.c: revision 1.111
bin/ps/ps.c: revision 1.74
bin/sh/miscbltin.c: revision 1.38
bin/sh/sh.1: revision 1.92 via patch
external/bsd/top/dist/machine/m_netbsd.c: revision 1.7
lib/libkvm/kvm_proc.c: revision 1.82
sys/arch/mips/mips/cpu_exec.c: revision 1.55
sys/compat/darwin/darwin_exec.c: revision 1.57
sys/compat/ibcs2/ibcs2_exec.c: revision 1.73
sys/compat/irix/irix_resource.c: revision 1.15
sys/compat/linux/arch/amd64/linux_exec_machdep.c: revision 1.16
sys/compat/linux/arch/i386/linux_exec_machdep.c: revision 1.12
sys/compat/linux/common/linux_limit.h: revision 1.5
sys/compat/osf1/osf1_resource.c: revision 1.14
sys/compat/svr4/svr4_resource.c: revision 1.18
sys/compat/svr4_32/svr4_32_resource.c: revision 1.17
sys/kern/exec_subr.c: revision 1.62
sys/kern/init_sysctl.c: revision 1.160
sys/kern/kern_exec.c: revision 1.288
sys/kern/kern_resource.c: revision 1.151
sys/sys/param.h: patch
sys/sys/resource.h: revision 1.31
sys/sys/sysctl.h: revision 1.184
sys/uvm/uvm_extern.h: revision 1.153
sys/uvm/uvm_glue.c: revision 1.136
sys/uvm/uvm_mmap.c: revision 1.128
usr.bin/systat/ps.c: revision 1.32
- - add new RLIMIT_AS (aka RLIMIT_VMEM) resource that limits the total
address space available to processes. this limit exists in most other
modern unix variants, and like most of them, our defaults are unlimited.
remove the old mmap / rlimit.datasize hack.
- - adds the VMCMD_STACK flag to all the stack-creation vmcmd callers.
it is currently unused, but was added a few years ago.
- - add a pair of new process size values to kinfo_proc2{}. one is the
total size of the process memory map, and the other is the total size
adjusted for unused stack space (since most processes have a lot of
this...)
- - patch sh, and csh to notice RLIMIT_AS. (in some cases, the alias
RLIMIT_VMEM was already present and used if availble.)
- - patch ps, top and systat to notice the new k_vm_vsize member of
kinfo_proc2{}.
- - update irix, svr4, svr4_32, linux and osf1 emulations to support
this information. (freebsd could be done, but that it's best left
as part of the full-update of compat/freebsd.)
this addresses PR 7897. it also gives correct memory usage values,
which have never been entirely correct (since mmap), and have been
very incorrect since jemalloc() was enabled.
tested on i386 and sparc64, build tested on several other platforms.
thanks to many folks for feedback and testing but most espcially
chuq and yamt for critical suggestions that lead to this patch not
having a special ugliness i wasn't happy with anyway :-)
 1.11.2.1  28-Apr-2009  skrll Sync with HEAD.
 1.14.4.3  21-Apr-2011  rmind sync with head
 1.14.4.2  05-Mar-2011  rmind sync with head
 1.14.4.1  30-May-2010  rmind sync with head
 1.14.2.2  17-Aug-2010  uebayasi Sync with HEAD.
 1.14.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.16.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.17.32.1  28-Aug-2017  skrll Sync with HEAD
 1.17.14.1  03-Dec-2017  jdolecek update from HEAD

RSS XML Feed