📄 ue_intr.c,v
字号:
head 1.2;access;symbols;locks dls:1.2; strict;comment @ * @;1.2date 97.09.21.19.26.10; author dls; state Dist;branches;next 1.1;1.1date 94.08.04.20.19.17; author dls; state Orig;branches;next ;desc@@1.2log@pre-3e code@text@/* ue_intr.c - ue_intr */#include <conf.h>#include <kernel.h>#include <network.h>#include <ue.h>/*------------------------------------------------------------------------ * ue_intr - handle an SMC Ultra Ethernet device interrupt *------------------------------------------------------------------------ */intue_intr(){ struct utdev *pud; static int next; struct ep *pep; int i; unsigned int csr, intstat; pud = 0; for (i=0; i<Neth; ++i, ++next) { if (next >= Neth) next = 0; if (intstat = ue_hasintr(&ue[next])) { pud = &ue[next]; break; } } if (pud == 0) return; csr = pud->ud_pdev->dvcsr; uewr(csr, W_INTMASK, 0); uewr(csr, INTSTAT, intstat); /* clear the interrupt */ if (intstat & INTSTAT_PTX) ue_xintr(pud, intstat & INTSTAT_TXE); if (intstat & INTSTAT_RXE) kprintf("receive error, rstat %x\n", uerd(csr, RSTAT)); if (intstat & INTSTAT_TXE) kprintf("receive error, rstat %x\n", uerd(csr, TSTAT)); uewr(csr, W_INTMASK, 0x7f); if (intstat & INTSTAT_PRX) ue_demux(pud);}/*------------------------------------------------------------------------ * ue_hasintr - return true if this ue device has a pending interrupt *------------------------------------------------------------------------ */intue_hasintr(pud)struct utdev *pud;{ return uerd(pud->ud_pdev->dvcsr, INTSTAT);}/*------------------------------------------------------------------------ * ue_xintr - handle a transmit interrupt on an SMC Ultra Ethernet *------------------------------------------------------------------------ */intue_xintr(pud, err)struct utdev *pud;{ if (err) {kprintf("transmit error\n"); } pud->ud_xpending--; if (lenq(pud->ud_outq)) ue_wstrt(pud);}@1.1log@Initial revision@text@a34 2 if (intstat & INTSTAT_PRX) ue_demux(pud, pud->ud_nextbuf);d42 2@
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -