Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Jul 1999 05:04:42 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        bde@zeta.org.au, nsouch@teaser.fr
Cc:        current@FreeBSD.ORG, des@flood.ping.uio.no, obrien@NUXI.com, sobomax@altavista.net
Subject:   Re: PLIP is still broken :(
Message-ID:  <199907251904.FAA12887@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>>Otherwise,
>>the generic code is missing mainly update of the interrupt masks when
>>an interrupt is unregistered.
>
>For the low level side, we could consider something like the following code.
>But this shall be called by the nexus layer and then needs generic newbus
>support (as you said above, didn't you?).

>/*
> * Switch an irq from a maskptr to another without unregistering the irq
> * handler.
> * This function is supposed to work with only one handler per irq.
> */
>void
>switch_masks(intrmask_t *oldmaskptr, intrmask_t *newmaskptr, int irq)
...

I don't like most of this.  Driver level code won't even know the
correct maskptrs.  (irq, maskptr) pairs depend on i386 implementation
details for uniqueness.  Use { s = splhigh(); BUS_TEARDOWN_INTR(...);
BUS_SETUP_INTR(...); splx(s); } until/unless the newbus level provides
a better interface.  The problem with the masks not being updated when
interrupts are unregistered should be fixed in update*_masks().

Bruce


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199907251904.FAA12887>