aboutsummaryrefslogtreecommitdiffstats
path: root/extras
diff options
context:
space:
mode:
authorsos22@douglas.cl.cam.ac.uk <sos22@douglas.cl.cam.ac.uk>2006-07-28 14:02:49 +0100
committersos22@douglas.cl.cam.ac.uk <sos22@douglas.cl.cam.ac.uk>2006-07-28 14:02:49 +0100
commita0f55d516b1eec2c53530338e6fab512586eea5f (patch)
tree9cfcfa5ad85d3d6e59a5398468b5a626d3e86810 /extras
parentd4b239ecc1455bd212c410bdb2bacaa2d3a6b702 (diff)
downloadxen-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')
-rw-r--r--extras/mini-os/console/xencons_ring.c2
-rw-r--r--extras/mini-os/events.c23
-rw-r--r--extras/mini-os/include/events.h20
-rw-r--r--extras/mini-os/time.c2
-rw-r--r--extras/mini-os/xenbus/xenbus.c3
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);
}