freebsd with flexible iflib nic queues
Go to file
Bosko Milekic 9ed346bab0 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
bin Fix typo: seperate -> separate. 2001-02-06 10:39:38 +00:00
contrib Fixed the .St strings so that no single-character component of 2001-02-08 12:00:18 +00:00
crypto Synch: Add $FreeBSD$. 2001-02-07 21:58:16 +00:00
etc Show denied secondary bind transfer attempts 2001-02-08 20:31:21 +00:00
games mdoc(7) police: Change -filled displays (which just happen 2001-02-07 13:45:30 +00:00
gnu Finish draining any input prior to closing the pipe, to prevent unsightly 2001-02-05 01:24:40 +00:00
include add langinfo.h 2001-02-08 17:14:28 +00:00
kerberos5 Fix ordering for real this time. 2000-08-30 03:44:30 +00:00
kerberosIV add strcollect.c to SRCS (new file in 1.0.5) 2000-12-29 23:44:24 +00:00
lib Hardcode c_fmt in a different way since used in nl_langinfo now 2001-02-08 20:55:38 +00:00
libexec Synch: Properly constify sccsid[]. 2001-02-07 22:25:56 +00:00
release Fix typo: compatability -> compatibility. 2001-02-06 12:05:58 +00:00
sbin Fix a cosmetic problem with some very defensive programming: The devfs 2001-02-08 22:07:08 +00:00
secure Define HAVE_PAM_GETENVLIST for build. Now environmental variables set 2001-02-08 21:16:34 +00:00
share Apply clue to mind and correct the ISO setting to the correct one. 2001-02-08 23:06:11 +00:00
sys Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
tools Look for modules in /boot/kernel these days. 2001-01-18 22:36:34 +00:00
usr.bin Fix style(9) bugs from previous commit: remove space after function 2001-02-08 20:15:59 +00:00
usr.sbin - By default treat supplied arguments as a shell globs to be matched against 2001-02-08 17:44:00 +00:00
COPYRIGHT Update to add the July 22, 1999 addendum. 1999-09-05 21:33:47 +00:00
Makefile Add back displaying the `world' start time when displaying the stop time. 2000-12-06 04:35:45 +00:00
Makefile.inc1 Provide backwards compatable recognition of ${KERNEL}. You should be 2001-01-23 09:52:50 +00:00
Makefile.upgrade $Id$ -> $FreeBSD$ 1999-08-28 01:35:59 +00:00
README Slightly improve the description of "crypto". "DES" is a subset of 2000-08-31 17:59:01 +00:00
UPDATING Note change of KERNEL to KERNCONF for building instructions. Peter 2001-01-22 08:03:13 +00:00

This is the top level of the FreeBSD source directory.  This file
was last revised on:
$FreeBSD$

For copyright information, please see the file COPYRIGHT in this
directory (additional copyright information also exists for some
sources in this tree - please see the specific source directories for
more information).

The Makefile in this directory supports a number of targets for
building components (or all) of the FreeBSD source tree, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel, the kernel-modules and the contents of /etc.  The
``buildkernel'' and ``installkernel'' targets build and install
the kernel and the modules (see below).  Please see the top of
the Makefile in this directory for more information on the
standard build targets and compile-time flags.

Building a kernel is a somewhat more involved process, documentation
for which can be found at:
   http://www.freebsd.org/handbook/kernelconfig.html
And in the config(8) man page.
Note: If you want to build and install the kernel with the
``buildkernel'' and ``installkernel'' targets, you have to build
world before.  More information is available in the handbook.

The sample kernel configuration files reside in the sys/i386/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel.  The file NOTES contains entries and documentation for all possible
devices, not just those commonly used.  It is the successor of the ancient
LINT file, but in contrast to LINT, it is not buildable as a kernel but a
pure reference and documentation file.


Source Roadmap:
---------------
bin		System/User commands.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc

games		Amusements.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberosIV	Kerberos package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

sys		Kernel sources.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.


For information on synchronizing your source tree with one or more of
the FreeBSD Project's development branches, please see:

  http://www.freebsd.org/handbook/synching.html