static bool xencons_resume(device_t dev, const pmf_qual_t *qual) { int evtch = -1; if (xendomain_is_dom0()) { /* dom0 console resume is required only during first start-up */ if (cold) { evtch = bind_virq_to_evtch(VIRQ_CONSOLE); event_set_handler(evtch, xencons_intr, xencons_console_device, IPL_TTY, "xencons"); } } else { evtch = xen_start_info.console_evtchn; event_set_handler(evtch, xencons_handler, xencons_console_device, IPL_TTY, "xencons"); } if (evtch != -1) { aprint_verbose_dev(dev, "using event channel %d\n", evtch); hypervisor_enable_event(evtch); } return true; }
static void init_interface(void) { block_io_op_t op; reset_interface(); if (blk_ring == NULL) { op.cmd = BLOCK_IO_OP_RING_ADDRESS; (void)HYPERVISOR_block_io_op(&op); blk_ring = (blk_ring_t *)uvm_km_valloc_align(kernel_map, PAGE_SIZE, PAGE_SIZE); pmap_kenter_ma((vaddr_t)blk_ring, op.u.ring_mfn << PAGE_SHIFT, VM_PROT_READ|VM_PROT_WRITE); DPRINTF(XBDB_SETUP, ("init_interface: " "ring va %p and wired to %p\n", blk_ring, (void *)(op.u.ring_mfn << PAGE_SHIFT))); blk_ring->req_prod = blk_ring->resp_prod = resp_cons = req_prod = last_req_prod = 0; event_set_handler(_EVENT_BLKDEV, &xbd_response_handler, NULL, IPL_BIO); hypervisor_enable_event(_EVENT_BLKDEV); } __insn_barrier(); state = STATE_ACTIVE; }
static void enable_update_events(struct device *self) { kthread_create(xbd_update_create_kthread, self); event_set_handler(_EVENT_VBD_UPD, &xbd_update_handler, self, IPL_BIO); hypervisor_enable_event(_EVENT_VBD_UPD); }
void xen_initclocks() { get_time_values_from_xen(); processed_system_time = shadow_system_time; event_set_handler(_EVENT_TIMER, (int (*)(void *))xen_timer_handler, NULL, IPL_CLOCK); hypervisor_enable_event(_EVENT_TIMER); }
/* Set up interrupt handler of store event channel. */ int xb_init_comms(device_t dev) { int evtchn; evtchn = xen_start_info.store_evtchn; event_set_handler(evtchn, wake_waiting, NULL, IPL_TTY, "xenbus"); hypervisor_enable_event(evtchn); aprint_verbose_dev(dev, "using event channel %d\n", evtchn); return 0; }
/* Set up interrupt handler off store event channel. */ int xb_init_comms(struct device *dev) { int err; if (xenbus_irq) event_remove_handler(xenbus_irq, wake_waiting, NULL); err = event_set_handler(xen_start_info.store_evtchn, wake_waiting, NULL, IPL_TTY, "xenbus"); if (err) { printf("XENBUS request irq failed %i\n", err); return err; } xenbus_irq = xen_start_info.store_evtchn; printf("%s: using event channel %d\n", dev->dv_xname, xenbus_irq); hypervisor_enable_event(xenbus_irq); return 0; }