freebsd-nq/sys/conf
Marko Zec 21ca7b57bd Change the curvnet variable from a global const struct vnet *,
previously always pointing to the default vnet context, to a
dynamically changing thread-local one.  The currvnet context
should be set on entry to networking code via CURVNET_SET() macros,
and reverted to previous state via CURVNET_RESTORE().  Recursions
on curvnet are permitted, though strongly discuouraged.

This change should have no functional impact on nooptions VIMAGE
kernel builds, where CURVNET_* macros expand to whitespace.

The curthread->td_vnet (aka curvnet) variable's purpose is to be an
indicator of the vnet context in which the current network-related
operation takes place, in case we cannot deduce the current vnet
context from any other source, such as by looking at mbuf's
m->m_pkthdr.rcvif->if_vnet, sockets's so->so_vnet etc.  Moreover, so
far curvnet has turned out to be an invaluable consistency checking
aid: it helps to catch cases when sockets, ifnets or any other
vnet-aware structures may have leaked from one vnet to another.

The exact placement of the CURVNET_SET() / CURVNET_RESTORE() macros
was a result of an empirical iterative process, whith an aim to
reduce recursions on CURVNET_SET() to a minimum, while still reducing
the scope of CURVNET_SET() to networking only operations - the
alternative would be calling CURVNET_SET() on each system call entry.
In general, curvnet has to be set in three typicall cases: when
processing socket-related requests from userspace or from within the
kernel; when processing inbound traffic flowing from device drivers
to upper layers of the networking stack, and when executing
timer-driven networking functions.

This change also introduces a DDB subcommand to show the list of all
vnet instances.

Approved by:	julian (mentor)
2009-05-05 10:56:12 +00:00
..
defines
files Change the curvnet variable from a global const struct vnet *, 2009-05-05 10:56:12 +00:00
files.amd64 Save and restore segment registers on amd64 when entering and leaving 2009-04-01 13:09:26 +00:00
files.arm Switch to ath hal source code. Note this removes the ath_hal 2008-12-01 16:53:01 +00:00
files.i386 Add support for Phenom (Family 10h) to cpufreq. 2009-03-28 08:54:47 +00:00
files.ia64 Add trivial implementation for the freebsd32_sysarch on ia64. 2009-04-01 19:23:07 +00:00
files.mips Add memmove() to the kernel, making the kernel compile with Clang. 2009-02-28 16:21:25 +00:00
files.pc98 Remove IFF_NEEDSGIANT, a compatibility infrastructure introduced 2009-03-15 14:21:05 +00:00
files.powerpc Add suppport for ISA and ISA interrupts to make the ATA 2009-04-24 03:51:11 +00:00
files.sparc64 Add memmove() to the kernel, making the kernel compile with Clang. 2009-02-28 16:21:25 +00:00
files.sun4v Add memmove() to the kernel, making the kernel compile with Clang. 2009-02-28 16:21:25 +00:00
kern.mk Bump down the inline limit on MIPS. 2009-03-03 18:53:47 +00:00
kern.post.mk Always compute the root of the kernel source tree and explicitly pass it 2009-05-04 20:25:56 +00:00
kern.pre.mk Allow the old usb stack to compile by adding the appropriate -I foo, this must 2009-02-26 20:54:43 +00:00
kmod_syms.awk
kmod.mk Change over the usb kernel options to the new stack (retaining existing 2009-02-23 18:34:56 +00:00
ldscript.amd64
ldscript.arm
ldscript.i386
ldscript.ia64
ldscript.mips Merge from p4: add Juniper license statement. 2008-09-19 03:36:37 +00:00
ldscript.mips.cfe Fix the CFE ldscript after the cutover to tradmips. 2008-10-13 06:07:58 +00:00
ldscript.powerpc Avoid hardcoding the kernel link address in the linker script. 2008-02-27 00:03:23 +00:00
ldscript.sparc64
Makefile.amd64 Add a kernel option for amd64 to compile with the frame on the stack 2008-05-23 03:52:55 +00:00
Makefile.arm Rename Marvell ARM CPU specific file according to r186933. 2009-01-09 10:55:33 +00:00
Makefile.i386 Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
Makefile.ia64 Remove definition of the GCC3 variable. It was introduced in rev. 2007-06-02 21:30:39 +00:00
Makefile.mips Merge in the mips specific configuration files and such from the 2008-04-13 06:25:43 +00:00
Makefile.pc98 Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
Makefile.powerpc Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
Makefile.sparc64 Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
Makefile.sun4v Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
makeLINT.mk
makeLINT.sed
newvers.sh For kernel builds reduce the impact of svnversion, just scanning 2009-03-28 23:17:18 +00:00
NOTES add uath; sort usb wireless drivers 2009-05-01 17:17:06 +00:00
options Bring in Andrew Thompson's port of Sepherosa Ziehau's bwi driver for 2009-05-03 04:01:43 +00:00
options.amd64 Merge in support for Xen HVM on amd64 architecture. 2009-03-11 15:30:12 +00:00
options.arm add IXP4XX_FLASH_SIZE config knob that can be used to override the default 2009-03-10 21:49:22 +00:00
options.i386 Fix AGP debugging code: 2009-02-06 20:57:10 +00:00
options.ia64 Don't forget to create opt_agp.h on ia64, which also uses agp(4). 2009-02-07 09:57:14 +00:00
options.mips Consistently use <TAB> instead of spaces as option name and file 2009-02-06 10:30:46 +00:00
options.pc98 Fix AGP debugging code: 2009-02-06 20:57:10 +00:00
options.powerpc Initial support for Freescale PowerQUICC III MPC85xx system-on-chip family. 2008-03-03 17:17:00 +00:00
options.sparc64 Add a driver for Schizo' Fireplane/Safari to PCI 2.1 and Tomatillo' 2008-09-28 00:07:05 +00:00
options.sun4v Remove remnants from the sparc64 origin of this file and which are 2007-01-19 12:22:50 +00:00
systags.sh