Date: Fri, 16 Mar 2001 21:24:34 +1100 (EST) From: Bruce Evans <bde@zeta.org.au> To: John Baldwin <jhb@FreeBSD.ORG> Cc: arch@FreeBSD.ORG Subject: Re: Proposal for the CPU interrupt API Message-ID: <Pine.BSF.4.21.0103162110020.12084-100000@besplex.bde.org> In-Reply-To: <XFMail.010315182530.jhb@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 15 Mar 2001, John Baldwin wrote: > ... > Typically, interrupts are disabled in the following fashion: > > u_int foo = save_intr(); > disable_intr(); > ... > restore_intr(foo); > > Unfortunately, this can be somewhat expensive on the Alpha, as both > save_intr() and disable_intr() involve a PAL call. However, the Alpha > returns the previous state whenever you set the interrupt state, which > allows you to only make 1 PAL call. Thus, I'm proposing to change > disable/enable_intr to return the previous state in addition to setting > the state. This would be a minor pessimization on i386's. WHether it is an optimization or a pessimization is very MD. It would be a major pessimization on i386's with ICUs if we put the entire interrupt state including the ICU masks in the interrrupt state. > This then removes the need for save_intr(), and > restore_intr() can stay the same. This doesn't remove the need for save_intr(). I use it in at least one place (perhaps only one :-) where I don't want to disable interrupts any more than they already are. > Another suggestion I've received is to use intrmask_t as the type > for holding interrupt state rather than u_int. OK. > Finally, another suggestion has been to fudge the names some to stick > all of these functions in one intr_* namespace. > > The end result of these changes would be this: > > intrmask_t intr_disable(void); > intrmask_t intr_enable(void); > void intr_restore(intrmask_t); I don't like names like this much. It's really a mistake to let this stuff escape from MD code. Frotunately, it hasn't escaped far yet. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0103162110020.12084-100000>