From owner-freebsd-current Tue May 27 04:23:34 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id EAA08645 for current-outgoing; Tue, 27 May 1997 04:23:34 -0700 (PDT) Received: from godzilla.zeta.org.au (godzilla.zeta.org.au [203.2.228.19]) by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id EAA08640; Tue, 27 May 1997 04:23:24 -0700 (PDT) Received: (from bde@localhost) by godzilla.zeta.org.au (8.8.5/8.6.9) id VAA05558; Tue, 27 May 1997 21:18:52 +1000 Date: Tue, 27 May 1997 21:18:52 +1000 From: Bruce Evans Message-Id: <199705271118.VAA05558@godzilla.zeta.org.au> To: gurney_j@resnet.uoregon.edu, se@FreeBSD.ORG Subject: Re: cvs commit: src/sys/sys interrupt.h src/sys/kern kern_intr.c Cc: current@FreeBSD.ORG Sender: owner-current@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk >driver's handler in turn. There is no provision to deal >with Edge triggered shared interrupts, though. Your >driver will have to make sure, that the interrupt pin >sees a new Edge after you leave the multiplex handler, >or you will never again see an IRQ. This is normally >done by looping until the interrupt line has become >inactive, and this loop should go into the low level >(coded in assembler) interrupt code, IMHO ... No, the loop is best done in individual drivers. The low level code can't read the interrupt pin, at least for the ICU case, and drivers can more easily keep track of their state if they do they loop themselves. The only reason to return to the low level is to give other interrupt handlers a chance to run, which is only worth doing if all the drivers cooperate, but none do. Bruce