xref: /csrg-svn/sys/net/netisr.h (revision 63211)
123159Smckusick /*
2*63211Sbostic  * Copyright (c) 1980, 1986, 1989, 1993
3*63211Sbostic  *	The Regents of the University of California.  All rights reserved.
423159Smckusick  *
544465Sbostic  * %sccs.include.redist.c%
633183Sbostic  *
7*63211Sbostic  *	@(#)netisr.h	8.1 (Berkeley) 06/10/93
823159Smckusick  */
98387Swnj 
108387Swnj /*
118387Swnj  * The networking code runs off software interrupts.
128387Swnj  *
138387Swnj  * You can switch into the network by doing splnet() and return by splx().
148387Swnj  * The software interrupt level for the network is higher than the software
158387Swnj  * level for the clock (so you can enter the network in routines called
168387Swnj  * at timeout time).
178387Swnj  */
1829922Skarels #if defined(vax) || defined(tahoe)
198387Swnj #define	setsoftnet()	mtpr(SIRR, 12)
208973Sroot #endif
218387Swnj 
228387Swnj /*
238387Swnj  * Each ``pup-level-1'' input queue has a bit in a ``netisr'' status
248387Swnj  * word which is used to de-multiplex a single software
258387Swnj  * interrupt used for scheduling the network code to calls
268387Swnj  * on the lowest level routine of each protocol.
278387Swnj  */
288387Swnj #define	NETISR_RAW	0		/* same as AF_UNSPEC */
298387Swnj #define	NETISR_IP	2		/* same as AF_INET */
3024146Skarels #define	NETISR_IMP	3		/* same as AF_IMPLINK */
318387Swnj #define	NETISR_NS	6		/* same as AF_NS */
3237472Ssklower #define	NETISR_ISO	7		/* same as AF_ISO */
3345655Ssklower #define	NETISR_CCITT	10		/* same as AF_CCITT */
3450088Ssklower #define	NETISR_ARP	18		/* same as AF_LINK */
358387Swnj 
368387Swnj #define	schednetisr(anisr)	{ netisr |= 1<<(anisr); setsoftnet(); }
378387Swnj 
3849344Swilliam #ifdef i386
3949344Swilliam /* XXX Temporary -- soon to vanish - wfj */
4049344Swilliam #define	NETISR_SCLK	11		/* softclock */
4149344Swilliam #define	NETISR_AST	12		/* ast -- resched */
4249344Swilliam 
4349344Swilliam #undef	schednetisr
4449344Swilliam #define	schednetisr(anisr)	{\
4549344Swilliam 	if(netisr == 0) { \
4649344Swilliam 		softem++; \
4749344Swilliam 	} \
4849344Swilliam 	netisr |= 1<<(anisr); \
4949344Swilliam }
508387Swnj #ifndef LOCORE
518387Swnj #ifdef KERNEL
5249344Swilliam int	softem;
5349344Swilliam #endif
5449344Swilliam #endif
5549344Swilliam #endif /* i386 */
5649344Swilliam 
5749344Swilliam #ifndef LOCORE
5849344Swilliam #ifdef KERNEL
598387Swnj int	netisr;				/* scheduling bits for network */
608387Swnj #endif
618387Swnj #endif
62