[MINIOS] Fix to use new event-channel API properly.

Signed-off-by: Mark Williamson <mark.williamson@cl.cam.ac.uk>
This commit is contained in:
kaf24@firebug.cl.cam.ac.uk committed 2006-09-15 11:07:25 +01:00
1 parent eff691edc0
commit d1423b2882
3 files changed
+20 -24

No files matched your search

+15 -18
View File
@@ -88,19 +88,18 @@ void unbind_evtchn(evtchn_port_t port )
int bind_virq(uint32_t virq, evtchn_handler_t handler, void *data)
{
evtchn_op_t op;
evtchn_bind_virq_t op;
/* Try to bind the virq to a port */
op.cmd = EVTCHNOP_bind_virq;
op.u.bind_virq.virq = virq;
op.u.bind_virq.vcpu = smp_processor_id();
op.virq = virq;
op.vcpu = smp_processor_id();
if ( HYPERVISOR_event_channel_op(&op) != 0 )
if ( HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, &op) != 0 )
{
printk("Failed to bind virtual IRQ %d\n", virq);
return 1;
}
bind_evtchn(op.u.bind_virq.port, handler, data);
bind_evtchn(op.port, handler, data);
return 0;
}
@@ -151,14 +150,13 @@ void default_handler(evtchn_port_t port, struct pt_regs *regs, void *ignore)
int evtchn_alloc_unbound(domid_t pal, evtchn_handler_t handler,
void *data, evtchn_port_t *port)
{
evtchn_op_t op;
op.cmd = EVTCHNOP_alloc_unbound;
op.u.alloc_unbound.dom = DOMID_SELF;
op.u.alloc_unbound.remote_dom = pal;
int err = HYPERVISOR_event_channel_op(&op);
evtchn_alloc_unbound_t op;
op.dom = DOMID_SELF;
op.remote_dom = pal;
int err = HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, &op);
if (err)
return err;
*port = bind_evtchn(op.u.alloc_unbound.port, handler, data);
*port = bind_evtchn(op.port, handler, data);
return err;
}
@@ -169,14 +167,13 @@ int evtchn_bind_interdomain(domid_t pal, evtchn_port_t remote_port,
evtchn_handler_t handler, void *data,
evtchn_port_t *local_port)
{
evtchn_op_t op;
op.cmd = EVTCHNOP_bind_interdomain;
op.u.bind_interdomain.remote_dom = pal;
op.u.bind_interdomain.remote_port = remote_port;
int err = HYPERVISOR_event_channel_op(&op);
evtchn_bind_interdomain_t op;
op.remote_dom = pal;
op.remote_port = remote_port;
int err = HYPERVISOR_event_channel_op(EVTCHNOP_bind_interdomain, &op);
if (err)
return err;
evtchn_port_t port = op.u.bind_interdomain.local_port;
evtchn_port_t port = op.local_port;
clear_evtchn(port); /* Without, handler gets invoked now! */
*local_port = bind_evtchn(port, handler, data);
return err;
+3 -4
View File
@@ -39,10 +39,9 @@ int evtchn_bind_interdomain(domid_t pal, evtchn_port_t remote_port,
static inline int notify_remote_via_evtchn(evtchn_port_t port)
{
evtchn_op_t op;
op.cmd = EVTCHNOP_send;
op.u.send.port = port;
return HYPERVISOR_event_channel_op(&op);
evtchn_send_t op;
op.port = port;
return HYPERVISOR_event_channel_op(EVTCHNOP_send, &op);
}
@@ -238,9 +238,9 @@ HYPERVISOR_update_va_mapping(
static inline int
HYPERVISOR_event_channel_op(
void *op)
int cmd, void *op)
{
return _hypercall1(int, event_channel_op, op);
return _hypercall2(int, event_channel_op, cmd, op);
}
static inline int
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.