netisr.h (100763) | netisr.h (111888) |
---|---|
1/* 2 * Copyright (c) 1980, 1986, 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 17 unchanged lines hidden (view full) --- 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 * 33 * @(#)netisr.h 8.1 (Berkeley) 6/10/93 | 1/* 2 * Copyright (c) 1980, 1986, 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 17 unchanged lines hidden (view full) --- 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 * 33 * @(#)netisr.h 8.1 (Berkeley) 6/10/93 |
34 * $FreeBSD: head/sys/net/netisr.h 100763 2002-07-27 19:53:02Z rwatson $ | 34 * $FreeBSD: head/sys/net/netisr.h 111888 2003-03-04 23:19:55Z jlemon $ |
35 */ 36 37#ifndef _NET_NETISR_H_ 38#define _NET_NETISR_H_ 39 40/* 41 * The networking code runs off software interrupts. 42 * --- 7 unchanged lines hidden (view full) --- 50 * Each ``pup-level-1'' input queue has a bit in a ``netisr'' status 51 * word which is used to de-multiplex a single software 52 * interrupt used for scheduling the network code to calls 53 * on the lowest level routine of each protocol. 54 */ 55#define NETISR_POLL 0 /* polling callback, must be first */ 56#define NETISR_IP 2 /* same as AF_INET */ 57#define NETISR_NS 6 /* same as AF_NS */ | 35 */ 36 37#ifndef _NET_NETISR_H_ 38#define _NET_NETISR_H_ 39 40/* 41 * The networking code runs off software interrupts. 42 * --- 7 unchanged lines hidden (view full) --- 50 * Each ``pup-level-1'' input queue has a bit in a ``netisr'' status 51 * word which is used to de-multiplex a single software 52 * interrupt used for scheduling the network code to calls 53 * on the lowest level routine of each protocol. 54 */ 55#define NETISR_POLL 0 /* polling callback, must be first */ 56#define NETISR_IP 2 /* same as AF_INET */ 57#define NETISR_NS 6 /* same as AF_NS */ |
58#define NETISR_ATALK 16 /* same as AF_APPLETALK */ | 58#define NETISR_AARP 15 /* Appletalk ARP */ 59#define NETISR_ATALK2 16 /* Appletalk phase 2 */ 60#define NETISR_ATALK1 17 /* Appletalk phase 1 */ |
59#define NETISR_ARP 18 /* same as AF_LINK */ 60#define NETISR_IPX 23 /* same as AF_IPX */ 61#define NETISR_USB 25 /* USB soft interrupt */ | 61#define NETISR_ARP 18 /* same as AF_LINK */ 62#define NETISR_IPX 23 /* same as AF_IPX */ 63#define NETISR_USB 25 /* USB soft interrupt */ |
62#define NETISR_PPP 27 /* PPP soft interrupt */ 63#define NETISR_IPV6 28 /* same as AF_INET6 */ 64#define NETISR_NATM 29 /* same as AF_NATM */ 65#define NETISR_ATM 30 /* same as AF_ATM */ 66#define NETISR_NETGRAPH 31 /* same as AF_NETGRAPH */ | 64#define NETISR_PPP 26 /* PPP soft interrupt */ 65#define NETISR_IPV6 27 66#define NETISR_NATM 28 67#define NETISR_ATM 29 68#define NETISR_NETGRAPH 30 69#define NETISR_POLLMORE 31 /* polling callback, must be last */ |
67 68 69#ifndef LOCORE 70#ifdef _KERNEL 71 72void legacy_setsoftnet(void); 73 74extern volatile unsigned int netisr; /* scheduling bits for network */ | 70 71 72#ifndef LOCORE 73#ifdef _KERNEL 74 75void legacy_setsoftnet(void); 76 77extern volatile unsigned int netisr; /* scheduling bits for network */ |
75extern void (*netisrs[32])(void); | |
76#define schednetisr(anisr) do { \ 77 atomic_set_rel_int(&netisr, 1 << (anisr)); \ 78 legacy_setsoftnet(); \ 79} while (0) | 78#define schednetisr(anisr) do { \ 79 atomic_set_rel_int(&netisr, 1 << (anisr)); \ 80 legacy_setsoftnet(); \ 81} while (0) |
82/* used to atomically schedule multiple netisrs */ 83#define schednetisrbits(isrbits) do { \ 84 atomic_set_rel_int(&netisr, isrbits); \ 85 legacy_setsoftnet(); \ 86} while (0) |
|
80 | 87 |
81typedef void netisr_t(void); | 88struct ifqueue; 89struct mbuf; |
82 | 90 |
83int register_netisr(int, netisr_t *); 84int unregister_netisr(int); | 91typedef void netisr_t (struct mbuf *); 92 93void netisr_dispatch(int, struct mbuf *); 94int netisr_queue(int, struct mbuf *); 95void netisr_register(int, netisr_t *, struct ifqueue *); 96void netisr_unregister(int); |
85 86#endif 87#endif 88 89#endif | 97 98#endif 99#endif 100 101#endif |