1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-29 12:03:03 +00:00
freebsd/sys/kern
Bosko Milekic 7d03271452 Big mbuf subsystem diff #1: incorporate mutexes and fix things up somewhat
to accomodate the changes.

 Here's a list of things that have changed (I may have left out a few); for a
 relatively complete list, see http://people.freebsd.org/~bmilekic/mtx_journal

   * Remove old (once useful) mcluster code for MCLBYTES > PAGE_SIZE which
     nobody uses anymore. It was great while it lasted, but now we're moving
     onto bigger and better things (Approved by: wollman).

   * Practically re-wrote the allocation macros in sys/sys/mbuf.h to accomodate
     new allocations which grab the necessary lock.

   * Make sure that necessary mbstat variables are manipulated with
     corresponding atomic() routines.

   * Changed the "wait" routines, cleaned it up, made one routine that does
     the job.

   * Generalized MWAKEUP() macro. Got rid of m_retry and m_retryhdr, as they
     are now included in the generalized "wait" routines.

   * Sleep routines now use msleep().

   * Free lists have locks.

   * etc... probably other stuff I'm missing...

  Things to look out for and work on later:

   * find a better way to (dynamically) adjust EXT_COUNTERS

   * move necessity to recurse on a lock from drain routines by providing
     lock-free lower-level version of MFREE() (and possibly m_free()?).

   * checkout include of mutex.h in sys/sys/mbuf.h - probably violating
     general philosophy here.

   The code has been reviewed quite a bit, but problems may arise... please,
   don't panic! Send me Emails: bmilekic@freebsd.org

Reviewed by: jlemon, cp, alfred, others?
2000-09-30 06:30:39 +00:00
..
bus_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
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 Use "nm | awk ..." instead of genassym(1) to generate symbol value headers. 2000-06-02 09:27:48 +00:00
imgact_aout.c Add three new VOPs: VOP_CREATEVOBJECT, VOP_DESTROYVOBJECT and VOP_GETVOBJECT. 2000-09-12 09:49:08 +00:00
imgact_elf.c Add three new VOPs: VOP_CREATEVOBJECT, VOP_DESTROYVOBJECT and VOP_GETVOBJECT. 2000-09-12 09:49:08 +00:00
imgact_gzip.c
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 Release Giant before starting up init. 2000-09-15 19:25:29 +00:00
init_sysent.c Regen: fix prototypes for {o|}{g|s}etrlimit. 2000-08-28 07:56:38 +00:00
kern_acct.c Move the truncation code out of vn_open and into the open system call 2000-07-04 03:34:11 +00:00
kern_acl.c o Change locking rules for VOP_GETACL() to indicate that vnode locks 2000-09-21 18:43:32 +00:00
kern_cap.c o Add missing function return types from capability syscall call stubs, 2000-07-25 03:37:36 +00:00
kern_clock.c Clean up process accounting some more. Unfortunately, it is still not 2000-09-12 18:57:59 +00:00
kern_conf.c Rename lminor() to dev2unit(). This function gives a linear unit number 2000-09-19 10:28:44 +00:00
kern_descrip.c Avoid the modules madness I inadvertently introduced by making the 2000-09-02 19:17:34 +00:00
kern_environment.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_event.c o Centralize inter-process access control, introducing: 2000-08-30 04:49:09 +00:00
kern_exec.c Make size of dynamic loader argument variable to support 2000-09-26 05:09:21 +00:00
kern_exit.c Added used include of <sys/mutex.h> (don't depend on pollution in 2000-09-17 12:20:49 +00:00
kern_fork.c Enforce process limit policy in one place to keep proccnt from diverging 2000-09-14 23:07:39 +00:00
kern_idle.c Create an event (idle_event) which is invoked every time around the 2000-09-22 03:19:24 +00:00
kern_intr.c - Remove the inthand2_t type and use the equivalent driver_intr_t type from 2000-09-13 18:33:25 +00:00
kern_jail.c o Modify jail to limit creation of sockets to UNIX domain sockets, 2000-06-04 04:28:31 +00:00
kern_kthread.c Major update to the way synchronization is done in the kernel. Highlights 2000-09-07 01:33:02 +00:00
kern_ktr.c Add KTR, a facility that logs kernel events in order to to facilitate 2000-09-07 01:29:44 +00:00
kern_ktrace.c Add KTR, a facility that logs kernel events in order to to facilitate 2000-09-07 01:29:44 +00:00
kern_linker.c The kernel is now known as `kernel.ko' and it and its matching modules 2000-09-06 06:22:20 +00:00
kern_lock.c Move MAXCPU from machine/smp.h to machine/param.h to fix breakage 2000-09-23 12:18:06 +00:00
kern_lockf.c
kern_malloc.c Don't #include <sys/proc.h>, since machine/mutex.h does it now. 2000-09-23 00:01:37 +00:00
kern_mib.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_module.c Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
kern_mutex.c Remove the mtx_t, witness_t, and witness_blessed_t types. Instead, just 2000-09-14 20:15:16 +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 Major update to the way synchronization is done in the kernel. Highlights 2000-09-07 01:33:02 +00:00
kern_prot.c Remove uidinfo hash table lookup and maintenance out of chgproccnt() and 2000-09-05 22:11:13 +00:00
kern_resource.c Add new line character to debugging printf's. 2000-09-18 17:03:03 +00:00
kern_shutdown.c Added used include of <sys/mutex.h> (don't depend on pollution in 2000-09-17 12:20:49 +00:00
kern_sig.c Unpessimized CURSIG(). The fast path through CURSIG() was broken in 2000-09-17 15:12:04 +00:00
kern_subr.c GC vax-only code 2000-09-14 16:51:47 +00:00
kern_switch.c Idle processes are always runnable, so let them state at SRUN. 2000-09-15 19:49:48 +00:00
kern_synch.c Add a KASSERT() to catch instances where the mutex that we pass in to 2000-09-24 00:33:51 +00:00
kern_syscalls.c
kern_sysctl.c Fix some style nits. 2000-07-28 22:40:04 +00:00
kern_tc.c Major update to the way synchronization is done in the kernel. Highlights 2000-09-07 01:33:02 +00:00
kern_threads.c Major update to the way synchronization is done in the kernel. Highlights 2000-09-07 01:33:02 +00:00
kern_time.c Remove unneeded <sys/buf.h> includes. 2000-04-18 15:15:39 +00:00
kern_timeout.c
kern_xxx.c
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 Don't support dynamic linking on ia64 for now - the tools can't cope. 2000-09-29 13:34:04 +00:00
link_elf.c Don't support dynamic linking on ia64 for now - the tools can't cope. 2000-09-29 13:34:04 +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 Update tags directive to reflect the new location of soft updates 2000-07-04 00:18:43 +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
makeobjops.pl * Factor out the object system from new-bus so that it can be used by 2000-04-08 14:17:18 +00:00
makesyscalls.sh Change the 'exit()' system call to 'sys_exit()'. This avoids overlapping 2000-07-29 00:16:28 +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 Change locking rules for VOP_GETACL() to indicate that vnode locks 2000-09-21 18:43:32 +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 Eliminate the undocumented, experimental, non-delivering and highly 2000-03-16 08:51:55 +00:00
subr_bus.c Initialize 'hints_loaded' to 0. 2000-09-17 23:57:52 +00:00
subr_clist.c
subr_devstat.c Support for unsigned integer and long sysctl variables. Update the 2000-07-05 07:46:41 +00:00
subr_disk.c Avoid the modules madness I inadvertently introduced by making the 2000-09-02 19:17:34 +00:00
subr_disklabel.c Turn dkcksum() into an __inline function. 2000-09-16 13:43:00 +00:00
subr_diskmbr.c Separate the struct bio related stuff out of <sys/buf.h> into 2000-05-05 09:59:14 +00:00
subr_diskslice.c Avoid the modules madness I inadvertently introduced by making the 2000-09-02 19:17:34 +00:00
subr_eventhandler.c Make the EVENTHANDLER mechanism MP-safe. Events can now be invoked 2000-09-22 03:17:35 +00:00
subr_kobj.c Add kobj_class_compile_static() to allow classes to be initialised 2000-08-28 21:11:12 +00:00
subr_log.c
subr_module.c
subr_param.c Move the MSG* and SEM* options to opt_sysvipc.h 2000-05-01 13:33:56 +00:00
subr_prf.c Major update to the way synchronization is done in the kernel. Highlights 2000-09-07 01:33:02 +00:00
subr_prof.c Major update to the way synchronization is done in the kernel. Highlights 2000-09-07 01:33:02 +00:00
subr_rman.c Replace all the ifdef debugging spaghetti with a single ifdef and 2000-05-03 00:20:36 +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 Remove the NCPU, NAPIC, NBUS, NINTR config options. Make NAPIC, 2000-09-22 23:40:10 +00:00
subr_taskqueue.c - Remove the inthand2_t type and use the equivalent driver_intr_t type from 2000-09-13 18:33:25 +00:00
subr_trap.c Fixed hang on booting with -d. mtx_enter() was called on an uninitialized 2000-09-13 12:40:43 +00:00
subr_turnstile.c Remove the mtx_t, witness_t, and witness_blessed_t types. Instead, just 2000-09-14 20:15:16 +00:00
subr_witness.c Remove the mtx_t, witness_t, and witness_blessed_t types. Instead, just 2000-09-14 20:15:16 +00:00
subr_xxx.c
sys_generic.c Fix a warning that has been annoying me for some time: 2000-07-28 22:17:42 +00:00
sys_pipe.c Pipes are not writeable while a direct write is in progress. However, 2000-09-14 20:10:19 +00:00
sys_process.c o Centralize inter-process access control, introducing: 2000-08-30 04:49:09 +00:00
sys_socket.c Instead of just blindly setting -rw-rw-rw-: 2000-07-02 23:56:45 +00:00
syscalls.c Regen: fix prototypes for {o|}{g|s}etrlimit. 2000-08-28 07:56:38 +00:00
syscalls.master Fix prototypes for {o|}{g|s}etrlimit. A recent change in the 2000-08-28 07:50:44 +00:00
sysv_ipc.c Remove the undocumented, flawed, broken-as-designed semconfig() syscall. 2000-05-01 11:13:41 +00:00
sysv_msg.c Fully initialize msqids[]. This could lead to ENOSPC and other strange 2000-09-19 22:59:22 +00:00
sysv_sem.c Move the MSG* and SEM* options to opt_sysvipc.h 2000-05-01 13:33:56 +00:00
sysv_shm.c This is a cleanup patch to Peter's new OBJT_PHYS VM object type 2000-05-29 22:40:54 +00:00
tty_compat.c
tty_conf.c Don't refer to TABLDISC in the comments here. 2000-01-30 10:14:13 +00:00
tty_cons.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
tty_pty.c Rename lminor() to dev2unit(). This function gives a linear unit number 2000-09-19 10:28:44 +00:00
tty_snoop.c Unstaticize this driver. You can have as many snoop devices as you can 2000-04-02 00:35:37 +00:00
tty_subr.c
tty_tty.c Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
tty.c Major update to the way synchronization is done in the kernel. Highlights 2000-09-07 01:33:02 +00:00
uipc_accf.c Accept filter maintainance 2000-09-06 18:49:13 +00:00
uipc_domain.c
uipc_mbuf2.c Replace the mbuf external reference counting code with something 2000-08-19 08:32:59 +00:00
uipc_mbuf.c Big mbuf subsystem diff #1: incorporate mutexes and fix things up somewhat 2000-09-30 06:30:39 +00:00
uipc_proto.c
uipc_sockbuf.c Remove uidinfo hash table lookup and maintenance out of chgproccnt() and 2000-09-05 22:11:13 +00:00
uipc_socket2.c Remove uidinfo hash table lookup and maintenance out of chgproccnt() and 2000-09-05 22:11:13 +00:00
uipc_socket.c Check so_error in filt_so{read|write} in order to detect UDP errors. 2000-09-28 04:41:22 +00:00
uipc_syscalls.c Add three new VOPs: VOP_CREATEVOBJECT, VOP_DESTROYVOBJECT and VOP_GETVOBJECT. 2000-09-12 09:49:08 +00:00
uipc_usrreq.c Remove uidinfo hash table lookup and maintenance out of chgproccnt() and 2000-09-05 22:11:13 +00:00
vfs_acl.c o Change locking rules for VOP_GETACL() to indicate that vnode locks 2000-09-21 18:43:32 +00:00
vfs_aio.c aio_qphysio: Eliminate one instance of an out-of-range check that is 2000-09-26 06:35:22 +00:00
vfs_bio.c Add three new VOPs: VOP_CREATEVOBJECT, VOP_DESTROYVOBJECT and VOP_GETVOBJECT. 2000-09-12 09:49:08 +00:00
vfs_cache.c Add new flag PDIRUNLOCK to the component.cn_flags which should be set by 2000-09-17 07:26:42 +00:00
vfs_cluster.c Virtualizes & untangles the bioops operations vector. 2000-06-16 08:48:51 +00:00
vfs_conf.c Avoid the modules madness I inadvertently introduced by making the 2000-09-02 19:17:34 +00:00
vfs_default.c Add a lock structure to vnode structure. Previously it was either allocated 2000-09-25 15:24:04 +00:00
vfs_export.c Do the right thing if bdevvp is called twice for the same device. 2000-09-27 18:03:17 +00:00
vfs_extattr.c Add function comments for functions missing them 2000-09-14 19:13:59 +00:00
vfs_init.c Do not panic on an uninitialized VOP_xxx() call. This was meant as a 2000-09-06 17:51:54 +00:00
vfs_lookup.c Add new flag PDIRUNLOCK to the component.cn_flags which should be set by 2000-09-17 07:26:42 +00:00
vfs_mount.c Avoid the modules madness I inadvertently introduced by making the 2000-09-02 19:17:34 +00:00
vfs_subr.c Do the right thing if bdevvp is called twice for the same device. 2000-09-27 18:03:17 +00:00
vfs_syscalls.c Add function comments for functions missing them 2000-09-14 19:13:59 +00:00
vfs_vnops.c o Introduce vn_extattr_rm(), a helper function in the style of 2000-09-22 22:33:13 +00:00
vnode_if.pl remove crufty exec stuff, perl is in the base system 2000-06-27 19:09:55 +00:00
vnode_if.src o Change locking rules for VOP_GETACL() to indicate that vnode locks 2000-09-21 18:43:32 +00:00