Skip to contentSkip to conversation

Make bind_virq return the port

PATCH New Samuel Thibault 1 participant 1 message Nov 23, 2007

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Make bind_virq return the port

Make bind_virq() return the port bound to the irq, which is useful e.g. for masking/unmasking it.

extras/mini-os/arch/ia64/time.c +1 -1
diff -r 2e05a6173be0 extras/mini-os/arch/ia64/time.c
@@ -267,7 +267,7 @@ init_time(void)
 		printk("efi_get_time() failed\n");
 
 	err = bind_virq(VIRQ_ITC, timer_interrupt, NULL);
-	if (err != 0) {
+	if (err == -1) {
 		printk("XEN timer request chn bind failed %i\n", err);
 		return;
 	}
extras/mini-os/events.c +3 -3
diff -r 2e05a6173be0 extras/mini-os/events.c
@@ -102,7 +102,7 @@ void unbind_evtchn(evtchn_port_t port )
 	ev_actions[port].data = NULL;
 }
 
-int bind_virq(uint32_t virq, evtchn_handler_t handler, void *data)
+evtchn_port_t bind_virq(uint32_t virq, evtchn_handler_t handler, void *data)
 {
 	evtchn_bind_virq_t op;
 
@@ -113,11 +113,11 @@ int bind_virq(uint32_t virq, evtchn_hand
 	if ( HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, &op) != 0 )
 	{
 		printk("Failed to bind virtual IRQ %d\n", virq);
-		return 1;
+		return -1;
     }
     set_bit(op.port,bound_ports);
     bind_evtchn(op.port, handler, data);
-	return 0;
+	return op.port;
 }
 
 #if defined(__x86_64__)
extras/mini-os/include/events.h +1 -1
diff -r 2e05a6173be0 extras/mini-os/include/events.h
@@ -26,7 +26,7 @@ typedef void (*evtchn_handler_t)(evtchn_
 
 /* prototypes */
 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_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);