Пример #1
0
/* The function should be called by rank lock taken. */
static struct vcpu *__vgic_get_target_vcpu(struct vcpu *v, unsigned int virq)
{
    struct vgic_irq_rank *rank = vgic_rank_irq(v, virq);

    ASSERT(spin_is_locked(&rank->lock));

    return v->domain->vcpu[rank->vcpu[virq & INTERRUPT_RANK_MASK]];
}
Пример #2
0
static int vgic_get_virq_priority(struct vcpu *v, unsigned int virq)
{
    struct vgic_irq_rank *rank = vgic_rank_irq(v, virq);
    unsigned long flags;
    int priority;

    vgic_lock_rank(v, rank, flags);
    priority = rank->priority[virq & INTERRUPT_RANK_MASK];
    vgic_unlock_rank(v, rank, flags);

    return priority;
}
Пример #3
0
/* takes the rank lock */
struct vcpu *vgic_get_target_vcpu(struct vcpu *v, unsigned int virq)
{
    struct vcpu *v_target;
    struct vgic_irq_rank *rank = vgic_rank_irq(v, virq);
    unsigned long flags;

    vgic_lock_rank(v, rank, flags);
    v_target = __vgic_get_target_vcpu(v, virq);
    vgic_unlock_rank(v, rank, flags);

    return v_target;
}
Пример #4
0
/* takes the rank lock */
struct vcpu *vgic_get_target_vcpu(struct vcpu *v, unsigned int irq)
{
    struct domain *d = v->domain;
    struct vcpu *v_target;
    struct vgic_irq_rank *rank = vgic_rank_irq(v, irq);
    unsigned long flags;

    vgic_lock_rank(v, rank, flags);
    v_target = d->arch.vgic.handler->get_target_vcpu(v, irq);
    vgic_unlock_rank(v, rank, flags);
    return v_target;
}