freebsd-nq/sys/kern
Matthew Dillon d23f5958bc Add mtx_lock_giant() and mtx_unlock_giant() wrappers for sysctl management
of Giant during the Giant unwinding phase, and start work on instrumenting
Giant for the file and proc mutexes.

These wrappers allow developers to turn on and off Giant around various
subsystems.  DEVELOPERS SHOULD NEVER TURN OFF GIANT AROUND A SUBSYSTEM JUST
BECAUSE THE SYSCTL EXISTS!  General developers should only considering
turning on Giant for a subsystem whos default is off (to help track down
bugs).  Only developers working on particular subsystems who know what
they are doing should consider turning off Giant.

These wrappers will greatly improve our ability to unwind Giant and test
the kernel on a (mostly) subsystem by subsystem basis.   They allow Giant
unwinding developers (GUDs) to emplace appropriate subsystem and structural
mutexes in the main tree and then request that the larger community test
the work by turning off Giant around the subsystem(s), without the larger
community having to mess around with patches.  These wrappers also allow
GUDs to boot into a (more likely to be) working system in the midst of
their unwinding work and to test that work under more controlled
circumstances.

There is a master sysctl, kern.giant.all, which defaults to 0 (off).  If
turned on it overrides *ALL* other kern.giant sysctls and forces Giant to
be turned on for all wrapped subsystems.  If turned off then Giant around
individual subsystems are controlled by various other kern.giant.XXX sysctls.

Code which overlaps multiple subsystems must have all related subsystem Giant
sysctls turned off in order to run without Giant.
2001-10-26 20:48:04 +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
imgact_aout.c Make MAXTSIZ, DFLDSIZ, MAXDSIZ, DFLSSIZ, MAXSSIZ, SGROWSIZ loader 2001-10-10 23:06:54 +00:00
imgact_elf.c Make MAXTSIZ, DFLDSIZ, MAXDSIZ, DFLSSIZ, MAXSSIZ, SGROWSIZ loader 2001-10-10 23:06:54 +00:00
imgact_gzip.c Make MAXTSIZ, DFLDSIZ, MAXDSIZ, DFLSSIZ, MAXSSIZ, SGROWSIZ loader 2001-10-10 23:06:54 +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
init_main.c Add a per-thread ucred reference for syscalls and synchronous traps from 2001-10-26 08:12:54 +00:00
init_sysent.c o Update init_sysent.c and friends for allocation of afs_syscall. 2001-10-13 13:30:21 +00:00
kern_acct.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
kern_acl.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
kern_cap.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
kern_clock.c Add missing includes of sys/ktr.h. 2001-10-11 17:53:43 +00:00
kern_condvar.c Add missing ; in last commit 2001-09-19 02:53:59 +00:00
kern_conf.c Make cdevsw[] static. 2001-10-26 15:31:22 +00:00
kern_descrip.c Change the kernel's ucred API as follows: 2001-10-11 23:38:17 +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 Have EVFILT_TIMERS allocate their callouts via malloc() instead of using 2001-09-29 17:48:39 +00:00
kern_exec.c Use vm_offset_t instead of caddr_t to fix a warning and remove 2001-10-24 14:15:28 +00:00
kern_exit.c Add a per-thread ucred reference for syscalls and synchronous traps from 2001-10-26 08:12:54 +00:00
kern_fork.c Add a per-thread ucred reference for syscalls and synchronous traps from 2001-10-26 08:12:54 +00:00
kern_idle.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
kern_intr.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
kern_jail.c - Catch up to the new ucred API. 2001-10-11 23:39:43 +00:00
kern_kthread.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
kern_ktr.c - Replace the unused KTR_IDLELOOP trace class with a new KTR_WITNESS trace 2001-06-25 23:09:31 +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 KSE Milestone 2 2001-09-12 08:38:13 +00:00
kern_lock.c Add missing includes of sys/ktr.h. 2001-10-11 17:53:43 +00:00
kern_lockf.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
kern_malloc.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
kern_mib.c o Introduce an 'options REGRESSION'-dependant sysctl namespaces, 2001-10-07 03:51:22 +00:00
kern_module.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
kern_mutex.c Add mtx_lock_giant() and mtx_unlock_giant() wrappers for sysctl management 2001-10-26 20:48:04 +00:00
kern_ntptime.c KSE Milestone 2 2001-09-12 08:38:13 +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 - Combine kern.ps_showallprocs and kern.ipc.showallsockets into 2001-10-09 21:40:30 +00:00
kern_prot.c Add mtx_lock_giant() and mtx_unlock_giant() wrappers for sysctl management 2001-10-26 20:48:04 +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 Make MAXTSIZ, DFLDSIZ, MAXDSIZ, DFLSSIZ, MAXSSIZ, SGROWSIZ loader 2001-10-10 23:06:54 +00:00
kern_sema.c Implement kernel semaphores. 2001-08-14 22:13:14 +00:00
kern_shutdown.c Add a sysctl for preventing the sync() in panic() recovery. This can 2001-10-19 23:32:03 +00:00
kern_sig.c Fix a typo in do_sigaction() where sa_sigaction and sa_handler were 2001-10-07 16:11:37 +00:00
kern_subr.c Make uio_yield() a global. Call uio_yield() between chunks 2001-09-26 06:54:32 +00:00
kern_switch.c Change p into ke->ke_proc, this was hidden behind INVARIANTS. 2001-09-18 03:36:21 +00:00
kern_sx.c Fix this to actually compile in the !INVARIANTS case. 2001-10-24 14:18:33 +00:00
kern_synch.c Assert that Giant is not held in mi_switch() unless the process state 2001-10-23 17:52:49 +00:00
kern_syscalls.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
kern_sysctl.c Remove the panic when trying to register a sysctl with an oid too high. 2001-10-12 09:16:36 +00:00
kern_tc.c Remove a bogus #ifdef KTR stanza. 2001-01-01 23:09:53 +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 KSE Milestone 2 2001-09-12 08:38:13 +00:00
link_elf_obj.c The ia64 kernel is now linked dynamically so parse its _DYNAMIC structure. 2001-09-15 11:02:10 +00:00
link_elf.c The ia64 kernel is now linked dynamically so parse its _DYNAMIC structure. 2001-09-15 11:02:10 +00:00
linker_if.m With this commit, I hereby pronounce gensetdefs past its use-by date. 2001-06-13 10:58:39 +00:00
Make.tags.inc Remove vestiges of MFS. 2001-06-01 10:07:28 +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 revert previous commit (bad style and not needed) 2001-07-22 10:24:31 +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 Add ia64 support. 2000-09-29 13:36:47 +00:00
p1003_1b.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
posix4_mib.c Add $FreeBSD$. 2000-04-22 15:13:06 +00:00
subr_acl_posix1e.c KSE Milestone 2 2001-09-12 08:38:13 +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 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 Move the hints gunk to a seperate file. It isn't really part of the 2001-07-14 08:25:18 +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 disk_clone() was a bit too eager to please: "md0s1ec" is not a valid 2001-10-22 10:18:45 +00:00
subr_disklabel.c Create a general facility for making dev_t's depend on another 2001-05-26 08:27:58 +00:00
subr_diskmbr.c Create a general facility for making dev_t's depend on another 2001-05-26 08:27:58 +00:00
subr_diskslice.c KSE Milestone 2 2001-09-12 08:38:13 +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 Convert more malloc+bzero to malloc+M_ZERO. 2000-12-08 21:51:06 +00:00
subr_log.c Use the passed in thread to selrecord() instead of curthread. 2001-09-21 22:46:54 +00:00
subr_mbuf.c Re-enable mbtypes statistics in the mbuf allocator. I disabled these 2001-09-30 01:58:39 +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 Make MAXTSIZ, DFLDSIZ, MAXDSIZ, DFLSSIZ, MAXSSIZ, SGROWSIZ loader 2001-10-10 23:06:54 +00:00
subr_pcpu.c Document the requirements and nature of the logical CPU IDs. It isn't 2001-10-24 22:15:38 +00:00
subr_prf.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
subr_prof.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
subr_rman.c Use msleep() to avoid lost wakeup's instead of doing an ineffective 2001-10-26 06:09:01 +00:00
subr_sbuf.c Add a couple of API functions I need for my pseudofs WIP. Documentation 2001-09-29 00:32:46 +00:00
subr_scanf.c
subr_smp.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
subr_taskqueue.c - Change the taskqueue locking to protect the necessary parts of a task 2001-10-26 18:46:48 +00:00
subr_trap.c Add a per-thread ucred reference for syscalls and synchronous traps from 2001-10-26 08:12:54 +00:00
subr_turnstile.c Add mtx_lock_giant() and mtx_unlock_giant() wrappers for sysctl management 2001-10-26 20:48:04 +00:00
subr_witness.c Replace 'curproc' with 'td->td_proc'. 2001-10-08 21:05:46 +00:00
subr_xxx.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
sys_generic.c The P_SELECT flag was moved from p->p_flag to td->td_flags, but p_flag 2001-09-21 22:06:22 +00:00
sys_pipe.c Use the passed in thread to selrecord() instead of curthread. 2001-09-21 22:46:54 +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 KSE Milestone 2 2001-09-12 08:38:13 +00:00
syscalls.c o Update init_sysent.c and friends for allocation of afs_syscall. 2001-10-13 13:30:21 +00:00
syscalls.master o Reserve system call 377 for afs_syscall; by reserving a system call 2001-10-13 13:19:34 +00:00
sysv_ipc.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
sysv_msg.c Make msgseg, msgssz (->msgmax) and msgmni TUNABLE. 2001-09-21 09:25:17 +00:00
sysv_sem.c Fix SysV Semaphore Handling. 2001-10-11 08:15:14 +00:00
sysv_shm.c Make MAXTSIZ, DFLDSIZ, MAXDSIZ, DFLSSIZ, MAXSSIZ, SGROWSIZ loader 2001-10-10 23:06:54 +00:00
tty_compat.c
tty_conf.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
tty_cons.c cnclose() can potentially race against itself. To avoid vn_close() races, 2001-10-25 04:51:37 +00:00
tty_pty.c Use the passed in thread pointer instead of curthread in calls to 2001-09-21 22:22:25 +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 KSE Milestone 2 2001-09-12 08:38:13 +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 Sync with recent KAME. 2001-06-11 12:39:29 +00:00
uipc_mbuf2.c Sync with recent KAME. 2001-06-11 12:39:29 +00:00
uipc_mbuf.c Forgot to remove this un-needed test. (M_WAITOK won't fail) 2001-08-19 04:30:13 +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 Change the kernel's ucred API as follows: 2001-10-11 23:38:17 +00:00
uipc_socket2.c Change the kernel's ucred API as follows: 2001-10-11 23:38:17 +00:00
uipc_socket.c Change the kernel's ucred API as follows: 2001-10-11 23:38:17 +00:00
uipc_syscalls.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
uipc_usrreq.c - Combine kern.ps_showallprocs and kern.ipc.showallsockets into 2001-10-09 21:40:30 +00:00
vfs_acl.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
vfs_aio.c The aio kthreads start off with a root credential just like all other 2001-10-05 17:55:11 +00:00
vfs_bio.c Documentation 2001-10-21 06:26:55 +00:00
vfs_cache.c Convert textvp_fullpath() into the more generic vn_fullpath() which takes a 2001-10-21 15:52:51 +00:00
vfs_cluster.c In cluster_rbuild(), 'size' had better match buf->b_bcount and buf->b_bufsize 2001-10-25 22:49:48 +00:00
vfs_conf.c KSE Milestone 2 2001-09-12 08:38:13 +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 unwind v_writecount in fhopen() if we are unable to allocate the 2001-10-24 18:32:17 +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 KSE Milestone 2 2001-09-12 08:38:13 +00:00
vfs_mount.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
vfs_subr.c Implement kern.maxvnodes. adjusting kern.maxvnodes now actually has a 2001-10-26 00:08:05 +00:00
vfs_syscalls.c unwind v_writecount in fhopen() if we are unable to allocate the 2001-10-24 18:32:17 +00:00
vfs_vnops.c o vn_open() fails to call VOP_CLOSE() if vfs_object_create fails. Ideally 2001-10-23 19:09:01 +00:00
vnode_if.pl KSE Milestone 2 2001-09-12 08:38:13 +00:00
vnode_if.src KSE Milestone 2 2001-09-12 08:38:13 +00:00