pirq
struct pirq *pirq;
pirq = &pirqs[pin - 1];
pthread_mutex_lock(&pirq->lock);
if (pirq->reg != (val & (PIRQ_DIS | PIRQ_IRQ))) {
if (pirq->active_count != 0 && pirq_valid_irq(pirq->reg))
vm_isa_deassert_irq(ctx, pirq->reg & PIRQ_IRQ, -1);
pirq->reg = val & (PIRQ_DIS | PIRQ_IRQ);
if (pirq->active_count != 0 && pirq_valid_irq(pirq->reg))
vm_isa_assert_irq(ctx, pirq->reg & PIRQ_IRQ, -1);
pthread_mutex_unlock(&pirq->lock);
struct pirq *pirq;
pirq = &pirqs[pin - 1];
pthread_mutex_lock(&pirq->lock);
pirq->active_count++;
if (pirq->active_count == 1 && pirq_valid_irq(pirq->reg)) {
vm_isa_assert_irq(pi->pi_vmctx, pirq->reg & PIRQ_IRQ,
pthread_mutex_unlock(&pirq->lock);
pthread_mutex_unlock(&pirq->lock);
struct pirq *pirq;
pirq = &pirqs[pin - 1];
pthread_mutex_lock(&pirq->lock);
pirq->active_count--;
if (pirq->active_count == 0 && pirq_valid_irq(pirq->reg)) {
vm_isa_deassert_irq(pi->pi_vmctx, pirq->reg & PIRQ_IRQ,
pthread_mutex_unlock(&pirq->lock);
pthread_mutex_unlock(&pirq->lock);
uint8_t pirq;
uint32_t pirq;
uint32_t pirq; /* EVTCHNSTAT_pirq */
int pirq;
int pirq;
map_irq.pirq = -1;
irqno = map_irq.pirq;
map_irq.pirq = -1;
irqno = map_irq.pirq;
unmap_pirq.pirq = msi_vector_to_pirq[irqptr->airq_vector];
xen_bind_pirq(int pirq)
bind.pirq = pirq;
pirq_unmask_notify(int pirq)
if (TEST_EVTCHN_BIT(pirq, &pirq_needs_eoi[0])) {
eoi.irq = pirq;
pirq_query_unmask(int pirq)
irq_status.irq = pirq;
CLEAR_EVTCHN_BIT(pirq, &pirq_needs_eoi[0]);
SET_EVTCHN_BIT(pirq, &pirq_needs_eoi[0]);
#define PIRQ_TO_IRQ(pirq) ((pirq) + PIRQ_BASE)