123159Smckusick /* 237472Ssklower * Copyright (c) 1980, 1986, 1989 Regents of the University of California. 333183Sbostic * All rights reserved. 423159Smckusick * 544465Sbostic * %sccs.include.redist.c% 633183Sbostic * 7*49344Swilliam * @(#)netisr.h 7.8 (Berkeley) 05/07/91 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 */ 348387Swnj 358387Swnj #define schednetisr(anisr) { netisr |= 1<<(anisr); setsoftnet(); } 368387Swnj 37*49344Swilliam #ifdef i386 38*49344Swilliam /* XXX Temporary -- soon to vanish - wfj */ 39*49344Swilliam #define NETISR_SCLK 11 /* softclock */ 40*49344Swilliam #define NETISR_AST 12 /* ast -- resched */ 41*49344Swilliam 42*49344Swilliam #undef schednetisr 43*49344Swilliam #define schednetisr(anisr) {\ 44*49344Swilliam if(netisr == 0) { \ 45*49344Swilliam softem++; \ 46*49344Swilliam } \ 47*49344Swilliam netisr |= 1<<(anisr); \ 48*49344Swilliam } 498387Swnj #ifndef LOCORE 508387Swnj #ifdef KERNEL 51*49344Swilliam int softem; 52*49344Swilliam #endif 53*49344Swilliam #endif 54*49344Swilliam #endif /* i386 */ 55*49344Swilliam 56*49344Swilliam #ifndef LOCORE 57*49344Swilliam #ifdef KERNEL 588387Swnj int netisr; /* scheduling bits for network */ 598387Swnj #endif 608387Swnj #endif 61