diff options
author | sos22@douglas.cl.cam.ac.uk <sos22@douglas.cl.cam.ac.uk> | 2006-07-28 14:02:49 +0100 |
---|---|---|
committer | sos22@douglas.cl.cam.ac.uk <sos22@douglas.cl.cam.ac.uk> | 2006-07-28 14:02:49 +0100 |
commit | a0f55d516b1eec2c53530338e6fab512586eea5f (patch) | |
tree | 9cfcfa5ad85d3d6e59a5398468b5a626d3e86810 /extras/mini-os | |
parent | d4b239ecc1455bd212c410bdb2bacaa2d3a6b702 (diff) | |
download | xen-a0f55d516b1eec2c53530338e6fab512586eea5f.tar.gz xen-a0f55d516b1eec2c53530338e6fab512586eea5f.tar.bz2 xen-a0f55d516b1eec2c53530338e6fab512586eea5f.zip |
[MINI-OS] Clean up event channel types in mini-os.
Signed-off-by: John D. Ramsdell <ramsdell@mitre.org>
Signed-off-by: Steven Smith <sos22@cam.ac.uk>
Diffstat (limited to 'extras/mini-os')
-rw-r--r-- | extras/mini-os/console/xencons_ring.c | 2 | ||||
-rw-r--r-- | extras/mini-os/events.c | 23 | ||||
-rw-r--r-- | extras/mini-os/include/events.h | 20 | ||||
-rw-r--r-- | extras/mini-os/time.c | 2 | ||||
-rw-r--r-- | extras/mini-os/xenbus/xenbus.c | 3 |
5 files changed, 24 insertions, 26 deletions
diff --git a/extras/mini-os/console/xencons_ring.c b/extras/mini-os/console/xencons_ring.c index 7693235ff0..6b02fcdc65 100644 --- a/extras/mini-os/console/xencons_ring.c +++ b/extras/mini-os/console/xencons_ring.c @@ -53,7 +53,7 @@ int xencons_ring_send(const char *data, unsigned len) -static void handle_input(int port, struct pt_regs *regs, void *ign) +static void handle_input(evtchn_port_t port, struct pt_regs *regs, void *ign) { struct xencons_interface *intf = xencons_interface(); XENCONS_RING_IDX cons, prod; diff --git a/extras/mini-os/events.c b/extras/mini-os/events.c index 23a0c0a453..641c86ceba 100644 --- a/extras/mini-os/events.c +++ b/extras/mini-os/events.c @@ -26,20 +26,20 @@ /* this represents a event handler. Chaining or sharing is not allowed */ typedef struct _ev_action_t { - void (*handler)(int, struct pt_regs *, void *); + evtchn_handler_t handler; void *data; u32 count; } ev_action_t; static ev_action_t ev_actions[NR_EVS]; -void default_handler(int port, struct pt_regs *regs, void *data); +void default_handler(evtchn_port_t port, struct pt_regs *regs, void *data); /* * Demux events to different handlers. */ -int do_event(u32 port, struct pt_regs *regs) +int do_event(evtchn_port_t port, struct pt_regs *regs) { ev_action_t *action; if (port >= NR_EVS) { @@ -60,8 +60,8 @@ int do_event(u32 port, struct pt_regs *regs) } -int bind_evtchn( u32 port, void (*handler)(int, struct pt_regs *, void *), - void *data ) +evtchn_port_t bind_evtchn(evtchn_port_t port, evtchn_handler_t handler, + void *data) { if(ev_actions[port].handler != default_handler) printk("WARN: Handler for port %d already registered, replacing\n", @@ -77,7 +77,7 @@ int bind_evtchn( u32 port, void (*handler)(int, struct pt_regs *, void *), return port; } -void unbind_evtchn( u32 port ) +void unbind_evtchn(evtchn_port_t port ) { if (ev_actions[port].handler == default_handler) printk("WARN: No handler for port %d when unbinding\n", port); @@ -86,8 +86,7 @@ void unbind_evtchn( u32 port ) ev_actions[port].data = NULL; } -int bind_virq( u32 virq, void (*handler)(int, struct pt_regs *, void *data), - void *data) +int bind_virq(uint32_t virq, evtchn_handler_t handler, void *data) { evtchn_op_t op; @@ -137,7 +136,7 @@ void init_events(void) } } -void default_handler(int port, struct pt_regs *regs, void *ignore) +void default_handler(evtchn_port_t port, struct pt_regs *regs, void *ignore) { printk("[Port %d] - event received\n", port); } @@ -145,11 +144,9 @@ void default_handler(int port, struct pt_regs *regs, void *ignore) /* Unfortunate confusion of terminology: the port is unbound as far as Xen is concerned, but we automatically bind a handler to it from inside mini-os. */ -int evtchn_alloc_unbound(void (*handler)(int, struct pt_regs *regs, - void *data), - void *data) +evtchn_port_t evtchn_alloc_unbound(evtchn_handler_t handler, void *data) { - u32 port; + evtchn_port_t port; evtchn_op_t op; int err; diff --git a/extras/mini-os/include/events.h b/extras/mini-os/include/events.h index 5e032bb4b4..1ffcecb61b 100644 --- a/extras/mini-os/include/events.h +++ b/extras/mini-os/include/events.h @@ -22,19 +22,19 @@ #include<traps.h> #include <xen/event_channel.h> +typedef void (*evtchn_handler_t)(evtchn_port_t, struct pt_regs *, void *); + /* prototypes */ -int do_event(u32 port, struct pt_regs *regs); -int bind_virq( u32 virq, void (*handler)(int, struct pt_regs *, void *data), - void *data); -int bind_evtchn( u32 virq, void (*handler)(int, struct pt_regs *, void *data), - void *data ); -void unbind_evtchn( u32 port ); +int do_event(evtchn_port_t port, struct pt_regs *regs); +int bind_virq(uint32_t virq, evtchn_handler_t handler, void *data); +evtchn_port_t bind_evtchn(evtchn_port_t port, evtchn_handler_t handler, + void *data); +void unbind_evtchn(evtchn_port_t port); void init_events(void); -int evtchn_alloc_unbound(void (*handler)(int, struct pt_regs *regs, - void *data), - void *data); +evtchn_port_t evtchn_alloc_unbound(evtchn_handler_t handler, + void *data); -static inline int notify_remote_via_evtchn(int port) +static inline int notify_remote_via_evtchn(evtchn_port_t port) { evtchn_op_t op; op.cmd = EVTCHNOP_send; diff --git a/extras/mini-os/time.c b/extras/mini-os/time.c index 1df4a26036..5567b5d391 100644 --- a/extras/mini-os/time.c +++ b/extras/mini-os/time.c @@ -215,7 +215,7 @@ void block_domain(u32 millisecs) /* * Just a dummy */ -static void timer_handler(int ev, struct pt_regs *regs, void *ign) +static void timer_handler(evtchn_port_t ev, struct pt_regs *regs, void *ign) { static int i; diff --git a/extras/mini-os/xenbus/xenbus.c b/extras/mini-os/xenbus/xenbus.c index 704ba58104..cb62eb3ef6 100644 --- a/extras/mini-os/xenbus/xenbus.c +++ b/extras/mini-os/xenbus/xenbus.c @@ -112,7 +112,8 @@ static void xenbus_thread_func(void *ign) } } -static void xenbus_evtchn_handler(int port, struct pt_regs *regs, void *ign) +static void xenbus_evtchn_handler(evtchn_port_t port, struct pt_regs *regs, + void *ign) { wake_up(&xb_waitq); } |