Commit Graph

2486 Commits

Author SHA1 Message Date
fvdl 6907c4ded8 Do syscall_intern after p_traceflag has been copied to the new
process (if it is inherited), so that ktrace continues to work
properly on the child.
2001-01-09 23:36:50 +00:00
nathanw d75edd2077 Reserve system call slots for getcontext, setcontext, LWPs, and
scheduler activations.
2001-01-08 18:25:35 +00:00
chs 6717a2ac1b in vtruncbuf(), use a "synchronous freeing" flush to prevent a race
between write i/os in a disk-based filesystem vs. the disk block being
freed by a truncation, allocated to a new file, and written again with
different data.  if the disk driver reorders the requests and does
the second i/o first, the old data will clobber the new, corrupting
the new file.
2001-01-08 07:05:47 +00:00
jdolecek d7f811d098 utrace(2): limit size of user data to KTR_USER_MAXLEN (currently 2048); return EINVAL if 'len' is bigger 2001-01-05 22:25:26 +00:00
jdolecek 2bd5bf0ec2 regen after utrace() parameter rename 2001-01-05 21:53:38 +00:00
jdolecek fbc7e223d7 utrace(2): rename 'id' parameter to 'label' 2001-01-05 21:42:08 +00:00
thorpej eb80878b1b Happy new year! 2001-01-01 20:18:34 +00:00
jdolecek df458f620b Avoid generating duplicate SYS_* defines to *syscall.h - is possible
for kern/syscalls.master's sys_getpid()/sys_getpid_with_ppid().
This fixes kern/11853 by Bernd Ernesti.
2001-01-01 16:41:43 +00:00
sommerfeld aace86f946 MULTIPROCESSOR: The two calls to psignal() inside mi_switch() are
inside the scheduler lock perimeter and should be sched_psignal() instead.
2001-01-01 16:02:51 +00:00
ad e3514a4191 PR 4853: we fork a lot more during startup these days. Wrap nextpid to 500. 2000-12-31 17:43:41 +00:00
sommerfeld f2bdd546dd Add a missing simple_unlock() to the LK_NOWAIT/VXLOCK error case in vget(). 2000-12-31 03:13:51 +00:00
jdolecek 7899fd7798 regen - utrace(2) addition 2000-12-28 11:16:48 +00:00
jdolecek a80dee65df add utrace(2) - this syscall allows to add user ktrace entries
idea from FreeBSD, but added argument (const char *id) so that it's possible
to differentiate between entries from different sources
2000-12-28 11:10:15 +00:00
jmc ca607b87cf Default lock_printf to syslog rather than printf. Some of the lock debug checks
are done inside of wakeup which is holding the sched lock. Printf can cause
wakeup to get called again (pty redirection of console message) which will
panic with sched lock already held.

This isn't a long term fix as not being able to printf vs. sched lock should
be cleaned up better but this avoids continual panics with lockdebug running
and an xterm -C.
2000-12-24 23:56:24 +00:00
jdolecek e9e91a0fb5 split off thread specific stuff from struct sigacts to struct sigctx, leaving
only signal handler array sharable between threads
move other random signal stuff from struct proc to struct sigctx

This addresses kern/10981 by Matthew Orgass.
2000-12-22 22:58:52 +00:00
fvdl 0d4862bed1 Regen. 2000-12-22 20:07:09 +00:00
fvdl 8eaf6e8d8e Make that defined(LKM) || defined(_LKM), to catch both the cases
of compiling a kernel with LKM support and compiling an LKM.
2000-12-22 20:05:35 +00:00
fvdl 2ac441ddfb LKM -> _LKM around opt_ include. 2000-12-22 20:00:16 +00:00
mrg 264248925f regen 2000-12-22 15:10:38 +00:00
mrg 80ab63644e redo the previous correctly 2000-12-22 15:09:46 +00:00
mrg af36640df1 regen 2000-12-22 14:59:40 +00:00
mrg 62230909f1 avoid redefinition of VNODE_OP_NOINLINE 2000-12-22 14:58:39 +00:00
mrg a0e71c9ca7 avoid redefinition of VNODE_OP_NOINLINE 2000-12-22 14:45:50 +00:00
scw 96698d967e Change struct emul's "char e_name[8]" field to "const char *e_name"
to allow for emulation names >= 8 characters.
2000-12-19 22:08:36 +00:00
mrg 7284657373 only print the magic number changing if not cold 2000-12-19 04:39:19 +00:00
jdolecek 5c6130a2b1 hum, use freebsd_setregs for FreeBSD ELF binaries (this bug was introduced with
the execsw[] changes)
2000-12-17 21:36:49 +00:00
fvdl 89b5cfa9c5 Jump out of the scandir loop if VOP_READDIR returns an error, avoiding
running around in circles.
2000-12-15 11:52:14 +00:00
mycroft b29180b2ff Tighten up the ELF signature checks, and actually look for the ABI tag added
in newer glibc versions.
2000-12-15 06:14:21 +00:00
jdolecek 03354da279 this doesn't need <sys/trace.h> 2000-12-13 17:48:46 +00:00
jdolecek 0c74ffb7fd if the third argument in syscall.conf matches [a-z0-9_], use it as
a function alias instead of the function name in { ... }
2000-12-12 17:32:45 +00:00
martin ac28b114d2 Make this compilable again on ports without __HAVE_SYSCALL_INTERN. 2000-12-11 19:53:06 +00:00
mycroft 11fcbfe7a6 Call e_syscall_intern every time ktrace flags are modified. 2000-12-11 16:39:01 +00:00
tsutsui aaa48a8d25 Use USPACE_ALIGN for an alignment argument on allocating U-area.
The default value is 0, and could be overridden by machine/vmparam.h.
2000-12-11 15:35:42 +00:00
mycroft f495cd9dc6 Introduce 2 new flags in types.h:
* __HAVE_SYSCALL_INTERN.  If this is defined, e_syscall is replaced by
  e_syscall_intern, which is called at key places in the kernel.  This can be
  used to set a MD syscall handler pointer.  This obsoletes and replaces the
  *_HAS_SEPARATED_SYSCALL flags.
* __HAVE_MINIMAL_EMUL.  If this is defined, certain (deprecated) elements in
  struct emul are omitted.
2000-12-11 05:28:59 +00:00
thorpej 105cf38061 Add some basic statistics to pool_cache. 2000-12-11 05:22:55 +00:00
fvdl 405b695086 Make sobind() take a struct proc *. It already took curproc and
passed it down to the appropriate usrreq function, and this
allows usage for contexts that need to be explicitly different
from curproc (like in the NFS code when binding to a reserved port).
2000-12-10 23:16:28 +00:00
mycroft 66610a4779 Introduce PROC_PC(), which is used to get a process's user PC. If this is
defined, call addupc_intr() directly from statclock() in the system time case,
using the same P_OWEUPC path if the copyin/copyout fails.
Use this in i386 to remove profiling code from the normal userret() path.
2000-12-10 19:29:30 +00:00
thorpej ce866cd0e8 Don't hold a pool cache lock across any call to pool_get() or pool_put().
This allows us to change a try-lock into a normal lock in the reclaim
case.
2000-12-10 17:03:34 +00:00
fvdl 538c381225 findblkname is not static (and is in fact used outside this file). 2000-12-10 14:14:15 +00:00
jdolecek 7a2157f1f3 emul_unregister(): fix incorrect loop condition - execsw[] is not NULL
terminated
2000-12-10 12:42:30 +00:00
jdolecek 9b6d040095 fork1(): write the ktrace entry before the parent is put to sleep for
FORK_PPWAIT case, so that this DTRT for vfork() too
2000-12-10 11:41:20 +00:00
jdolecek a6ca890142 always fill in e_syscall in respective emul_*; if the emulation doesn't
have it's own separated *_syscall() function, use syscall()
2000-12-09 12:38:23 +00:00
mycroft acbeba20e1 Fix compile glitch. 2000-12-09 07:17:32 +00:00
mycroft 547de8a6a3 Regen. 2000-12-09 07:05:10 +00:00
mycroft 02d8d5f9bf Define 3 new functions:
* sys_getpid_with_ppid()
* sys_getuid_with_euid()
* sys_getgid_with_egid()
that do the retval[1] hack.  Use them when COMPAT_43 is defined.
2000-12-09 07:04:47 +00:00
mycroft 51e3b887d7 Regen. 2000-12-09 06:19:40 +00:00
mycroft e2743f72a9 Round up the sysent table size. 2000-12-09 06:15:42 +00:00
mycroft 8cb9be1967 s/unimplemented/filler/ 2000-12-09 05:41:12 +00:00
mycroft f348afacb9 Regen. 2000-12-09 05:37:01 +00:00
mycroft 23284f8acf Add another const. 2000-12-09 05:33:27 +00:00
mycroft 9682cf0b09 Add the %% separators. 2000-12-09 05:27:28 +00:00
mycroft 060456b651 Couple of changes:
* Make the syscallnames[] table const.
* Add a separator between the #include section and the syscalls section, so
  that #if/#else/#endif can be handled differently in the two.
* Add support for rounding up the size of the sysent table.
2000-12-09 05:27:08 +00:00
jdolecek a65f2129f3 call exec_init() with before letting init(8) exec 2000-12-08 22:07:36 +00:00
jdolecek 0576f87ad3 add infrastructure to load emulations and their executable support dynamically
via LKM
2000-12-08 19:42:11 +00:00
augustss 246260555f Use correct type for todo variable.
Use more explicit panics messages.
2000-12-08 02:25:50 +00:00
thorpej 21ca07bb5c ...and when freeing cache groups, clear `freeto' if that's the one
we're freeing.
2000-12-07 21:30:07 +00:00
thorpej 3e9d93b241 When we invalidate a pool cache, make sure to clear `allocfrom' if
we empty out that cache group.
2000-12-07 20:16:56 +00:00
thorpej 1a658211bc Add a /c modifier to "show pool" to display pool caches. 2000-12-07 19:30:31 +00:00
jdolecek 6ae23b9300 update comment about the sense of placement of NDINIT() 2000-12-07 16:14:35 +00:00
thorpej 7553470722 This is a first-cut implementation of support for caching of
constructed objects in the pool allocator, similar to caching
of constructed objects in the Solaris SLAB allocator.

This implementation is a separate API (pool_cache_*()) layered
on top of pools to keep the caching complexity out of the way
of pools that won't benefit from it.

While we're here, allow pool items to be as large as the pool
page size.
2000-12-07 05:45:57 +00:00
thorpej 581799e1f8 ANSI'ify. 2000-12-06 18:20:52 +00:00
thorpej 131ac36401 pool_handle_t -> struct pool * 2000-12-06 18:05:57 +00:00
scw 6afa06dad6 Add support for COMPAT_AOUT_M68K. 2000-12-02 20:44:09 +00:00
jdolecek fc181f91c6 use EMUL_GETPID_PASS_PPID or EMUL_GETID_PASS_EID to find out if one should
pass parent pid for getpid() or effective id for get[ug]id(), instead
of compile-time dependency
2000-12-01 20:34:17 +00:00
jdolecek d06ce6de86 set the EMUL_HAS_SYS___syscall flag for emul_netbsd 2000-12-01 19:41:49 +00:00
jdolecek 30760da04a no need to define emul_osf1, <compat/osf1/osf1_exec.h> defines it for us now
set execsw[] entrys' priority to appropriate values
2000-12-01 12:57:55 +00:00
jdolecek 01040d97a2 add e_path (emulation path) to struct emul, which replaces emulation-specific
*_emul_path variables

change macros CHECK_ALT_{CREAT|EXIST} to use that, 'root' doesn't need
to be passed explicitly any more and *_CHECK_ALT_{CREAT|EXIST} are removed
change explicit emul_find() calls in probe functions to get the emulation
path from the checked exec switch entry's emulation

remove no longer needed header files

add e_flags and e_syscall to struct emul; these are unsed and empty for now
2000-12-01 12:28:30 +00:00
nathanw be487a2752 Set doreallocblks=1 here. 2000-11-30 20:56:53 +00:00
jdolecek 7d3a48b31d recognize ^if and ^endif in input master syscall file specially - output it
like #if and #endif to sysdcl; this can be used to insert ifdefs
to generated *sysent.c
2000-11-29 22:09:05 +00:00
thorpej aa77dea4c2 No need to play silly name trickery when we know we're talking about
64-bit ELF binaries.
2000-11-28 21:58:12 +00:00
mrg 51858ad725 backout part of execsw/LKM changes: netbsd_elf32_signature() is used by
the compat/netbsd32 code so de-static it again.
2000-11-28 13:10:41 +00:00
mrg b4e53bf009 wrap newly introduced >80 char lines. 2000-11-28 12:24:34 +00:00
jdolecek e650ecc818 prototype netbsd_elf64_probe() ifdef EXEC_ELF64, not for if !defined(EXEC_ELF32) 2000-11-27 18:04:32 +00:00
jdolecek 414f0ac116 netbsd32 emulation doesn't exec 64bit binaries 2000-11-27 17:21:22 +00:00
chs 69ad0d84c0 regen. 2000-11-27 09:04:59 +00:00
chs aeda8d3b77 Initial integration of the Unified Buffer Cache project. 2000-11-27 08:39:39 +00:00
nisimura 10571faa84 Introduce uvm_km_valloc_align() and use it to glab process's USPACE
aligned on USPACE boundary in kernel virutal address.  It's benefitial
for MIPS R4000's paired TLB entry design.
2000-11-27 04:36:40 +00:00
takemura 3c9d9276dc Add new powerhook argument values, PWR_SOFTSUSPEND, PWR_SOFTSTANDBY and
PWR_SOFTRESUME. Apm calls powerhook with the values in normal interrupt
priority level while others are protected with splhigh().
2000-11-26 11:08:57 +00:00
jdolecek d9a0883770 define COMPAT_OLDSOCK unconditionally - the code is used virtually for all
emulations besides NetBSD, and this way it's LKM-safe
2000-11-24 21:38:28 +00:00
chs 55a751c9d5 add ddb commands "show uvmexp" and "show ncache".
the former used to be "call uvm_dump", the latter is new.
2000-11-24 07:25:50 +00:00
chs ab077e1ed4 change cache_purgevfs() from O(N^2) to O(N).
use queue.h macros where possible.
2000-11-24 05:02:23 +00:00
chs fa19fe52db adjust the spinlock macros in the non-MULTIPROCESSOR, non-LOCKDEBUG case
so that gcc will think that static spinlock are used.
this allows us to remove the ugly conditionalization of
static spinlock declarations.
2000-11-24 03:59:07 +00:00
chs 22d140fd0b ifdef DEBUG, increase the max size we'll overwrite in freed memory blocks
to detect modifications after frees from 32 bytes to 1 page.
2000-11-24 00:34:32 +00:00
thorpej 113dd58233 Add a LOCKDEBUG check for a r/w spinlock spinning out of control.
Partially from Bill Sommerfeld.
2000-11-22 06:31:22 +00:00
itojun 6c7e531e99 make COMPAT_OSF1 to compile. not tested (could someone review?). 2000-11-22 03:48:33 +00:00
enami 29f1bcd8e2 Unlock mutex before jumping off from the critical region instead of
testing if locked.
2000-11-21 03:53:27 +00:00
jdolecek baae0324b9 restructure struct emul and execsw, in preparation to make emulations LKMable:
* move all exec-type specific information from struct emul to execsw[] and
  provide single struct emul per emulation
* elf:
  - kern/exec_elf32.c:probe_funcs[] is gone, execsw[] how has one entry
    per emulation and contains pointer to respective probe function
  - interp is allocated via MALLOC() rather than on stack
  - elf_args structure is allocated via MALLOC() rather than malloc()
* ecoff: the per-emulation hooks moved from alpha and mips specific code
  to OSF1 and Ultrix compat code as appropriate, execsw[] has one entry per
  emulation supporting ecoff with appropriate probe function
* the makecmds/probe functions don't set emulation, pointer to emulation is
  part of appropriate execsw[] entry
* constify couple of structures
2000-11-21 00:37:49 +00:00
jdolecek e5b244c609 disable the LM_EXEC stuff for now, it doesn't work anyway
this will be fixed 'soon'
2000-11-21 00:11:38 +00:00
thorpej 3075dec01a Allow machine dependent code to specify a hook to be run when a
spinlock's interlock is released.

Idea from Bill Sommerfeld.
2000-11-20 20:04:49 +00:00
veego a174b8a595 simple_lock_held is only defined when you use LOCKDEBUG.
Put it for now in an ifdef LOCKDEBUG.
2000-11-20 06:36:02 +00:00
simonb f104ee65be Add a sysctl_rdminstruct() function - same as sysctl_rdstruct() but
can return short data if *oldlenp is less than len.
2000-11-20 01:46:56 +00:00
jdolecek 26fe6166ed check_pty(): simple_unlock() might have been called even if the lock was
not locked previously in some cases; unlock only if the lock is held
2000-11-19 22:34:56 +00:00
sommerfeld 0cc75528c8 If MULTIPROCESSOR, count cpus and use that for hw.ncpu 2000-11-19 01:46:26 +00:00
sommerfeld 89b4aa9918 Preliminary MULTIPROCESSOR support:
- for CP_TIME, sum the times across all processors.
 - for kinfo_proc2, fill in cpu_id.
2000-11-19 01:34:58 +00:00
sommerfeld f276315e1c In pool_setlowat(), only call pool_catchup() if the pool is under the
low water mark.  (Avoids annoying warning when you setlowat a static
pool).
2000-11-19 00:29:51 +00:00
simonb 3f9e6ed0b8 Don't use alloca() - breaks compile on alpha (alloca is not prototyped
anywhere).
2000-11-18 15:58:13 +00:00
jdolecek 4ba9d75b97 pass pointer to used exec_package to emulation-specific exec hook -
emulation code may make decisions based on e.g. exec format
2000-11-16 20:04:33 +00:00
enami c4c6285008 Don't allow t_linesw to be NULL. 2000-11-15 01:47:14 +00:00
enami c816e13706 Adjust nlinesw correctly. 2000-11-15 01:42:53 +00:00
enami 54f723723a Cosmetic changes. 2000-11-15 01:41:22 +00:00