freebsd-skq/sys/kern
bmilekic f364d4ac36 Change and clean the mutex lock interface.
mtx_enter(lock, type) becomes:

mtx_lock(lock) for sleep locks (MTX_DEF-initialized locks)
mtx_lock_spin(lock) for spin locks (MTX_SPIN-initialized)

similarily, for releasing a lock, we now have:

mtx_unlock(lock) for MTX_DEF and mtx_unlock_spin(lock) for MTX_SPIN.
We change the caller interface for the two different types of locks
because the semantics are entirely different for each case, and this
makes it explicitly clear and, at the same time, it rids us of the
extra `type' argument.

The enter->lock and exit->unlock change has been made with the idea
that we're "locking data" and not "entering locked code" in mind.

Further, remove all additional "flags" previously passed to the
lock acquire/release routines with the exception of two:

MTX_QUIET and MTX_NOSWITCH

The functionality of these flags is preserved and they can be passed
to the lock/unlock routines by calling the corresponding wrappers:

mtx_{lock, unlock}_flags(lock, flag(s)) and
mtx_{lock, unlock}_spin_flags(lock, flag(s)) for MTX_DEF and MTX_SPIN
locks, respectively.

Re-inline some lock acq/rel code; in the sleep lock case, we only
inline the _obtain_lock()s in order to ensure that the inlined code
fits into a cache line. In the spin lock case, we inline recursion and
actually only perform a function call if we need to spin. This change
has been made with the idea that we generally tend to avoid spin locks
and that also the spin locks that we do have and are heavily used
(i.e. sched_lock) do recurse, and therefore in an effort to reduce
function call overhead for some architectures (such as alpha), we
inline recursion for this case.

Create a new malloc type for the witness code and retire from using
the M_DEV type. The new type is called M_WITNESS and is only declared
if WITNESS is enabled.

Begin cleaning up some machdep/mutex.h code - specifically updated the
"optimized" inlined code in alpha/mutex.h and wrote MTX_LOCK_SPIN
and MTX_UNLOCK_SPIN asm macros for the i386/mutex.h as we presently
need those.

Finally, caught up to the interface changes in all sys code.

Contributors: jake, jhb, jasone (in no particular order)
2001-02-09 06:11:45 +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 Change and clean the mutex lock interface. 2001-02-09 06:11:45 +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 Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_condvar.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +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 Convert more malloc+bzero to malloc+M_ZERO. 2000-12-08 21:51:06 +00:00
kern_environment.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_event.c Proc locking. 2001-01-24 00:35:12 +00:00
kern_exec.c Fix typo: seperate -> separate. 2001-02-06 11:21:58 +00:00
kern_exit.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_fork.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_idle.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_intr.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +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 Use PCPU_GET, PCPU_PTR and PCPU_SET to access all per-cpu variables 2001-01-10 04:43:51 +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 Change and clean the mutex lock interface. 2001-02-09 06:11:45 +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 Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +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 and clean the mutex lock interface. 2001-02-09 06:11:45 +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 Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_prot.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +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 Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_shutdown.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_sig.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_subr.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_switch.c Use PCPU_GET, PCPU_PTR and PCPU_SET to access all per-cpu variables 2001-01-10 04:43:51 +00:00
kern_synch.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +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 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
ksched.c Remove unneeded #include <sys/kernel.h> 2000-04-29 15:36:14 +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 Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +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 Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
subr_taskqueue.c Staticize some malloc M_ instances. 2000-12-08 20:09:00 +00:00
subr_trap.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
subr_turnstile.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
subr_witness.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
subr_xxx.c Remove five now unused fields from struct cdevsw. They should never 1999-09-25 18:24:47 +00:00
sys_generic.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
sys_pipe.c Style improvements for last fix. Should be functionally the same. 2001-01-11 00:13:54 +00:00
sys_process.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
sys_socket.c Instead of just blindly setting -rw-rw-rw-: 2000-07-02 23:56:45 +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 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
tty_conf.c Don't refer to TABLDISC in the comments here. 2000-01-30 10:14:13 +00:00
tty_cons.c Replace logwakeup() with "int msgbuftrigger". There is little 2000-12-20 21:50:37 +00:00
tty_pty.c Convert more malloc+bzero to malloc+M_ZERO. 2000-12-08 21:51:06 +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 Change and clean the mutex lock interface. 2001-02-09 06:11:45 +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 * Have m_pulldown() use the new M_WRITABLE() macro in order to determine 2000-11-11 23:04:15 +00:00
uipc_mbuf.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +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 First step towards an MP-safe zone allocator: 2001-01-21 22:23:11 +00:00
uipc_syscalls.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +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 Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
vfs_export.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
vfs_extattr.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +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 Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
vfs_syscalls.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
vfs_vnops.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +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 Give vop_mmap an untimely death. The opportunity to give it a timely 2000-11-01 17:57:24 +00:00