netisr: Add netisr barrier which stalls all netisrs
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Thu, 23 Dec 2010 05:12:39 +0000 (13:12 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Mon, 31 Jan 2011 01:46:04 +0000 (09:46 +0800)
commita91f9815c9eb424a4960bbd52fbbd85b7d27a510
tree6a6f20335426466b2dbe90a2d53c47e71943d6b2
parent4617a5595d9825a772a4515d77d0077c2487957f
netisr: Add netisr barrier which stalls all netisrs

netisr_barrier_set()
  Set a netisr barrier, which stalls all netisr.  Currently it must be
  called from netisr0.

netisr_barrier_rem()
  Remove the netisr barrier, which unstalls all netisr.  Currently it
  must be called from netisr0.

These interfaces could be used to work out a lockless pcb lookup or
iteration (on network hotpath e.g. input/output) at the cost of
relatively expensive pcb adding and removing (e.g. connect(2)).
sys/net/netisr.c
sys/net/netisr.h