freebsd-nq/sys/kern
Robert Watson 1e4d7da707 Reduce the number of unnecessary unlock-relocks on socket buffer mutexes
associated with performing a wakeup on the socket buffer:

- When performing an sbappend*() followed by a so[rw]wakeup(), explicitly
  acquire the socket buffer lock and use the _locked() variants of both
  calls.  Note that the _locked() sowakeup() versions unlock the mutex on
  return.  This is done in uipc_send(), divert_packet(), mroute
  socket_send(), raw_append(), tcp_reass(), tcp_input(), and udp_append().

- When the socket buffer lock is dropped before a sowakeup(), remove the
  explicit unlock and use the _locked() sowakeup() variant.  This is done
  in soisdisconnecting(), soisdisconnected() when setting the can't send/
  receive flags and dropping data, and in uipc_rcvd() which adjusting
  back-pressure on the sockets.

For UNIX domain sockets running mpsafe with a contention-intensive SMP
mysql benchmark, this results in a 1.6% query rate improvement due to
reduce mutex costs.
2004-06-26 19:10:39 +00:00
..
bus_if.m Introduce BUS_CONFIG_INTR(). The method allows devices to tell parents 2003-09-10 21:37:10 +00:00
clock_if.m
device_if.m
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 Use __FBSDID(). 2003-06-11 00:56:59 +00:00
imgact_elf64.c Use __FBSDID(). 2003-06-11 00:56:59 +00:00
imgact_elf.c Allocate TIDs in thread_init() and deallocate them in thread_fini(). 2004-06-26 18:58:22 +00:00
imgact_gzip.c Locking for the per-process resource limits structure. 2004-02-04 21:52:57 +00:00
imgact_shell.c Use __FBSDID(). 2003-06-11 00:56:59 +00:00
inflate.c Use __FBSDID(). 2003-06-11 00:56:59 +00:00
init_main.c Nice, is a property of a process as a whole.. 2004-06-16 00:26:31 +00:00
init_sysent.c Regenerate after updating syscalls.master. 2004-06-22 04:36:25 +00:00
kern_acct.c Second half of the dev_t cleanup. 2004-06-17 17:16:53 +00:00
kern_acl.c Update my personal copyrights and NETA copyrights in the kernel 2004-02-22 00:33:12 +00:00
kern_alq.c Allow MAC policies to block/revoke kern_alq write access to a file. 2003-10-25 16:10:41 +00:00
kern_clock.c Nice, is a property of a process as a whole.. 2004-06-16 00:26:31 +00:00
kern_condvar.c Associate a simple count of waiters with each condition variable. The 2004-04-06 19:17:46 +00:00
kern_conf.c Fix a few spelling mistakes in comments and clean them up a bit. 2004-06-22 20:22:24 +00:00
kern_context.c Change the clear_ret argument of get_mcontext() to be a flags argument. 2003-11-09 20:31:04 +00:00
kern_descrip.c Explicitly initialize f_data and f_vnode to NULL. 2004-06-19 11:40:08 +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 Add GIANT_REQUIRED to kqueue_close(), since kqueue currently requires 2004-06-01 18:05:41 +00:00
kern_exec.c Move TDF_SA from td_flags to td_pflags (and rename it accordingly) 2004-06-02 07:52:36 +00:00
kern_exit.c (1) Removed the bogus condition "p->p_pid != 1" on calling sched_exit() 2004-06-21 14:49:50 +00:00
kern_fork.c Allocate TIDs in thread_init() and deallocate them in thread_fini(). 2004-06-26 18:58:22 +00:00
kern_idle.c Always set a process' state to normal when it is fully constructed in 2004-02-05 21:01:37 +00:00
kern_intr.c Detect interrupt storms better. The storm detection didn't work at all 2004-06-05 18:27:28 +00:00
kern_jail.c Fix sysctl name: security.jail.getfsstate_getfsstatroot_only -> 2004-05-20 05:28:44 +00:00
kern_kse.c Allocate TIDs in thread_init() and deallocate them in thread_fini(). 2004-06-26 18:58:22 +00:00
kern_kthread.c Use __FBSDID(). 2003-06-11 00:56:59 +00:00
kern_ktr.c Update the license on this file to be a bit more sane. 2003-09-10 01:09:32 +00:00
kern_ktrace.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
kern_linker.c Since we go to the trouble of compiling the kobj ops table for each class, 2004-05-17 21:24:39 +00:00
kern_lock.c Move TDF_DEADLKTREAT into td_pflags (and rename it accordingly) to avoid 2004-06-03 01:47:37 +00:00
kern_lockf.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
kern_mac.c Add /* !MAC */ to final #endif. 2004-05-03 22:54:46 +00:00
kern_malloc.c Bring in mbuma to replace mballoc. 2004-05-31 21:46:06 +00:00
kern_mbuf.c Fix a couple of bugs in the mbuf and packet ctors. In the latter case, 2004-06-01 16:17:10 +00:00
kern_mib.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
kern_module.c Use __FBSDID(). 2003-06-11 00:56:59 +00:00
kern_mtxpool.c Rearrange the SYSINIT order to call lockmgr_init() earlier so that 2003-07-16 01:00:39 +00:00
kern_mutex.c Add a new kernel option MUTEX_WAKE_ALL that changes the mutex unlock code 2004-04-06 19:12:24 +00:00
kern_ntptime.c Annual NTP kernel code spring-cleaning: 2004-03-14 15:23:05 +00:00
kern_physio.c Do the dreaded s/dev_t/struct cdev */ 2004-06-16 09:47:26 +00:00
kern_poll.c Ensure that the poll_burst <= poll_burst_max constraint really holds. 2004-04-15 07:38:44 +00:00
kern_proc.c Fill in the values for the ki_tid and ki_numthreads which have been 2004-06-20 22:17:22 +00:00
kern_prot.c Socket MAC labels so_label and so_peerlabel are now protected by 2004-06-13 02:50:07 +00:00
kern_resource.c Turned off the "calcru: negative time" warning for certain SMP cases 2004-06-21 17:46:27 +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 Second half of the dev_t cleanup. 2004-06-17 17:16:53 +00:00
kern_sig.c Deorbit COMPAT_SUNOS. 2004-06-11 11:16:26 +00:00
kern_subr.c Remove checks for curthread == NULL - it can't happen. 2004-06-03 10:22:47 +00:00
kern_switch.c - style fixes to the critical_exit() KASSERT(). 2004-02-02 08:13:27 +00:00
kern_sx.c Fix _sx_assert() to panic() rather than printf() when an assertion fails 2004-02-27 16:13:44 +00:00
kern_synch.c Remove a stale and misleading comment. 2004-06-07 09:35:00 +00:00
kern_syscalls.c Use __FBSDID(). 2003-06-11 00:56:59 +00:00
kern_sysctl.c Make sysctl_wire_old_buffer() respect ENOMEM from vslock() by marking 2004-06-11 02:20:37 +00:00
kern_tc.c Just because the timecounter reads the same value on two samples 2004-03-04 14:14:23 +00:00
kern_thr.c Allocate TIDs in thread_init() and deallocate them in thread_fini(). 2004-06-26 18:58:22 +00:00
kern_thread.c Allocate TIDs in thread_init() and deallocate them in thread_fini(). 2004-06-26 18:58:22 +00:00
kern_time.c Update previous commit to: 2004-06-21 22:34:57 +00:00
kern_timeout.c The paper "Hashed Timers and Hierarchical Wheels: Data Structures for the 2004-04-25 04:10:17 +00:00
kern_umtx.c Use the proc lock to sleep on a libthr umtx. 2004-03-27 14:32:03 +00:00
kern_uuid.c Fix generation of random multicast MAC address. 2004-01-22 13:34:11 +00:00
kern_xxx.c Deorbit COMPAT_SUNOS. 2004-06-11 11:16:26 +00:00
ksched.c sched_setscheduler: Return EINVAL when a invalid policy is specified, 2003-09-13 18:46:24 +00:00
link_elf_obj.c Change strategy based on a suggestion from Ian Dowse. Instead of trying 2004-06-15 23:57:02 +00:00
link_elf.c Include <sys/gmon.h> instead of <machine/profile.h> for the declaration 2004-05-19 14:36:38 +00:00
linker_if.m The method link_preload_finish is not static. 2003-09-20 17:39:32 +00:00
Make.tags.inc
Makefile
makesyscalls.sh Remove the namespace column from the syscalls tables. We don't actually 2003-12-23 03:50:43 +00:00
md4c.c Use __FBSDID(). 2003-06-11 00:56:59 +00:00
md5c.c Revert stuff which accidentally ended up in the previous commit. 2003-07-22 10:36:36 +00:00
p1003_1b.c Use __FBSDID(). 2003-06-11 06:34:30 +00:00
posix4_mib.c Use __FBSDID(). 2003-06-11 06:34:30 +00:00
sched_4bsd.c Fix another typo in the previous commit. 2004-06-21 23:47:47 +00:00
sched_ule.c Add the sysctl node 'kern.sched.name' that has the name of the scheduler 2004-06-21 22:05:46 +00:00
subr_acl_posix1e.c Update my personal copyrights and NETA copyrights in the kernel 2004-02-22 00:33:12 +00:00
subr_autoconf.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
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 Do the dreaded s/dev_t/struct cdev */ 2004-06-16 09:47:26 +00:00
subr_clist.c Revert stuff which accidentally ended up in the previous commit. 2003-07-22 10:36:36 +00:00
subr_clock.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
subr_devstat.c Do the dreaded s/dev_t/struct cdev */ 2004-06-16 09:47:26 +00:00
subr_disk.c Report bio_pblkbo instead of bio_blkno. 2003-10-18 17:27:10 +00:00
subr_eventhandler.c Use __FBSDID(). 2003-06-11 00:56:59 +00:00
subr_hints.c Add a resource_disabled() helper function that returns true (non-zero) if 2003-07-02 16:01:38 +00:00
subr_kobj.c * Add multiple inheritance to kobj. Each class can have zero or more base 2003-10-16 09:16:28 +00:00
subr_log.c Do the dreaded s/dev_t/struct cdev */ 2004-06-16 09:47:26 +00:00
subr_mbpool.c Pass MTX_DEF as the last argument to mtx_init() instead of 0. This 2003-12-07 21:53:41 +00:00
subr_mchain.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
subr_module.c Use __FBSDID(). 2003-06-11 00:56:59 +00:00
subr_msgbuf.c Put the message about msgbuf cksum mismatch under bootverbose and tell 2003-09-05 11:12:00 +00:00
subr_param.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
subr_pcpu.c Use __FBSDID(). 2003-06-11 00:56:59 +00:00
subr_power.c Move the kernel power change printf under bootverbose since the 2004-01-02 18:24:13 +00:00
subr_prf.c Add a sysctl/tunable, "kern.always_console_output", that lets you set 2004-06-18 20:12:42 +00:00
subr_prof.c Enable MI bits for gcc -ftest-coverage -fprofile-arcs on amd64. 2004-05-29 01:18:14 +00:00
subr_rman.c Fix off by one error, twice. 2004-04-12 23:02:21 +00:00
subr_rtc.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
subr_sbuf.c Mechanical whistespace cleanup. 2004-02-17 10:21:03 +00:00
subr_scanf.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
subr_sleepqueue.c Fixed some common printf format errors. Don't assume that "struct foo *" 2004-05-14 20:51:42 +00:00
subr_smp.c Move the CPU newbus attachment to i386 legacy. The acpi_cpu device will 2004-05-06 15:54:02 +00:00
subr_taskqueue.c Tidy up the thread taskqueue implementation and close a lost wakeup race. 2004-02-19 22:03:52 +00:00
subr_trap.c Remove unused variable. 2004-03-31 08:20:44 +00:00
subr_turnstile.c Rename turnstile_wakeup() to turnstile_broadcast() to make the naming 2004-04-06 19:07:21 +00:00
subr_witness.c Introduce socket and UNIX domain socket locks into hard-coded lock 2004-06-13 00:23:03 +00:00
sys_generic.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
sys_pipe.c Revise the direct or optimized case to use uiomove_fromphys() by the reader 2004-03-27 19:50:23 +00:00
sys_process.c Finish fixing up Alpha to work with an MP safe ptrace(): 2004-04-01 20:56:44 +00:00
sys_socket.c Annotate two intentionally unlocked reads with comments. 2004-06-20 17:35:50 +00:00
syscalls.c Regenerate after updating syscalls.master. 2004-06-22 04:36:25 +00:00
syscalls.master Mark unlink() as MPSAFE as we now acquire Giant in the unlink() 2004-06-22 04:34:55 +00:00
sysv_ipc.c Use __FBSDID(). 2003-06-11 00:56:59 +00:00
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 When no fixed address is given in a shmat() request, pass a hint address 2004-06-19 14:46:13 +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 Do the dreaded s/dev_t/struct cdev */ 2004-06-16 09:47:26 +00:00
tty_cons.c Second half of the dev_t cleanup. 2004-06-17 17:16:53 +00:00
tty_pty.c Gah! commit from wrong tree. 2004-06-25 22:10:20 +00:00
tty_subr.c Revert stuff which accidentally ended up in the previous commit. 2003-07-22 10:36:36 +00:00
tty_tty.c Second half of the dev_t cleanup. 2004-06-17 17:16:53 +00:00
tty.c Pick the hotchar out of the tty structure instead of caching private 2004-06-26 09:20:07 +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 In some cases, sf_buf_alloc() should sleep with pri PCATCH; in others, it 2004-04-03 09:16:27 +00:00
uipc_domain.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
uipc_jumbo.c Lock the vm object when removing a page. 2003-06-11 21:23:04 +00:00
uipc_mbuf2.c Bring in mbuma to replace mballoc. 2004-05-31 21:46:06 +00:00
uipc_mbuf.c Gah! Plug a mbuf leak I introduced in the last commit. 2004-06-11 18:17:25 +00:00
uipc_proto.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
uipc_sem.c Add missing #include <sys/module.h> 2004-05-30 20:34:58 +00:00
uipc_sockbuf.c Reduce the number of unnecessary unlock-relocks on socket buffer mutexes 2004-06-26 19:10:39 +00:00
uipc_socket2.c Reduce the number of unnecessary unlock-relocks on socket buffer mutexes 2004-06-26 19:10:39 +00:00
uipc_socket.c Replace comment on spl state when calling soabort() with a comment on 2004-06-26 17:12:29 +00:00
uipc_syscalls.c Acquire socket lock in the "waiting for connection" loop in 2004-06-24 01:43:23 +00:00
uipc_usrreq.c Reduce the number of unnecessary unlock-relocks on socket buffer mutexes 2004-06-26 19:10:39 +00:00
vfs_acl.c Update my personal copyrights and NETA copyrights in the kernel 2004-02-22 00:33:12 +00:00
vfs_aio.c Merge additional socket buffer locking from rwatson_netperf: 2004-06-17 22:48:11 +00:00
vfs_bio.c Second half of the dev_t cleanup. 2004-06-17 17:16:53 +00:00
vfs_cache.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
vfs_cluster.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
vfs_default.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
vfs_export.c Include <sys/mutex.h> and its prerequisite <sys/lock.h> instesd of depending 2004-04-21 12:10:30 +00:00
vfs_extattr.c Don't cuddle else's so much as we removed additional parts of each 2004-06-24 17:22:29 +00:00
vfs_init.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
vfs_lookup.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
vfs_mount.c Initialize ni_cnd.cn_cred before calling lookup() (this is normally done 2004-06-20 17:31:01 +00:00
vfs_subr.c Second half of the dev_t cleanup. 2004-06-17 17:16:53 +00:00
vfs_syscalls.c Don't cuddle else's so much as we removed additional parts of each 2004-06-24 17:22:29 +00:00
vfs_vnops.c Change the types of vn_rdwr_inchunks()'s len and aresid arguments to 2004-06-05 02:18:28 +00:00
vnode_if.src Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00