예제 #1
0
파일: vgic.c 프로젝트: bryongloden/xen
/* 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;
}
예제 #2
0
파일: vgic.c 프로젝트: bryongloden/xen
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
파일: vgic.c 프로젝트: columbia/xen
/* 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;
}