Date: Thu, 15 Mar 2001 18:25:30 -0800 (PST) From: John Baldwin <jhb@FreeBSD.org> To: arch@FreeBSD.org Subject: Proposal for the CPU interrupt API Message-ID: <XFMail.010315182530.jhb@FreeBSD.org>
next in thread | raw e-mail | index | archive | help
<bikeshed color="green"/ I've got a couple of changes I'd like to make to the rather simple API we have for maintaining CPU interrupt state. Currently we have this: void disable_intr(void); - disable interrupts void enable_intr(void); - enable interrupts u_int save_intr(void); - get interrupt state void restore_intr(u_int); - set interrupt state 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 then removes the need for save_intr(), and restore_intr() can stay the same. Another suggestion I've received is to use intrmask_t as the type for holding interrupt state rather than u_int. 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); and the code above would become this instead: intrmask_t foo = intr_disable(); ... intr_restore(foo); Comments, objections? / -- John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/ PGP Key: http://www.baldwin.cx/~john/pgpkey.asc "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ 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?XFMail.010315182530.jhb>