aboutsummaryrefslogtreecommitdiffstats
path: root/extras/mini-os/events.c
diff options
context:
space:
mode:
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-03-15 20:25:50 +0100
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-03-15 20:25:50 +0100
commita54b2baac24a08b82791ede1491f31ce9408af3f (patch)
treee6504405ba4086d61b1aa41e0122f0828e02dca1 /extras/mini-os/events.c
parent7999d904265804ce344cf05a6bdf76429439f9a8 (diff)
downloadxen-a54b2baac24a08b82791ede1491f31ce9408af3f.tar.gz
xen-a54b2baac24a08b82791ede1491f31ce9408af3f.tar.bz2
xen-a54b2baac24a08b82791ede1491f31ce9408af3f.zip
Implement console for Mini-os and also fix 2 bugs:
a) in initialising new page table frames b) in initialising idle thread. Signed-off-by: Grzegorz Milos <gm281@cam.ac.uk>
Diffstat (limited to 'extras/mini-os/events.c')
-rw-r--r--extras/mini-os/events.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/extras/mini-os/events.c b/extras/mini-os/events.c
index 9201128636..3c4b998810 100644
--- a/extras/mini-os/events.c
+++ b/extras/mini-os/events.c
@@ -22,6 +22,7 @@
#include <events.h>
#include <lib.h>
+
static ev_action_t ev_actions[NR_EVS];
void default_handler(int port, struct pt_regs *regs);
@@ -58,7 +59,7 @@ int do_event(u32 port, struct pt_regs *regs)
int bind_evtchn( u32 port, void (*handler)(int, struct pt_regs *) )
{
- if(ev_actions[port].handler)
+ if(ev_actions[port].handler != default_handler)
printk("WARN: Handler for port %d already registered, replacing\n",
port);
@@ -73,7 +74,7 @@ int bind_evtchn( u32 port, void (*handler)(int, struct pt_regs *) )
void unbind_evtchn( u32 port )
{
- if (!ev_actions[port].handler)
+ if (ev_actions[port].handler)
printk("WARN: No handler for port %d when unbinding\n", port);
ev_actions[port].handler = NULL;
ev_actions[port].status |= EVS_DISABLED;