freebsd-dev/sys/kern
Bruce Evans d2ef4060d7 Fixed a longstanding latency bug in signal delivery. When a signal
is sent to a process, psignal() needs to schedule an AST for the
process if the process is runnable, not just if it is current, so that
pending signals get checked for on the next return of the process to
user mode.  This wasn't practical until recently because the AST flag
was per-cpu so setting it for a non-current process would usually just
cause a bogus AST for the current process.

For non-current processes looping in user mode, it took accidental
(?) magic to deliver signals at all.  Signals were usually delivered
late as a side effect of rescheduling (need_resched() sets astpending,
etc.).  In pre-SMPng, delivery was delayed by at most 1 quantum (the
need_resched() call in roundrobin() is certain to occur within 1
quantum for looping processes).  In -current, things are complicated
by normal interrupt handlers being threads.  Missing handling of the
complications makes roundrobin() a bogus no-op, but preemptive
scheduling sort of works anyway due to even larger bogons elsewhere.
2001-02-19 09:40:58 +00:00
..
bus_if.m Alter the return value and arguments of the GET_RESOURCE_LIST bus method. 2000-11-28 06:49:15 +00:00
device_if.m * Factor out the object system from new-bus so that it can be used by 2000-04-08 14:17:18 +00:00
genassym.sh Improve kernel bootstrapping: 2001-01-28 06:39:56 +00:00
gensetdefs.pl Don't hard-code alignment and data declarations valid for 64-bit 2001-01-29 01:55:54 +00:00
imgact_aout.c Back out proc locking to protect p_ucred for obtaining additional 2001-01-27 00:01:31 +00:00
imgact_elf.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
imgact_gzip.c Fix a typo. 2001-01-24 08:42:39 +00:00
imgact_shell.c Fix #! script exec under linux emulation. If a script is exec'd from a 2000-04-26 20:58:40 +00:00
inflate.c Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
init_main.c Implement a unified run queue and adjust priority levels accordingly. 2001-02-12 00:20:08 +00:00
init_sysent.c Regen. 2000-12-02 05:45:32 +00:00
kern_acct.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_acl.c Back out proc locking to protect p_ucred for obtaining additional 2001-01-27 00:01:31 +00:00
kern_cap.c Remove unneeded #include <sys/proc.h> lines. 2000-10-29 13:57:19 +00:00
kern_clock.c Changed the aston() family to operate on a specified process instead of 2001-02-19 04:15:59 +00:00
kern_condvar.c Implement a unified run queue and adjust priority levels accordingly. 2001-02-12 00:20:08 +00:00
kern_conf.c KASSERT that the minor number passed to make_dev() is valid. 2001-02-02 03:32:11 +00:00
kern_descrip.c Extend kqueue down to the device layer. 2001-02-15 16:34:11 +00:00
kern_environment.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_event.c Extend kqueue down to the device layer. 2001-02-15 16:34:11 +00:00
kern_exec.c Fix typo: seperate -> separate. 2001-02-06 11:21:58 +00:00
kern_exit.c Revert the previous revision for two reasons: 2001-02-09 20:51:11 +00:00
kern_fork.c o Export the nextpid variable via SYSCTL as kern.lastpid, decreasing by 2001-02-12 17:59:01 +00:00
kern_idle.c Implement a unified run queue and adjust priority levels accordingly. 2001-02-12 00:20:08 +00:00
kern_intr.c Implement a unified run queue and adjust priority levels accordingly. 2001-02-12 00:20:08 +00:00
kern_jail.c Convert more malloc+bzero to malloc+M_ZERO. 2000-12-08 21:51:06 +00:00
kern_kthread.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_ktr.c Work around some sizeof(long) != sizeof(int) bogons. 2001-02-09 19:02:39 +00:00
kern_ktrace.c Don't use SCARG. 2001-01-08 07:22:06 +00:00
kern_linker.c Another round of the <sys/queue.h> FOREACH transmogriffer. 2001-02-04 16:08:18 +00:00
kern_lock.c Proc locking. 2001-02-09 16:27:41 +00:00
kern_lockf.c Commit the remaining part of PR14914: 1999-11-16 16:28:58 +00:00
kern_malloc.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_mib.c Implement a unified run queue and adjust priority levels accordingly. 2001-02-12 00:20:08 +00:00
kern_module.c Mechanical change to use <sys/queue.h> macro API instead of 2001-02-04 13:13:25 +00:00
kern_mutex.c Change all instances of CURPROC' and CURTHD' to `curproc,' in order 2001-02-12 03:15:43 +00:00
kern_ntptime.c Updates to the ntp pll from John Hay. 2000-09-10 09:13:34 +00:00
kern_physio.c Separate the struct bio related stuff out of <sys/buf.h> into 2000-05-05 09:59:14 +00:00
kern_proc.c Implement a unified run queue and adjust priority levels accordingly. 2001-02-12 00:20:08 +00:00
kern_prot.c o Fix spellign in a comment: s/referernce/reference/ 2001-02-14 06:53:57 +00:00
kern_random.c This patchset fixes a large number of file descriptor race conditions. 2000-11-18 21:01:04 +00:00
kern_resource.c Implement a unified run queue and adjust priority levels accordingly. 2001-02-12 00:20:08 +00:00
kern_shutdown.c RIP <machine/lock.h>. 2001-02-11 10:44:09 +00:00
kern_sig.c Fixed a longstanding latency bug in signal delivery. When a signal 2001-02-19 09:40:58 +00:00
kern_subr.c Introduce copyinfrom and copyinstrfrom, which can copy data from either 2001-02-16 14:31:49 +00:00
kern_switch.c Implement a unified run queue and adjust priority levels accordingly. 2001-02-12 00:20:08 +00:00
kern_synch.c Implement a unified run queue and adjust priority levels accordingly. 2001-02-12 00:20:08 +00:00
kern_syscalls.c sysvipc loadable. 2000-12-01 08:57:47 +00:00
kern_sysctl.c Mechanical change to use <sys/queue.h> macro API instead of 2001-02-04 13:13:25 +00:00
kern_tc.c Remove a bogus #ifdef KTR stanza. 2001-01-01 23:09:53 +00:00
kern_time.c Use callout_reset instead of timeout(9). Most callouts are statically 2000-11-27 22:52:31 +00:00
kern_timeout.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_xxx.c
ksched.c Implement a unified run queue and adjust priority levels accordingly. 2001-02-12 00:20:08 +00:00
link_aout.c Change the conditionaal so that we only build this on i386 instead of 2000-09-29 13:32:24 +00:00
link_elf_obj.c Convert more malloc+bzero to malloc+M_ZERO. 2000-12-08 21:51:06 +00:00
link_elf.c Convert more malloc+bzero to malloc+M_ZERO. 2000-12-08 21:51:06 +00:00
linker_if.m First round implementation of a fine grain enhanced module to module 2000-04-29 13:19:31 +00:00
Make.tags.inc there is no more miscfs/devfs 2000-12-31 23:12:20 +00:00
makedevops.pl Fix a bug in both scripts: HEADER sections were not emitted to the header 2001-01-04 13:41:24 +00:00
Makefile Retire kernfs (kernel part). 2000-12-28 12:17:35 +00:00
makeobjops.pl Fix a bug in both scripts: HEADER sections were not emitted to the header 2001-01-04 13:41:24 +00:00
makesyscalls.sh Add reserved lkmressys keyword. I swear, this script will die the 2000-12-01 08:47:54 +00:00
md5c.c Add ia64 support. 2000-09-29 13:36:47 +00:00
p1003_1b.c Add $FreeBSD$ 2000-05-01 20:32:07 +00:00
posix4_mib.c Add $FreeBSD$. 2000-04-22 15:13:06 +00:00
subr_acl_posix1e.c Back out proc locking to protect p_ucred for obtaining additional 2001-01-27 00:01:31 +00:00
subr_autoconf.c Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
subr_blist.c Convert more malloc+bzero to malloc+M_ZERO. 2000-12-08 21:51:06 +00:00
subr_bus.c Unset the devclass if the attach fails and the devclass was not set to 2001-01-08 22:16:26 +00:00
subr_clist.c Fix typo: seperate -> separate. 2001-02-06 11:21:58 +00:00
subr_devstat.c Another round of the <sys/queue.h> FOREACH transmogriffer. 2001-02-04 16:08:18 +00:00
subr_disk.c Don't clone impossible unit numbers for disks. 2000-12-15 17:55:24 +00:00
subr_disklabel.c A bit of sanity-checking in bioqdisksort(): panic if we recurse. 2001-01-14 18:48:42 +00:00
subr_diskmbr.c Make diskerr() always log with printf. 2000-11-26 19:29:15 +00:00
subr_diskslice.c Add a new ioctl for doing virgin disklabels. 2000-10-31 07:05:40 +00:00
subr_eventhandler.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
subr_kobj.c Convert more malloc+bzero to malloc+M_ZERO. 2000-12-08 21:51:06 +00:00
subr_log.c Replace logwakeup() with "int msgbuftrigger". There is little 2000-12-20 21:50:37 +00:00
subr_module.c Preceed/preceeding are not english words. Use precede and preceding. 2001-02-18 10:43:53 +00:00
subr_param.c Remove unneeded <stddef.h> #includes. 2000-10-29 16:57:42 +00:00
subr_prf.c Use PCPU_GET, PCPU_PTR and PCPU_SET to access all per-cpu variables 2001-01-10 04:43:51 +00:00
subr_prof.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
subr_rman.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
subr_sbuf.c Remove an assertion I forgot to remove in the previous commit: sbuf_len() 2001-01-28 00:33:58 +00:00
subr_scanf.c Change the prototype of the strto* routines to make the second 1999-11-24 01:03:08 +00:00
subr_smp.c Woops, remove an obsolete reference to gd_cpu_lockid. 2001-02-09 16:13:57 +00:00
subr_taskqueue.c - Catch up to the new swi API changes: 2001-02-09 17:46:35 +00:00
subr_trap.c Changed the aston() family to operate on a specified process instead of 2001-02-19 04:15:59 +00:00
subr_turnstile.c Change all instances of CURPROC' and CURTHD' to `curproc,' in order 2001-02-12 03:15:43 +00:00
subr_witness.c Change all instances of CURPROC' and CURTHD' to `curproc,' in order 2001-02-12 03:15:43 +00:00
subr_xxx.c Extend kqueue down to the device layer. 2001-02-15 16:34:11 +00:00
sys_generic.c poll(2) array limits (take 2) - after some input from bde. 2001-02-09 08:10:22 +00:00
sys_pipe.c Extend kqueue down to the device layer. 2001-02-15 16:34:11 +00:00
sys_process.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
sys_socket.c Extend kqueue down to the device layer. 2001-02-15 16:34:11 +00:00
syscalls.c Regen. 2000-12-02 05:45:32 +00:00
syscalls.master Remove thr_sleep and thr_wakeup. Remove fields p_nthread and p_wakeup 2000-12-02 05:41:30 +00:00
sysv_ipc.c sysvipc loadable. 2000-12-01 08:57:47 +00:00
sysv_msg.c Use predictable internal names for the sysvipc modules, so we have a 2001-01-14 18:04:30 +00:00
sysv_sem.c Use predictable internal names for the sysvipc modules, so we have a 2001-01-14 18:04:30 +00:00
sysv_shm.c It is _DEFINITELY_ not okay to change shmseg on a running system. 2001-02-04 20:10:32 +00:00
tty_compat.c
tty_conf.c Don't refer to TABLDISC in the comments here. 2000-01-30 10:14:13 +00:00
tty_cons.c Extend kqueue down to the device layer. 2001-02-15 16:34:11 +00:00
tty_pty.c Extend kqueue down to the device layer. 2001-02-15 16:34:11 +00:00
tty_snoop.c Remove unused #include "snp.h" 2001-01-29 10:06:22 +00:00
tty_subr.c Fix typo: seperate -> separate. 2001-02-06 11:21:58 +00:00
tty_tty.c Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
tty.c Fix tab breakage from last commit. 2001-02-17 19:40:22 +00:00
uipc_accf.c Remove unneeded #include <sys/proc.h> lines. 2000-10-29 13:57:19 +00:00
uipc_domain.c Use callout_reset instead of timeout(9). Most callouts are statically 2000-11-27 22:52:31 +00:00
uipc_mbuf2.c Long awaited style fixup in mbuf code. Get rid of K&R style prototyping 2001-02-11 05:02:06 +00:00
uipc_mbuf.c Implement m_getm() which will perform an "all or nothing" mbuf + cluster 2001-02-14 05:13:04 +00:00
uipc_proto.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
uipc_sockbuf.c Make sbcompress use the new M_WRITABLE macro. Previously sbcompress 2000-11-19 22:22:47 +00:00
uipc_socket2.c Make sbcompress use the new M_WRITABLE macro. Previously sbcompress 2000-11-19 22:22:47 +00:00
uipc_socket.c Extend kqueue down to the device layer. 2001-02-15 16:34:11 +00:00
uipc_syscalls.c Return ECONNABORTED from accept if connection is closed while on the 2001-02-14 02:09:11 +00:00
uipc_usrreq.c * Rename M_WAIT mbuf subsystem flag to M_TRYWAIT. 2000-12-21 21:44:31 +00:00
vfs_acl.c Back out proc locking to protect p_ucred for obtaining additional 2001-01-27 00:01:31 +00:00
vfs_aio.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
vfs_bio.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
vfs_cache.c Staticize some malloc M_ instances. 2000-12-08 20:09:00 +00:00
vfs_cluster.c Fix typo: teh -> the. 2001-02-06 09:18:39 +00:00
vfs_conf.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
vfs_default.c Added a dummy lookup vop. Specfs was broken by removing its dummy 2001-02-18 02:22:58 +00:00
vfs_export.c Switch to using a struct xucred instead of a struct xucred when not 2001-02-18 13:30:20 +00:00
vfs_extattr.c Introduce copyinfrom and copyinstrfrom, which can copy data from either 2001-02-16 14:31:49 +00:00
vfs_init.c Another round of the <sys/queue.h> FOREACH transmogriffer. 2001-02-04 16:08:18 +00:00
vfs_lookup.c Untangle vfsinit() a bit. Use seperate sysinit functions rather than 2000-12-06 07:09:08 +00:00
vfs_mount.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
vfs_subr.c Switch to using a struct xucred instead of a struct xucred when not 2001-02-18 13:30:20 +00:00
vfs_syscalls.c Introduce copyinfrom and copyinstrfrom, which can copy data from either 2001-02-16 14:31:49 +00:00
vfs_vnops.c Extend kqueue down to the device layer. 2001-02-15 16:34:11 +00:00
vnode_if.pl Simplify this a bit so that it doesn't have to generate silly redundant 2000-12-06 06:59:38 +00:00
vnode_if.src Extend kqueue down to the device layer. 2001-02-15 16:34:11 +00:00