cvs commit: src/sys/compat/ndis subr_ndis.c subr_ntoskrnl.c
wpaul at FreeBSD.org
Sun Nov 20 01:29:30 GMT 2005
wpaul 2005-11-20 01:29:30 UTC
FreeBSD src repository
sys/compat/ndis subr_ndis.c subr_ntoskrnl.c
Correct the API for Windows interupt handling a little. The prototype
for a Windows ISR is 'BOOLEAN isrfunc(KINTERRUPT *, void *)' meaning
the ISR get a pointer to the interrupt object and a context pointer,
and returns TRUE if the ISR determines the interrupt was really generated
by the associated device, or FALSE if not.
I had mistakenly used 'void isrfunc(void *)' instead. It happens the
only thing this affects is the internal ndis_intr() ISR in subr_ndis.c,
but it should be fixed just in case we ever need to register a real
Windows ISR vi IoConnectInterrupt().
For NDIS miniports that provide a MiniportISR() method, the 'is_our_intr'
value returned by the method serves as the return value from ndis_isr(),
and 'call_isr' is used to decide whether or not to schedule the interrupt
handler via DPC. For drivers that only supply MiniportEnableInterrupt()
and MiniportDisableInterrupt() methods, call_isr is always TRUE and
is_our_intr is always FALSE.
In the end, there should be no functional changes, except that now
ntoskrnl_intr() can terminate early once it finds the ISR that wants
to service the interrupt.
Revision Changes Path
1.103 +9 -10 src/sys/compat/ndis/subr_ndis.c
1.84 +4 -1 src/sys/compat/ndis/subr_ntoskrnl.c
More information about the cvs-src