void mask_evtchn(int port) { shared_info_t *s = HYPERVISOR_shared_info; synch_set_bit(port, &s->evtchn_mask[0]); }
void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) { int evtchn = evtchn_from_irq(i); shared_info_t *s = HYPERVISOR_shared_info; if (!VALID_EVTCHN(evtchn)) return; BUG_ON(!synch_test_bit(evtchn, &s->evtchn_mask[0])); synch_set_bit(evtchn, &s->evtchn_pending[0]); }
static int retrigger(unsigned int irq) { int evtchn = evtchn_from_irq(irq); shared_info_t *s = HYPERVISOR_shared_info; if (!VALID_EVTCHN(evtchn)) return 1; synch_set_bit(evtchn, &s->evtchn_pending[0]); return 1; }
int resend_irq_on_evtchn(unsigned int irq) { int masked, evtchn = evtchn_from_irq(irq); shared_info_t *s = HYPERVISOR_shared_info; if (!VALID_EVTCHN(evtchn)) return 1; masked = test_and_set_evtchn_mask(evtchn); synch_set_bit(evtchn, s->evtchn_pending); if (!masked) unmask_evtchn(evtchn); return 1; }
/** * @brief Trigger an event notification on the specified channel */ static void vmbus_channel_set_event(hv_vmbus_channel *channel) { if (channel->offer_msg.monitor_allocated) { struct vmbus_softc *sc = vmbus_get_softc(); hv_vmbus_monitor_page *monitor_page; uint32_t chanid = channel->offer_msg.child_rel_id; atomic_set_long( &sc->vmbus_tx_evtflags[chanid >> VMBUS_EVTFLAG_SHIFT], 1UL << (chanid & VMBUS_EVTFLAG_MASK)); monitor_page = sc->vmbus_mnf2; synch_set_bit(channel->monitor_bit, (uint32_t *)&monitor_page-> trigger_group[channel->monitor_group].u.pending); } else {
/** * @brief Trigger an event notification on the specified channel */ static void vmbus_channel_set_event(hv_vmbus_channel *channel) { hv_vmbus_monitor_page *monitor_page; if (channel->offer_msg.monitor_allocated) { /* Each uint32_t represents 32 channels */ synch_set_bit((channel->offer_msg.child_rel_id & 31), ((uint32_t *)hv_vmbus_g_connection.send_interrupt_page + ((channel->offer_msg.child_rel_id >> 5)))); monitor_page = (hv_vmbus_monitor_page *) hv_vmbus_g_connection.monitor_page_2; synch_set_bit(channel->monitor_bit, (uint32_t *)&monitor_page-> trigger_group[channel->monitor_group].u.pending); } else {
inline void mask_evtchn(uint32_t port) { shared_info_t *s = g_sharedInfoArea; synch_set_bit(port, &s->evtchn_mask[0]); }
void mask_evtchn(int port) { shared_info_t *s = shared_info_area; synch_set_bit(port, &s->evtchn_mask[0]); }