Date: Sun, 03 Nov 1996 00:43:51 -0800 From: David Greenman <dg@Root.COM> To: Steve Passe <smp@csn.net> Cc: hackers@freefall.freebsd.org, smp@freefall.freebsd.org Subject: Re: ed0 timeouts Message-ID: <199611030843.AAA23866@root.com> In-Reply-To: Your message of "Sat, 02 Nov 1996 23:43:56 MST." <199611030643.XAA25052@clem.systemsix.com>
next in thread | previous in thread | raw e-mail | index | archive | help
>Question: > >Is it possible for a new INT to be asserted by the if_ed driver WHILE >it is currently being serviced by the edintr() routine? > >What I have discovered is that unlike the 8259, the IO APIC will ignore >(ie NOT delivered or held pending) an edge level INT if it currently is >masked. The routine in vector.s masks the INT, calls edintr(), then after >edintr() returns it unmasks the INT. If another INT fired as a result >of ed_start() being called in edintr() BEFORE the INT was unmasked it >would be LOST. Yes, you can get another interrupt while servicing one. The driver loops until all interrupts are serviced, but there would be a window between when it thinks there are no more interrupts to service and returning to vector.s to unmask the interrupts. This window will exist in all ISA drivers. -DG David Greenman Core-team/Principal Architect, The FreeBSD Project
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199611030843.AAA23866>