freebsd-nq/sys/kern
Robert Watson 76f6939888 Expand the scope of the socket buffer locks in sopoll() to include the
state test as well as set, or we risk a race between a socket wakeup
and registering for select() or poll() on the socket.  This does
increase the cost of the poll operation, but can probably be optimized
some in the future.

This appears to correct poll() "wedges" experienced with X11 on SMP
systems with highly interactive applications, and might affect a plethora
of other select() driven applications.

RELENG_5 candidate.

Problem reported by:	Maxim Maximov <mcsi at mcsi dot pp dot ru>
Debugged with help of:	dwhite
2004-09-05 14:33:21 +00:00
..
bus_if.m Minor formatting fixes for lines > 80 characters 2004-08-12 17:26:22 +00:00
clock_if.m
device_if.m Minor formatting fixes for lines > 80 characters 2004-08-12 17:26:22 +00:00
genassym.sh
imgact_aout.c Change the types of vn_rdwr_inchunks()'s len and aresid arguments to 2004-06-05 02:18:28 +00:00
imgact_elf32.c
imgact_elf64.c
imgact_elf.c Add __elfN(dump_thread). This function is called from __elfN(coredump) 2004-08-11 02:35:06 +00:00
imgact_gzip.c
imgact_shell.c
inflate.c
init_main.c Refactor a bunch of scheduler code to give basically the same behaviour 2004-09-05 02:09:54 +00:00
init_sysent.c Give kldunload a -f(orce) argument. 2004-07-13 19:36:59 +00:00
kern_acct.c Second half of the dev_t cleanup. 2004-06-17 17:16:53 +00:00
kern_acl.c Rename suser_cred()'s PRISON_ROOT flag to SUSER_ALLOWJAIL. This is 2004-07-26 07:24:04 +00:00
kern_alq.c
kern_clock.c Update for the KDB framework: 2004-07-10 21:36:01 +00:00
kern_condvar.c Now that the return value semantics of cv's for multithreaded processes 2004-08-19 11:31:42 +00:00
kern_conf.c Add a missing '\n'. 2004-08-30 01:10:20 +00:00
kern_context.c
kern_descrip.c Remove GIANT_REQUIRED from setugidsafety() as knote_fdclose() no longer 2004-08-19 14:59:51 +00:00
kern_environment.c If the buffer supplied to kenv(KENV_DUMP, ...) isn't big enough, 2004-04-28 01:27:33 +00:00
kern_event.c Allocate the marker, when scanning a kqueue, from the "heap" instead of the 2004-08-16 03:08:38 +00:00
kern_exec.c Refactor a bunch of scheduler code to give basically the same behaviour 2004-09-05 02:09:54 +00:00
kern_exit.c Refactor a bunch of scheduler code to give basically the same behaviour 2004-09-05 02:09:54 +00:00
kern_fork.c Refactor a bunch of scheduler code to give basically the same behaviour 2004-09-05 02:09:54 +00:00
kern_idle.c Give the 4bsd scheduler the ability to wake up idle processors 2004-09-01 06:42:02 +00:00
kern_intr.c Refactor a bunch of scheduler code to give basically the same behaviour 2004-09-05 02:09:54 +00:00
kern_jail.c Add two missing includes and remove two uneeded. 2004-06-27 09:03:22 +00:00
kern_kse.c Refactor a bunch of scheduler code to give basically the same behaviour 2004-09-05 02:09:54 +00:00
kern_kthread.c Give setrunqueue() and sched_add() more of a clue as to 2004-09-01 02:11:28 +00:00
kern_ktr.c Export KTR_COMPILE as a sysctl so you can easily check from user space 2004-07-23 17:41:44 +00:00
kern_ktrace.c Rename suser_cred()'s PRISON_ROOT flag to SUSER_ALLOWJAIL. This is 2004-07-26 07:24:04 +00:00
kern_linker.c When trying each linker class in turn with a preloaded module, exit 2004-08-27 01:20:26 +00:00
kern_lock.c Reintroduce slightly modified patch from kern/69964. Check for 2004-08-27 01:41:28 +00:00
kern_lockf.c
kern_mac.c Do a pass over all modules in the kernel and make them return EOPNOTSUPP 2004-07-15 08:26:07 +00:00
kern_malloc.c Reimplement contigmalloc(9) with an algorithm which stands a greatly- 2004-07-19 06:21:27 +00:00
kern_mbuf.c * Add a "how" argument to uma_zone constructors and initialization functions 2004-08-02 00:18:36 +00:00
kern_mib.c
kern_module.c Don't bother calling the module event handlers from module_shutdown() 2004-08-20 21:47:48 +00:00
kern_mtxpool.c
kern_mutex.c Turn PREEMPTION into a kernel option. Make sure that it's defined if 2004-09-02 18:59:15 +00:00
kern_ntptime.c
kern_physio.c Eliminate the acquisition and release of Giant within physio(). Remove 2004-08-10 21:47:11 +00:00
kern_poll.c Add a NULL param to an mi_switch() that I missed. 2004-07-03 02:38:03 +00:00
kern_proc.c Refactor a bunch of scheduler code to give basically the same behaviour 2004-09-05 02:09:54 +00:00
kern_prot.c Remove sched_free_thread() which was only used 2004-08-31 06:12:13 +00:00
kern_resource.c Push UIDINFO_UNLOCK() slightly earlier in chgsbize(), as it's not 2004-08-06 22:04:33 +00:00
kern_sema.c Change the return value of sema_timedwait() so it returns 0 on 2004-06-14 18:19:05 +00:00
kern_shutdown.c Turn PREEMPTION into a kernel option. Make sure that it's defined if 2004-09-02 18:59:15 +00:00
kern_sig.c Remove an unneeded argument.. 2004-08-31 07:34:54 +00:00
kern_subr.c Clean up and wash struct iovec and struct uio handling. 2004-07-10 15:42:16 +00:00
kern_switch.c Refactor a bunch of scheduler code to give basically the same behaviour 2004-09-05 02:09:54 +00:00
kern_sx.c
kern_synch.c Refactor a bunch of scheduler code to give basically the same behaviour 2004-09-05 02:09:54 +00:00
kern_syscalls.c Do a pass over all modules in the kernel and make them return EOPNOTSUPP 2004-07-15 08:26:07 +00:00
kern_sysctl.c Avoid casts as lvalues. 2004-07-28 06:42:41 +00:00
kern_tc.c Add some KASSERTS. 2004-08-14 08:33:49 +00:00
kern_thr.c Refactor a bunch of scheduler code to give basically the same behaviour 2004-09-05 02:09:54 +00:00
kern_thread.c Refactor a bunch of scheduler code to give basically the same behaviour 2004-09-05 02:09:54 +00:00
kern_time.c Update previous commit to: 2004-06-21 22:34:57 +00:00
kern_timeout.c Cut a KTR record whenever a callout is invoked. Mark whether it runs 2004-08-06 21:49:00 +00:00
kern_umtx.c writers must hold both sched_lock and the process lock; therefore, readers 2004-07-12 15:28:31 +00:00
kern_uuid.c
kern_xxx.c Rename suser_cred()'s PRISON_ROOT flag to SUSER_ALLOWJAIL. This is 2004-07-26 07:24:04 +00:00
ksched.c
link_elf_obj.c Add support for completing the installation of ELF relocatable 2004-08-29 01:21:51 +00:00
link_elf.c Normalize the VM wiring done with SPARSE_MAPPING: check for errors, and 2004-08-09 18:46:13 +00:00
linker_if.m
Make.tags.inc
Makefile
makesyscalls.sh
md4c.c
md5c.c
p1003_1b.c
posix4_mib.c
sched_4bsd.c turn on IPIs for 4bsd scheduler by default. 2004-09-05 02:19:53 +00:00
sched_ule.c Refactor a bunch of scheduler code to give basically the same behaviour 2004-09-05 02:09:54 +00:00
subr_acl_posix1e.c Rename suser_cred()'s PRISON_ROOT flag to SUSER_ALLOWJAIL. This is 2004-07-26 07:24:04 +00:00
subr_autoconf.c
subr_blist.c Move the definitions of SWAPBLK_NONE and SWAPBLK_MASK from vm_page.h to 2004-06-04 04:03:26 +00:00
subr_bus.c Fix BUS_DEBUG case 2004-08-30 05:48:49 +00:00
subr_clist.c Preparation commit for the tty cleanups that will follow in the near 2004-07-15 20:47:41 +00:00
subr_clock.c
subr_devstat.c Do the dreaded s/dev_t/struct cdev */ 2004-06-16 09:47:26 +00:00
subr_disk.c Add bioq_takefirst(). 2004-08-19 19:51:51 +00:00
subr_eventhandler.c
subr_hints.c
subr_kdb.c Make debug.kdb.stop_cpus also a TUNABLE() so it can be set prior to boot 2004-08-22 15:10:52 +00:00
subr_kobj.c
subr_log.c Do the dreaded s/dev_t/struct cdev */ 2004-06-16 09:47:26 +00:00
subr_mbpool.c
subr_mchain.c
subr_module.c
subr_msgbuf.c
subr_param.c
subr_pcpu.c
subr_power.c
subr_prf.c Update for the KDB framework: 2004-07-10 21:43:23 +00:00
subr_prof.c - Move TDF_OWEPREEMPT, TDF_OWEUPC, and TDF_USTATCLOCK over to td_pflags 2004-07-16 21:04:55 +00:00
subr_rman.c Add a newline. 2004-08-19 20:16:09 +00:00
subr_rtc.c
subr_sbuf.c Cosmetic adjustment to previous commit: name the second argument to 2004-07-09 11:37:44 +00:00
subr_scanf.c
subr_sleepqueue.c Now that the return value semantics of cv's for multithreaded processes 2004-08-19 11:31:42 +00:00
subr_smp.c Move 4bsd specific experimental IP code into the 4bsd file. 2004-09-03 07:42:31 +00:00
subr_taskqueue.c rearange some code that handles the thread taskqueue so that it is more 2004-08-08 02:37:22 +00:00
subr_trap.c Remove an unneeded argument.. 2004-08-31 07:34:54 +00:00
subr_turnstile.c Give setrunqueue() and sched_add() more of a clue as to 2004-09-01 02:11:28 +00:00
subr_witness.c Remove a potential deadlock on i386 SMP by changing the lazypmap ipi and 2004-08-04 20:31:19 +00:00
sys_generic.c Poll() uses the array smallbits that is big enough to hold 32 struct 2004-08-27 21:23:50 +00:00
sys_pipe.c Major enhancements to pipe memory usage: 2004-08-16 01:27:24 +00:00
sys_process.c Add pl_flags to ptrace_lwpinfo, two flags PL_FLAG_SA and PL_FLAG_BOUND 2004-08-08 22:26:11 +00:00
sys_socket.c Push Giant acquisition down into fo_stat() from most callers. Acquire 2004-07-22 20:40:23 +00:00
syscalls.c Give kldunload a -f(orce) argument. 2004-07-13 19:36:59 +00:00
syscalls.master Add kldunloadf() system call. Stay tuned for follwing commit messages. 2004-07-13 19:35:11 +00:00
sysv_ipc.c
sysv_msg.c Add missing #include <sys/module.h> 2004-05-30 20:34:58 +00:00
sysv_sem.c Add missing #include <sys/module.h> 2004-05-30 20:34:58 +00:00
sysv_shm.c Push Giant deep into vm_forkproc(), acquiring it only if the process has 2004-09-03 05:11:32 +00:00
tty_compat.c Put the pre FreeBSD-2.x tty compat code under BURN_BRIDGES. 2004-06-21 22:57:16 +00:00
tty_conf.c Preparation commit for the tty cleanups that will follow in the near 2004-07-15 20:47:41 +00:00
tty_cons.c Add locking to the kqueue subsystem. This also makes the kqueue subsystem 2004-08-15 06:24:42 +00:00
tty_pty.c Preparation commit for the tty cleanups that will follow in the near 2004-07-15 20:47:41 +00:00
tty_subr.c Preparation commit for the tty cleanups that will follow in the near 2004-07-15 20:47:41 +00:00
tty_tty.c Second half of the dev_t cleanup. 2004-06-17 17:16:53 +00:00
tty.c Add locking to the kqueue subsystem. This also makes the kqueue subsystem 2004-08-15 06:24:42 +00:00
uipc_accf.c Add a global mutex, accept_filter_mtx, to protect the global list of 2004-06-01 04:08:48 +00:00
uipc_cow.c
uipc_domain.c
uipc_jumbo.c Use kmem_alloc_nofault() rather than kmem_alloc_pageable() for allocating 2004-07-23 19:36:18 +00:00
uipc_mbuf2.c Make sure we don't call mbuf allocation functions with mutexes held. 2004-07-21 07:12:24 +00:00
uipc_mbuf.c Back out just a portion of Alfred's last commit. Remove the MBUF_CHECK 2004-07-21 21:03:01 +00:00
uipc_proto.c
uipc_sem.c Add missing #include <sys/module.h> 2004-05-30 20:34:58 +00:00
uipc_sockbuf.c Add locking to the kqueue subsystem. This also makes the kqueue subsystem 2004-08-15 06:24:42 +00:00
uipc_socket2.c Add locking to the kqueue subsystem. This also makes the kqueue subsystem 2004-08-15 06:24:42 +00:00
uipc_socket.c Expand the scope of the socket buffer locks in sopoll() to include the 2004-09-05 14:33:21 +00:00
uipc_syscalls.c Add locking to the kqueue subsystem. This also makes the kqueue subsystem 2004-08-15 06:24:42 +00:00
uipc_usrreq.c Don't hold the UNIX domain socket subsystem lock over the body of the 2004-08-25 21:24:36 +00:00
vfs_acl.c Rename suser_cred()'s PRISON_ROOT flag to SUSER_ALLOWJAIL. This is 2004-07-26 07:24:04 +00:00
vfs_aio.c Tag AIO as requiring Giant over the network stack using 2004-09-03 03:19:14 +00:00
vfs_bio.c Eliminate unused second argument to reassignbuf() and simplify it 2004-07-25 21:24:23 +00:00
vfs_cache.c
vfs_cluster.c Eliminate unused second argument to reassignbuf() and simplify it 2004-07-25 21:24:23 +00:00
vfs_default.c Make VFS_ROOT() and vflush() take a thread argument. 2004-07-12 08:14:09 +00:00
vfs_export.c Make VFS_ROOT() and vflush() take a thread argument. 2004-07-12 08:14:09 +00:00
vfs_extattr.c Rename suser_cred()'s PRISON_ROOT flag to SUSER_ALLOWJAIL. This is 2004-07-26 07:24:04 +00:00
vfs_init.c Put a version element in the VFS filesystem configuration structure 2004-07-30 22:08:52 +00:00
vfs_lookup.c Assert Giant in namei(). Bugs have been reported in which, following 2004-08-04 18:39:07 +00:00
vfs_mount.c Put a version element in the VFS filesystem configuration structure 2004-07-30 22:08:52 +00:00
vfs_subr.c Don't attempt to trigger the syncer thread final sync code in the 2004-08-20 19:21:47 +00:00
vfs_syscalls.c Rename suser_cred()'s PRISON_ROOT flag to SUSER_ALLOWJAIL. This is 2004-07-26 07:24:04 +00:00
vfs_vnops.c Add locking to the kqueue subsystem. This also makes the kqueue subsystem 2004-08-15 06:24:42 +00:00
vnode_if.src