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