diff options
author | kaf24@freefall.cl.cam.ac.uk <kaf24@freefall.cl.cam.ac.uk> | 2004-11-13 16:10:28 +0000 |
---|---|---|
committer | kaf24@freefall.cl.cam.ac.uk <kaf24@freefall.cl.cam.ac.uk> | 2004-11-13 16:10:28 +0000 |
commit | 92d81c3c284e90da3169e79b5e8ab91e17403961 (patch) | |
tree | 0cded6b3db0680dc5bb92d9d42faccada49c7c5e /xen/include/xen/keyhandler.h | |
parent | d2d8210fc1e90400d59f21da8e7dc1922a4afffa (diff) | |
download | xen-92d81c3c284e90da3169e79b5e8ab91e17403961.tar.gz xen-92d81c3c284e90da3169e79b5e8ab91e17403961.tar.bz2 xen-92d81c3c284e90da3169e79b5e8ab91e17403961.zip |
bitkeeper revision 1.1159.170.18 (419631f46LScNrXRGEL-VrxeFQPSBA)
Clean up keyhandler interface. Now register a new keyhandler with
register_keyhandler() or register_irq_keyhandler().
Diffstat (limited to 'xen/include/xen/keyhandler.h')
-rw-r--r-- | xen/include/xen/keyhandler.h | 43 |
1 files changed, 31 insertions, 12 deletions
diff --git a/xen/include/xen/keyhandler.h b/xen/include/xen/keyhandler.h index 09e2f234ad..e3d49c9086 100644 --- a/xen/include/xen/keyhandler.h +++ b/xen/include/xen/keyhandler.h @@ -1,16 +1,35 @@ -/* -** We keep an array of 'handlers' for each key code between 0 and 255; -** this is intended to allow very simple debugging routines (toggle -** debug flag, dump registers, reboot, etc) to be hooked in in a slightly -** nicer fashion than just editing the serial/keyboard drivers. -*/ -struct xen_regs; +/****************************************************************************** + * keyhandler.h + * + * We keep an array of 'handlers' for each key code between 0 and 255; + * this is intended to allow very simple debugging routines (toggle + * debug flag, dump registers, reboot, etc) to be hooked in in a slightly + * nicer fashion than just editing the serial/keyboard drivers. + */ -typedef void key_handler(unsigned char key); +#ifndef __XEN_KEYHANDLER_H__ +#define __XEN_KEYHANDLER_H__ -extern void add_key_handler(unsigned char key, - key_handler *handler, char *desc); -extern void add_key_handler_no_defer(unsigned char key, - key_handler *handler, char *desc); +#include <asm/regs.h> +/* + * Register a callback function for key @key. The callback occurs in + * softirq context with no locks held and interrupts enabled. + */ +typedef void keyhandler_t(unsigned char key); +extern void register_keyhandler( + unsigned char key, keyhandler_t *handler, char *desc); + +/* + * Register an IRQ callback function for key @key. The callback occurs + * synchronously in hard-IRQ context with interrupts disabled. The @regs + * callback parameter points at the interrupted register context. + */ +typedef void irq_keyhandler_t(unsigned char key, struct xen_regs *regs); +extern void register_irq_keyhandler( + unsigned char key, irq_keyhandler_t *handler, char *desc); + +/* Inject a keypress into the key-handling subsystem. */ extern void handle_keypress(unsigned char key, struct xen_regs *regs); + +#endif /* __XEN_KEYHANDLER_H__ */ |