freebsd-skq/sys/kern
John Baldwin 192846463a Rework the witness code to work with sx locks as well as mutexes.
- Introduce lock classes and lock objects.  Each lock class specifies a
  name and set of flags (or properties) shared by all locks of a given
  type.  Currently there are three lock classes: spin mutexes, sleep
  mutexes, and sx locks.  A lock object specifies properties of an
  additional lock along with a lock name and all of the extra stuff needed
  to make witness work with a given lock.  This abstract lock stuff is
  defined in sys/lock.h.  The lockmgr constants, types, and prototypes have
  been moved to sys/lockmgr.h.  For temporary backwards compatability,
  sys/lock.h includes sys/lockmgr.h.
- Replace proc->p_spinlocks with a per-CPU list, PCPU(spinlocks), of spin
  locks held.  By making this per-cpu, we do not have to jump through
  magic hoops to deal with sched_lock changing ownership during context
  switches.
- Replace proc->p_heldmtx, formerly a list of held sleep mutexes, with
  proc->p_sleeplocks, which is a list of held sleep locks including sleep
  mutexes and sx locks.
- Add helper macros for logging lock events via the KTR_LOCK KTR logging
  level so that the log messages are consistent.
- Add some new flags that can be passed to mtx_init():
  - MTX_NOWITNESS - specifies that this lock should be ignored by witness.
    This is used for the mutex that blocks a sx lock for example.
  - MTX_QUIET - this is not new, but you can pass this to mtx_init() now
    and no events will be logged for this lock, so that one doesn't have
    to change all the individual mtx_lock/unlock() operations.
- All lock objects maintain an initialized flag.  Use this flag to export
  a mtx_initialized() macro that can be safely called from drivers.  Also,
  we on longer walk the all_mtx list if MUTEX_DEBUG is defined as witness
  performs the corresponding checks using the initialized flag.
- The lock order reversal messages have been improved to output slightly
  more accurate file and line numbers.
2001-03-28 09:03:24 +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 Do not set a default ELF syscall ABI fallback. 2001-03-04 11:58:50 +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 Do not set a default ELF syscall ABI fallback. 2001-03-04 11:58:50 +00:00
init_sysent.c o Rename "namespace" argument to "attrnamespace" as namespace is a C++ 2001-03-19 05:48:58 +00:00
kern_acct.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_acl.c o Introduce filesystem-independent POSIX.1e ACL utility routines to 2001-03-06 17:28:24 +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 Rework the witness code to work with sx locks as well as mutexes. 2001-03-28 09:03:24 +00:00
kern_conf.c Add a KASSERT on unit2minor() so that we catch it if people try to pass 2001-03-20 13:24:24 +00:00
kern_descrip.c Send the remains (such as I have located) of "block major numbers" to 2001-03-26 12:41:29 +00:00
kern_environment.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_event.c Add an EV_SET() convenience macro for initializing struct kevent prior 2001-02-24 01:44:03 +00:00
kern_exec.c Proc locking. 2001-03-07 03:27:32 +00:00
kern_exit.c - Call proc_reparent() when handing a process off to init in exit rather 2001-03-07 02:22:31 +00:00
kern_fork.c Rework the witness code to work with sx locks as well as mutexes. 2001-03-28 09:03:24 +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 Catch up to the mtx_saveintr -> mtx_savecrit change. 2001-03-28 02:46:21 +00:00
kern_jail.c o Move per-process jail pointer (p->pr_prison) to inside of the subject 2001-02-21 06:39:57 +00:00
kern_kthread.c - Use _PHOLD and move it before a PROC_UNLOCK to reduce the number of 2001-03-07 02:36:47 +00:00
kern_ktr.c Switch from save/disable/restore_intr() to critical_enter/exit(). 2001-03-28 03:06:10 +00:00
kern_ktrace.c o Move per-process jail pointer (p->pr_prison) to inside of the subject 2001-02-21 06:39:57 +00:00
kern_linker.c o Actually extract version of interface and store it along with the name. 2001-03-22 08:58:45 +00:00
kern_lock.c Proc locking. 2001-02-09 16:27:41 +00:00
kern_lockf.c Protect p_wmesg and p_wchan with sched_lock while checking for deadlocks 2001-03-24 03:57:44 +00:00
kern_malloc.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_mib.c o Move per-process jail pointer (p->pr_prison) to inside of the subject 2001-02-21 06:39:57 +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 Rework the witness code to work with sx locks as well as mutexes. 2001-03-28 09:03:24 +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 Don't leak the memory we've just malloced if we can't find the 2001-03-27 20:49:51 +00:00
kern_prot.c Just use the proc lock to protect read accesses to p_pptr rather than the 2001-03-24 04:00:01 +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 Don't call malloc with M_WAITOK while holding a mutex. 2001-03-09 18:40:34 +00:00
kern_shutdown.c Last commit was broken.. It always prints '[CTRL-C to abort]'. 2001-03-28 01:37:29 +00:00
kern_sig.c - Resort some includes to deal with the new witness code coming in shortly. 2001-03-28 08:41:04 +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 Jake essentially rewrote this. It is not by any stretch of the 2001-03-15 05:02:08 +00:00
kern_sx.c Rework the witness code to work with sx locks as well as mutexes. 2001-03-28 09:03:24 +00:00
kern_synch.c Rework the witness code to work with sx locks as well as mutexes. 2001-03-28 09:03:24 +00:00
kern_syscalls.c sysvipc loadable. 2000-12-01 08:57:47 +00:00
kern_sysctl.c Make the SYSCTL_OUT handlers sysctl_old_user() and sysctl_old_kernel() 2001-03-08 01:20:43 +00:00
kern_tc.c Remove a bogus #ifdef KTR stanza. 2001-01-01 23:09:53 +00:00
kern_time.c Lock the process while sending it SIGARLM and updating p_realtimer. 2001-03-07 03:02:56 +00:00
kern_timeout.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
kern_xxx.c This is kind of a hack, but it should work. Currently, world is broken 2001-03-24 04:40:49 +00:00
ksched.c Lock need_resched with sched_lock. 2001-02-22 13:46:09 +00:00
link_aout.c Manually add an extra _ to _DYNAMIC since it is provided by ld, not gcc. 2001-02-25 07:25:05 +00:00
link_elf_obj.c Make this compile in a.out mode. link.h has extra dependencies for a.out. 2001-02-25 07:26:54 +00:00
link_elf.c Make this compile in a.out mode. link.h has extra dependencies for a.out. 2001-02-25 07:26:54 +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 o Introduce filesystem-independent POSIX.1e ACL utility routines to 2001-03-06 17:28:24 +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 Make cblock_alloc_cblocks() spell its own name 2001-03-27 10:21:26 +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 Dont call device close and ioctl functions if device has disappeared. 2001-03-13 08:45:05 +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 Send the remains (such as I have located) of "block major numbers" to 2001-03-26 12:41:29 +00:00
subr_mchain.c Remove superfluous m_pkthdr.rcv_if = NULL assignment following 2001-02-25 06:33:50 +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 Switch from save/disable/restore_intr() to critical_enter/exit(). 2001-03-28 03:06:10 +00:00
subr_rman.c Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
subr_sbuf.c Rewrite of the CAM error recovery code. 2001-03-27 05:45:52 +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 Rework the witness code to work with sx locks as well as mutexes. 2001-03-28 09:03:24 +00:00
subr_taskqueue.c - Catch up to the new swi API changes: 2001-02-09 17:46:35 +00:00
subr_trap.c - Release Giant a bit earlier on syscall exit. 2001-03-07 03:53:39 +00:00
subr_turnstile.c Rework the witness code to work with sx locks as well as mutexes. 2001-03-28 09:03:24 +00:00
subr_witness.c Rework the witness code to work with sx locks as well as mutexes. 2001-03-28 09:03:24 +00:00
subr_xxx.c Extend kqueue down to the device layer. 2001-02-15 16:34:11 +00:00
sys_generic.c Grab the process lock while calling psignal and before calling psignal. 2001-03-07 03:37:06 +00:00
sys_pipe.c Extend kqueue down to the device layer. 2001-02-15 16:34:11 +00:00
sys_process.c - Proc locking. 2001-03-07 03:06:18 +00:00
sys_socket.c Extend kqueue down to the device layer. 2001-02-15 16:34:11 +00:00
syscalls.c o Rename "namespace" argument to "attrnamespace" as namespace is a C++ 2001-03-19 05:48:58 +00:00
syscalls.master o Rename "namespace" argument to "attrnamespace" as namespace is a C++ 2001-03-19 05:44:15 +00:00
sysv_ipc.c sysvipc loadable. 2000-12-01 08:57:47 +00:00
sysv_msg.c o Move per-process jail pointer (p->pr_prison) to inside of the subject 2001-02-21 06:39:57 +00:00
sysv_sem.c o Move per-process jail pointer (p->pr_prison) to inside of the subject 2001-02-21 06:39:57 +00:00
sysv_shm.c o Move per-process jail pointer (p->pr_prison) to inside of the subject 2001-02-21 06:39:57 +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 Send the remains (such as I have located) of "block major numbers" to 2001-03-26 12:41:29 +00:00
tty_pty.c Send the remains (such as I have located) of "block major numbers" to 2001-03-26 12:41:29 +00:00
tty_snoop.c Send the remains (such as I have located) of "block major numbers" to 2001-03-26 12:41:29 +00:00
tty_subr.c Make cblock_alloc_cblocks() spell its own name 2001-03-27 10:21:26 +00:00
tty_tty.c Send the remains (such as I have located) of "block major numbers" to 2001-03-26 12:41:29 +00:00
tty.c Grab the process lock while calling psignal and before calling psignal. 2001-03-07 03:37:06 +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 Move the atomic() mbstat.m_drops incrementing to the MGET(HDR) and 2001-03-24 23:47:52 +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 When doing a recv(.. MSG_WAITALL) for a message which is larger than 2001-03-16 22:37:06 +00:00
uipc_syscalls.c Fix is a similar race condition as existed in the mbuf code. When we go 2001-03-08 19:21:45 +00:00
uipc_usrreq.c o Move per-process jail pointer (p->pr_prison) to inside of the subject 2001-02-21 06:39:57 +00:00
vfs_acl.c o Introduce filesystem-independent POSIX.1e ACL utility routines to 2001-03-06 17:28:24 +00:00
vfs_aio.c When aio_read/write() is used on a raw device, physical buffers are 2001-03-10 22:47:57 +00:00
vfs_bio.c Fix lockup for loopback NFS mounts. The pipelined I/O limitations could be 2001-02-28 04:13:11 +00:00
vfs_cache.c Use the same API as the example code. 2001-03-20 02:10:18 +00:00
vfs_cluster.c Fix lockup for loopback NFS mounts. The pipelined I/O limitations could be 2001-02-28 04:13:11 +00:00
vfs_conf.c Reviewed by: jlemon 2001-03-01 21:00:17 +00:00
vfs_default.c o Rename "namespace" argument to "attrnamespace" as namespace is a C++ 2001-03-19 05:44:15 +00:00
vfs_export.c Add a NOTE_REVOKE flag for vnodes, which is triggered from within vclean(). 2001-02-23 20:06:01 +00:00
vfs_extattr.c Fixed breakage of access() in rev.1.164. Wrong credentials were used for 2001-03-20 09:38:05 +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 Reviewed by: jlemon 2001-03-01 21:00:17 +00:00
vfs_subr.c Add a NOTE_REVOKE flag for vnodes, which is triggered from within vclean(). 2001-02-23 20:06:01 +00:00
vfs_syscalls.c Fixed breakage of access() in rev.1.164. Wrong credentials were used for 2001-03-20 09:38:05 +00:00
vfs_vnops.c Previous commit broke interlock locking for !LK_RETRY case. 2001-03-26 12:45:35 +00:00
vnode_if.pl replace calls to non-existant bail() subroutine with calls to 2001-03-23 11:48:50 +00:00
vnode_if.src o Rename "namespace" argument to "attrnamespace" as namespace is a C++ 2001-03-19 05:44:15 +00:00