Hirdetés

Új hozzászólás Aktív témák

  • Livius
    őstag

    Akkor tessék, demonstráld:

    static int kvm_vcpu_check_block(struct kvm_vcpu *vcpu)
    {
    int ret = -EINTR;
    int idx = srcu_read_lock(&vcpu->kvm->srcu);

    if (kvm_arch_vcpu_runnable(vcpu)) {
    kvm_make_request(KVM_REQ_UNHALT, vcpu);
    goto out;
    }
    if (kvm_cpu_has_pending_timer(vcpu))
    goto out;
    if (signal_pending(current))
    goto out;

    ret = 0;
    out:
    srcu_read_unlock(&vcpu->kvm->srcu, idx);
    return ret;
    }

    Én ilyenkor inkább így szoktam:

    static int kvm_vcpu_check_block(struct kvm_vcpu *vcpu)
    {
    int ret = 0;
    int idx = srcu_read_lock(&vcpu->kvm->srcu);

    if (kvm_arch_vcpu_runnable(vcpu)) {
    kvm_make_request(KVM_REQ_UNHALT, vcpu);
    ret = -EINTR;
    }
    if (kvm_cpu_has_pending_timer(vcpu))
    {
    ret = -EINTR;
    }
    if (signal_pending(current))
    {
    ret = -EINTR;
    }

    srcu_read_unlock(&vcpu->kvm->srcu, idx);
    return ret;
    }

    Persze ekkor az nincs lekezelve, hogy a többi if-et kihagyja a returnbe érés előtt, ez kérdés szabad-e ebben a Linux driverben.

Új hozzászólás Aktív témák