freebsd-dev/sys/kern
Matthew Dillon 36e9f877df Commit major SMP cleanups and move the BGL (big giant lock) in the
syscall path inward.  A system call may select whether it needs the MP
    lock or not (the default being that it does need it).

    A great deal of conditional SMP code for various deadended experiments
    has been removed.  'cil' and 'cml' have been removed entirely, and the
    locking around the cpl has been removed.  The conditional
    separately-locked fast-interrupt code has been removed, meaning that
    interrupts must hold the CPL now (but they pretty much had to anyway).
    Another reason for doing this is that the original separate-lock for
    interrupts just doesn't apply to the interrupt thread mechanism being
    contemplated.

    Modifications to the cpl may now ONLY occur while holding the MP
    lock.  For example, if an otherwise MP safe syscall needs to mess with
    the cpl, it must hold the MP lock for the duration and must (as usual)
    save/restore the cpl in a nested fashion.

    This is precursor work for the real meat coming later: avoiding having
    to hold the MP lock for common syscalls and I/O's and interrupt threads.
    It is expected that the spl mechanisms and new interrupt threading
    mechanisms will be able to run in tandem, allowing a slow piecemeal
    transition to occur.

    This patch should result in a moderate performance improvement due to
    the considerable amount of code that has been removed from the critical
    path, especially the simplification of the spl*() calls.  The real
    performance gains will come later.

Approved by: jkh
Reviewed by: current, bde (exception.s)
Some work taken from: luoqi's patch
2000-03-28 07:16:37 +00:00
..
bus_if.m * Add struct resource_list* argument to resource_list_alloc and 1999-10-12 21:35:51 +00:00
device_if.m $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
imgact_aout.c s/p_cred->pc_ucred/p_ucred/g 1999-11-21 12:38:21 +00:00
imgact_elf.c Update a comment in elf_coredump to reflect that if you madvise 2000-02-28 06:36:45 +00:00
imgact_gzip.c useracc() the prequel: 1999-10-29 18:09:36 +00:00
imgact_shell.c Allow comments in interpreter specification lines as in 2000-02-15 08:49:57 +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 Add new oid, debug.boothowto. This allows userland apps to see 2000-02-25 11:43:08 +00:00
init_sysent.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
kern_acct.c Introduce NDFREE (and remove VOP_ABORTOP) 1999-12-15 23:02:35 +00:00
kern_acl.c Fix bde'isms in acl/extattr syscall interface, renaming syscalls to 2000-01-19 06:07:34 +00:00
kern_clock.c Isolate the Timecounter internals in their own two files. 2000-03-20 14:09:06 +00:00
kern_conf.c Reword warning to make it clearer (I read it as "remove block devices created 2000-03-25 21:10:20 +00:00
kern_descrip.c Fix the style bugs in the style bugs fix. The style bug fix made the 2000-01-21 06:57:52 +00:00
kern_environment.c Change the prototype of the strto* routines to make the second 1999-11-24 01:03:08 +00:00
kern_exec.c When we are execing a setugid program, and we have a procfs filesystem 2000-01-20 07:12:52 +00:00
kern_exit.c Handle the case where we truss an SUGID program -- in particular, we need 2000-01-10 04:09:05 +00:00
kern_fork.c Put on my asbestos underwear and commit the patch that I posted to -arch 1999-12-06 11:13:50 +00:00
kern_intr.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
kern_jail.c Yet-another-update: rename ``kern.prison'' to a new sysctl root entry, 2000-02-12 13:41:56 +00:00
kern_kthread.c Panic if proc0 hasn't been created and we try to call kthread_create. 2000-01-10 08:00:58 +00:00
kern_ktrace.c Introduce NDFREE (and remove VOP_ABORTOP) 1999-12-15 23:02:35 +00:00
kern_linker.c Introduce NDFREE (and remove VOP_ABORTOP) 1999-12-15 23:02:35 +00:00
kern_lock.c Eliminate the undocumented, experimental, non-delivering and highly 2000-03-16 08:51:55 +00:00
kern_lockf.c Commit the remaining part of PR14914: 1999-11-16 16:28:58 +00:00
kern_malloc.c Print "previous type" correctly when INVARIANTS is defined. 2000-03-14 14:58:04 +00:00
kern_mib.c Yet-another-update: rename ``kern.prison'' to a new sysctl root entry, 2000-02-12 13:41:56 +00:00
kern_module.c A hack basically.. We have a bunch of code that used to call 1999-11-08 06:53:30 +00:00
kern_ntptime.c Isolate the Timecounter internals in their own two files. 2000-03-20 14:09:06 +00:00
kern_physio.c Rename the existing BUF_STRATEGY() to DEV_STRATEGY() 2000-03-20 11:29:10 +00:00
kern_proc.c Also allow non-rot processes to setproctitle() 2000-02-08 19:54:15 +00:00
kern_prot.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
kern_random.c Isolate the Timecounter internals in their own two files. 2000-03-20 14:09:06 +00:00
kern_resource.c Don't try to account for the partial quantum unless the process is 2000-02-15 09:02:07 +00:00
kern_shutdown.c Seconds to ticks conversion was done at the wrong place. 2000-01-12 17:26:42 +00:00
kern_sig.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
kern_subr.c useracc() the prequel: 1999-10-29 18:09:36 +00:00
kern_switch.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
kern_synch.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
kern_syscalls.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
kern_sysctl.c Remove unused 3rd argument from vsunlock() which abused B_WRITE. 2000-03-13 10:47:24 +00:00
kern_tc.c Isolate the Timecounter internals in their own two files. 2000-03-20 14:09:06 +00:00
kern_threads.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
kern_time.c Isolate the Timecounter internals in their own two files. 2000-03-20 14:09:06 +00:00
kern_timeout.c Restructure TCP timeout handling: 1999-08-30 21:17:07 +00:00
kern_xxx.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
ksched.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
link_aout.c Fixed a cast of a pointer to an integer of a possibly different size. 1999-12-24 15:33:36 +00:00
link_elf_obj.c Fixed a cast of a pointer to an integer of a possibly different size. 1999-12-24 15:33:36 +00:00
link_elf.c Fixed a cast of a pointer to an integer of a possibly different size. 1999-12-24 15:33:36 +00:00
Make.tags.inc Add soft updates to the set of things being tagged. Syntax cleanup. 2000-01-27 01:22:06 +00:00
makedevops.pl Fix some bugs in user-end output and add a reference to the original 1999-11-22 14:40:04 +00:00
Makefile ${MACHINE} -> ${MACHINE_ARCH} 1999-11-14 13:54:44 +00:00
makesyscalls.sh Second pass commit to introduce new ACL and Extended Attribute system 1999-12-19 06:08:07 +00:00
md5c.c Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
p1003_1b.c Well folks, this is it - The second stage of the removal for build support 1999-04-17 08:36:07 +00:00
posix4_mib.c * Change sysctl from using linker_set to construct its tree using SLISTs. 1999-02-16 10:49:55 +00:00
subr_acl_posix1e.c Fix bde'isms in acl/extattr syscall interface, renaming syscalls to 2000-01-19 06:07:34 +00:00
subr_autoconf.c Removal of sys/device.h 1999-10-05 21:19:41 +00:00
subr_blist.c Eliminate the undocumented, experimental, non-delivering and highly 2000-03-16 08:51:55 +00:00
subr_bus.c Instead of using the next unit available, use the first unit available. 2000-03-16 09:32:59 +00:00
subr_clist.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
subr_devstat.c Remove B_READ, B_WRITE and B_FREEBUF and replace them with a new 2000-03-20 10:44:49 +00:00
subr_disk.c Fixed a null pointer panic for dumpon(8) on a nonexistent device whose 2000-03-09 12:40:41 +00:00
subr_disklabel.c diff, patch and cvs didn't like these three last time around, try again. 2000-03-20 12:34:21 +00:00
subr_diskmbr.c diff, patch and cvs didn't like these three last time around, try again. 2000-03-20 12:34:21 +00:00
subr_diskslice.c Remove B_READ, B_WRITE and B_FREEBUF and replace them with a new 2000-03-20 10:44:49 +00:00
subr_eventhandler.c Commit the remaining part of PR14914: 1999-11-16 16:28:58 +00:00
subr_log.c Remove five now unused fields from struct cdevsw. They should never 1999-09-25 18:24:47 +00:00
subr_module.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
subr_param.c This is Bosko Milekic's mbuf allocation waiting code. Basically, this 1999-12-12 05:52:51 +00:00
subr_prf.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
subr_prof.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
subr_rman.c Commit the remaining part of PR14914: 1999-11-16 16:28: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 Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
subr_trap.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +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 Fix select(2) for the Alpha. (!!) It was never returning true for 2000-02-20 13:36:26 +00:00
sys_pipe.c Fix in-kernel infinite loop in pipe_write() when the reader goes away 2000-03-24 00:47:37 +00:00
sys_process.c Introduce the new function 1999-11-21 19:03:20 +00:00
sys_socket.c Update socket file type for fo_stat(). soo_stat() becomes a fileops 1999-11-08 03:31:01 +00:00
syscalls.c Fix bde'isms in acl/extattr syscall interface, renaming syscalls to 2000-01-19 06:02:31 +00:00
syscalls.master Fix bde'isms in acl/extattr syscall interface, renaming syscalls to 2000-01-19 06:01:07 +00:00
sysv_ipc.c In 'ipcperm()', only call 'suser()' if it is actually required. 2000-03-13 23:00:08 +00:00
sysv_msg.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
sysv_sem.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
sysv_shm.c shmat: If VM_PROT_READ_IS_EXEC is defined and prot includes VM_PROT_READ, 2000-03-10 09:11:24 +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 Don't follow null pointers if we somehow have a null devswitch entry 2000-01-25 09:20:08 +00:00
tty_pty.c Correct an oversight in jail() that allowed processes in jail to access 2000-02-09 03:32:11 +00:00
tty_snoop.c Remove cdevsw_add() - the make_dev() calls are already there. 1999-11-18 06:39:47 +00:00
tty_subr.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
tty_tty.c Remove five now unused fields from struct cdevsw. They should never 1999-09-25 18:24:47 +00:00
tty.c Back out previous commit; it was premature. 2000-01-28 17:11:07 +00:00
uipc_domain.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
uipc_mbuf.c Actively limit the allocation of mbufs to NMBUFS/nmbufs and mbuf clusters 1999-12-28 06:35:57 +00:00
uipc_proto.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
uipc_sockbuf.c CMSG_XXX macros alignment fixes to follow RFC2292. 2000-03-03 11:13:12 +00:00
uipc_socket2.c CMSG_XXX macros alignment fixes to follow RFC2292. 2000-03-03 11:13:12 +00:00
uipc_socket.c Make sure to free the socket in soabort() if the protocol couldn't 2000-03-18 08:56:56 +00:00
uipc_syscalls.c This is Bosko Milekic's mbuf allocation waiting code. Basically, this 1999-12-12 05:52:51 +00:00
uipc_usrreq.c Enable SCM_RIGHTS on alpha. Allocate necessary buffer as conversion between 2000-03-09 15:15:27 +00:00
vfs_acl.c Fix bde'isms in acl/extattr syscall interface, renaming syscalls to 2000-01-19 06:07:34 +00:00
vfs_aio.c Rename the existing BUF_STRATEGY() to DEV_STRATEGY() 2000-03-20 11:29:10 +00:00
vfs_bio.c Commit the buffer cache cleanup patch to 4.x and 5.x. This patch fixes a 2000-03-27 21:29:33 +00:00
vfs_cache.c Avoid a panic in __getcwd(2) when combined with umount -f. 2000-02-14 06:09:01 +00:00
vfs_cluster.c Remove B_READ, B_WRITE and B_FREEBUF and replace them with a new 2000-03-20 10:44:49 +00:00
vfs_conf.c Split the logic of 2000-03-20 16:28:35 +00:00
vfs_default.c Remove B_READ, B_WRITE and B_FREEBUF and replace them with a new 2000-03-20 10:44:49 +00:00
vfs_export.c Rename the existing BUF_STRATEGY() to DEV_STRATEGY() 2000-03-20 11:29:10 +00:00
vfs_extattr.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
vfs_init.c The sysctl mod_xx hack is no longer required now that we have totally 1999-12-12 16:30:34 +00:00
vfs_lookup.c Introduce NDFREE (and remove VOP_ABORTOP) 1999-12-15 23:02:35 +00:00
vfs_mount.c Split the logic of 2000-03-20 16:28:35 +00:00
vfs_subr.c Rename the existing BUF_STRATEGY() to DEV_STRATEGY() 2000-03-20 11:29:10 +00:00
vfs_syscalls.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
vfs_vnops.c Give vn_isdisk() a second argument where it can return a suitable errno. 2000-01-10 12:04:27 +00:00
vnode_if.pl Use a seperate -c and -h mode. The vnode_if.c file is compiled only into 1999-12-12 16:43:05 +00:00
vnode_if.src Second pass commit to introduce new ACL and Extended Attribute system 1999-12-19 06:08:07 +00:00