1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-18 10:35:55 +00:00
freebsd/sys/kern
Alfred Perlstein eb20931127 Attempt to fixup select(2) and poll(2), this should fix some races with
other threads as well as speed up the interfaces.

To fix the race and accomplish the speedup, remove selholddrop and
pollholddrop.  The entire concept is somewhat bogus because holding
the individual struct file pointers offers us no guarantees that
another thread context won't close it on us thereby removing our
access to our own reference.

Selholddrop and pollholddrop also would do multiple locks and unlocks
of mutexes _per-file_ in the fd arrays to be scanned, this needed to
be sped up.

Instead of using selholddrop and pollholddrop, simply hold the
filedesc lock over the selscan and pollscan functions.  This should
protect us against close(2)'s on the files as reduce the multiple
lock/unlock pairs per fd into a single lock over the filedesc.
2002-01-29 22:54:19 +00:00
..
bus_if.m
device_if.m
genassym.sh brace by itself after function declaration. 2001-12-27 20:16:21 +00:00
imgact_aout.c Make MAXTSIZ, DFLDSIZ, MAXDSIZ, DFLSSIZ, MAXSSIZ, SGROWSIZ loader 2001-10-10 23:06:54 +00:00
imgact_elf.c Remove whitespace at end of line. 2001-12-16 17:21:16 +00:00
imgact_gzip.c Make MAXTSIZ, DFLDSIZ, MAXDSIZ, DFLSSIZ, MAXSSIZ, SGROWSIZ loader 2001-10-10 23:06:54 +00:00
imgact_shell.c Return a more meaningful errno when the length of the interpreter 2001-11-28 03:26:58 +00:00
inflate.c
init_main.c Include sys/_lock.h and sys/_mutex.h to reduce namespace pollution. 2002-01-13 21:37:49 +00:00
init_sysent.c Make AIO a loadable module. 2001-12-29 07:13:47 +00:00
kern_acct.c o Move suser() calls in kern/ to using suser_xxx() with an explicit 2001-11-01 20:56:57 +00:00
kern_acl.c SMP Lock struct file, filedesc and the global file list. 2002-01-13 11:58:06 +00:00
kern_cap.c - Attempt to help declutter kern. sysctl by moving security out from 2002-01-16 06:55:30 +00:00
kern_clock.c Change the preemption code for software interrupt thread schedules and 2002-01-05 08:47:13 +00:00
kern_condvar.c Change the preemption code for software interrupt thread schedules and 2002-01-05 08:47:13 +00:00
kern_conf.c Add a new sysinit SI_SUB_DEVFS. Devfs hooks into the kernel at SI_ORDER_FIRST, 2002-01-09 04:58:49 +00:00
kern_descrip.c Attempt to fixup select(2) and poll(2), this should fix some races with 2002-01-29 22:54:19 +00:00
kern_environment.c Fix an inverted test csae. Success of getenv() is determined by a return 2001-10-25 17:22:31 +00:00
kern_event.c Add entry for EVFILT_NETDEV, which was inadverdently omitted back in Sept. 2002-01-24 17:20:55 +00:00
kern_exec.c o Call the functions registered with at_exec() from exec_new_vmspace() 2002-01-13 19:36:35 +00:00
kern_exit.c Release text vnode in exit() rather than wait(). Occasionally 2002-01-05 21:47:58 +00:00
kern_fork.c SMP Lock struct file, filedesc and the global file list. 2002-01-13 11:58:06 +00:00
kern_idle.c Modify the critical section API as follows: 2001-12-18 00:27:18 +00:00
kern_intr.c Change the preemption code for software interrupt thread schedules and 2002-01-05 08:47:13 +00:00
kern_jail.c - Attempt to help declutter kern. sysctl by moving security out from 2002-01-16 06:55:30 +00:00
kern_kthread.c Use a different mechanism to get the vnlru process to wake up and notice 2001-12-19 01:31:12 +00:00
kern_ktr.c Print parm6 too in the !KTR_EXTEND case. 2002-01-01 21:47:38 +00:00
kern_ktrace.c Fix ktrace enablement/disablement races that can result in a vnode 2001-10-24 01:05:39 +00:00
kern_linker.c - Ensure that linker file id's are unique, rather than blindly 2001-11-18 18:19:35 +00:00
kern_lock.c Fix a BUF_TIMELOCK race against BUF_LOCK and fix a deadlock in vget() 2001-12-20 22:42:27 +00:00
kern_lockf.c make LOCKF_DEBUG kernel option work (sorta) 2001-12-02 12:47:25 +00:00
kern_malloc.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
kern_mib.c - Attempt to help declutter kern. sysctl by moving security out from 2002-01-16 06:55:30 +00:00
kern_module.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
kern_mtxpool.c cast hashing index to (int)(intptr_t) for calculation. 2001-11-19 00:20:36 +00:00
kern_mutex.c Bump the limits for determining if we've held a spinlock too long as they 2002-01-15 14:20:33 +00:00
kern_ntptime.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
kern_physio.c
kern_poll.c Complete the device polling support by adding a thread in charge 2001-12-19 00:53:24 +00:00
kern_proc.c Fix a bug where the mutex name wasn't always displayed for processes in 2002-01-05 17:18:59 +00:00
kern_prot.c - Attempt to help declutter kern. sysctl by moving security out from 2002-01-16 06:55:30 +00:00
kern_random.c
kern_resource.c use mutex pool mutexes for uidinfo locking. 2002-01-20 22:48:49 +00:00
kern_sema.c Repeat after me -- "Use of ANSI string concatenation can be bad." 2001-12-10 05:40:12 +00:00
kern_shutdown.c Allow dump device be configured as early as possible using loader(8) tunable. 2002-01-21 01:16:11 +00:00
kern_sig.c o Revert kern_sig.c#1.143, as cr_cansignal() doesn't currently permit 2002-01-10 01:25:35 +00:00
kern_subr.c Change the preemption code for software interrupt thread schedules and 2002-01-05 08:47:13 +00:00
kern_switch.c Modify the critical section API as follows: 2001-12-18 00:27:18 +00:00
kern_sx.c Invert the test of sx_xholder for SX_LOCKED. We need to warn if a 2002-01-18 09:21:15 +00:00
kern_synch.c Change the preemption code for software interrupt thread schedules and 2002-01-05 08:47:13 +00:00
kern_syscalls.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
kern_sysctl.c Add code to export and print the description associated to sysctl 2001-12-16 02:55:41 +00:00
kern_tc.c Be more conservative about interrupt latency, it aint getting better it seems. 2002-01-25 21:22:34 +00:00
kern_time.c o Modify static settime() to accept the proc * for the process requesting 2001-09-26 19:53:57 +00:00
kern_timeout.c Move most of the kernel submap initialization code, including the 2001-08-22 04:07:27 +00:00
kern_xxx.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
ksched.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
link_aout.c Since we used '#ifdef __i386__', don't close with '#endif /* !__alpha__ */' 2001-11-24 10:11:14 +00:00
link_elf_obj.c Fix a number of misspellings of "dependency" and "dependencies" in 2001-11-16 21:08:40 +00:00
link_elf.c Fix a number of misspellings of "dependency" and "dependencies" in 2001-11-16 21:08:40 +00:00
linker_if.m Add the sysctl "kern.function_list", which currently exports all 2001-10-30 15:21:45 +00:00
Make.tags.inc Update pathnames for creation of tags file. 2001-12-05 01:23:21 +00:00
Makefile Don't generate <sys/syscalls-hide.h> it has never had any users anywhere in 2001-10-13 09:17:49 +00:00
makeobjops.pl Switch warnings and strict back on again in a way that's compatible 2001-11-16 02:02:42 +00:00
makesyscalls.sh Don't generate <sys/syscalls-hide.h> it has never had any users anywhere in 2001-10-13 09:17:49 +00:00
md4c.c Import kernel part of SMB/CIFS requester. 2001-04-10 07:59:06 +00:00
md5c.c
p1003_1b.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
posix4_mib.c
subr_acl_posix1e.c SMP Lock struct file, filedesc and the global file list. 2002-01-13 11:58:06 +00:00
subr_autoconf.c
subr_blist.c With Alfred's permission, remove vm_mtx in favor of a fine-grained approach 2001-07-04 16:20:28 +00:00
subr_bus.c Fixed an apparent typo ("-" before ":") and an English error (comma 2001-12-28 18:32:13 +00:00
subr_clist.c Make cblock_alloc_cblocks() spell its own name 2001-03-27 10:21:26 +00:00
subr_devstat.c Export the head structure for the device statistics STAILQ in 2001-08-04 18:02:47 +00:00
subr_disk.c Don't call cdevsw_add(). 2001-11-04 11:56:22 +00:00
subr_disklabel.c Fix typo so that the delay code introduced in revision 1.60 actually 2002-01-12 02:04:15 +00:00
subr_diskmbr.c Wrap Dangerously Dedicated printf under if (bootverbose) 2001-12-11 05:35:43 +00:00
subr_diskslice.c Uninlined most of the bloated inline functions in <sys/disklabel.h>. Some 2002-01-17 18:33:18 +00:00
subr_eventhandler.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
subr_hints.c Fix a fatal type mismatch (char *static_env; vs char static_env[]). 2001-09-17 21:27:41 +00:00
subr_kobj.c
subr_log.c Use the passed in thread to selrecord() instead of curthread. 2001-09-21 22:46:54 +00:00
subr_mbuf.c On the first day of Christmas bde gave to me: 2001-12-23 22:04:08 +00:00
subr_mchain.c Update to C99, s/__FUNCTION__/__func__/. 2001-12-10 05:51:45 +00:00
subr_module.c
subr_param.c Make the 'maxusers 0' auto-sizing code slightly more conservative. Change 2002-01-25 01:54:16 +00:00
subr_pcpu.c Add a per-cpu variable, cpumask, the preshifted equivalent of 1 << cpuid. 2002-01-05 09:35:50 +00:00
subr_power.c Some fix for the recent apm module changes. 2001-11-01 16:34:07 +00:00
subr_prf.c - Attempt to help declutter kern. sysctl by moving security out from 2002-01-16 06:55:30 +00:00
subr_prof.c - Change all callers of addupc_task() to check PS_PROFIL explicitly and 2001-12-18 09:06:10 +00:00
subr_rman.c Add a rman_reserve_resource_bound() function that takes an additional 2001-12-21 21:40:55 +00:00
subr_sbuf.c Yet a bug with extensible sbufs being marked as OVERFLOWED. This time 2002-01-24 20:57:56 +00:00
subr_scanf.c
subr_smp.c Fix forward_roundrobin(). It was mistakenly using the cpu number as 2002-01-05 09:38:47 +00:00
subr_taskqueue.c Change the preemption code for software interrupt thread schedules and 2002-01-05 08:47:13 +00:00
subr_trap.c Changed the type of pcb_flags from u_char to u_int and adjusted things. 2002-01-17 17:49:23 +00:00
subr_turnstile.c Bump the limits for determining if we've held a spinlock too long as they 2002-01-15 14:20:33 +00:00
subr_witness.c Change the preemption code for software interrupt thread schedules and 2002-01-05 08:47:13 +00:00
subr_xxx.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
sys_generic.c Attempt to fixup select(2) and poll(2), this should fix some races with 2002-01-29 22:54:19 +00:00
sys_pipe.c SMP Lock struct file, filedesc and the global file list. 2002-01-13 11:58:06 +00:00
sys_process.c Move procfs_* from procfs_machdep.c into sys_process.c, and rename them to 2001-10-21 23:57:24 +00:00
sys_socket.c SMP Lock struct file, filedesc and the global file list. 2002-01-13 11:58:06 +00:00
syscalls.c Add nmount() stub function and regenerate the syscall-glue which should 2001-11-02 17:59:23 +00:00
syscalls.master Make AIO a loadable module. 2001-12-29 07:13:47 +00:00
sysv_ipc.c Eliminate semexit_hook using at_exit(9) and rm_at_exit(9). 2001-12-30 18:55:09 +00:00
sysv_msg.c Make AIO a loadable module. 2001-12-29 07:13:47 +00:00
sysv_sem.c Eliminate semexit_hook using at_exit(9) and rm_at_exit(9). 2001-12-30 18:55:09 +00:00
sysv_shm.c Make AIO a loadable module. 2001-12-29 07:13:47 +00:00
tty_compat.c
tty_conf.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
tty_cons.c Fix boot -p for DDBless kernels 2001-12-11 10:21:26 +00:00
tty_pty.c o Move suser() calls in kern/ to using suser_xxx() with an explicit 2001-11-01 20:56:57 +00:00
tty_subr.c Make cblock_alloc_cblocks() spell its own name 2001-03-27 10:21:26 +00:00
tty_tty.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
tty.c utime/stime.tv_sec are elapsed times, not relative to 1970. We can 2001-11-17 00:26:57 +00:00
uipc_accf.c Revert the last bits of my bogus move of NMBCLUSTERS 2001-06-01 21:47:34 +00:00
uipc_domain.c Update the comment about System initialization to reflect the use of 2001-12-08 04:20:54 +00:00
uipc_mbuf2.c Sync with recent KAME. 2001-06-11 12:39:29 +00:00
uipc_mbuf.c Update to C99, s/__FUNCTION__/__func__/. 2001-12-10 05:51:45 +00:00
uipc_proto.c Implement a LOCAL_PEERCRED socket option which returns a 2001-08-17 22:01:18 +00:00
uipc_sockbuf.c Revert 1.81; 1.19 fixed this already in a different way. 2002-01-09 01:45:17 +00:00
uipc_socket2.c Revert 1.81; 1.19 fixed this already in a different way. 2002-01-09 01:45:17 +00:00
uipc_socket.c Fix select on fifos. 2002-01-14 22:03:48 +00:00
uipc_syscalls.c Fixed bug in calculation of amount of file to send when nbytes !=0 and 2002-01-22 17:32:10 +00:00
uipc_usrreq.c Remove a bogus FILEDESC_UNLOCK. 2002-01-14 19:45:03 +00:00
vfs_acl.c SMP Lock struct file, filedesc and the global file list. 2002-01-13 11:58:06 +00:00
vfs_aio.c o Remove the unused vestiges of JOBST_JOBQPROC and 2002-01-20 18:59:58 +00:00
vfs_bio.c This fixes a large number of bugs in our NFS client side code. A recent 2001-12-14 01:16:57 +00:00
vfs_cache.c Include sys/_lock.h and sys/_mutex.h to reduce namespace pollution. 2002-01-13 21:37:49 +00:00
vfs_cluster.c Implement IO_NOWDRAIN and B_NOWDRAIN - prevents the buffer cache from blocking 2001-11-05 18:48:54 +00:00
vfs_conf.c Remove the use of _PATH_DEV in the example. 2001-11-24 01:34:12 +00:00
vfs_default.c Fix incorrect double-termination of vm_object. When a vm_object is 2001-10-23 01:23:41 +00:00
vfs_export.c Fix some signed/unsigned integer confusion, and add bounds checking of 2001-09-10 11:28:07 +00:00
vfs_extattr.c Replace ffind_* with fget calls. 2002-01-14 00:13:45 +00:00
vfs_init.c Revert consequences of changes to mount.h, part 2. 2001-04-29 02:45:39 +00:00
vfs_lookup.c Include sys/_lock.h and sys/_mutex.h to reduce namespace pollution. 2002-01-13 21:37:49 +00:00
vfs_mount.c Remove the use of _PATH_DEV in the example. 2001-11-24 01:34:12 +00:00
vfs_subr.c Remove 'VXLOCK: interlock avoided' warnings. This can now occur in normal 2002-01-19 02:14:45 +00:00
vfs_syscalls.c Replace ffind_* with fget calls. 2002-01-14 00:13:45 +00:00
vfs_vnops.c Make st_blksize default to PAGE_SIZE instead of zero. 2002-01-25 16:39:57 +00:00
vnode_if.pl Throw the $FreeBSD$s back in, properly escaping them. 2002-01-04 05:27:47 +00:00
vnode_if.src KSE Milestone 2 2001-09-12 08:38:13 +00:00