Hirdetés

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

  • dabadab
    titán

    > vagy minden helyre külön odakopipészteled a felszabadítást, vagy mindenhonnan a végére gotozol.

    Mindenképpen mindenhová kell kopipésztelned vagy a gotot, vagy a felszabadítást. De sztem. ha ilyenre sor kerül a gyakorlatban, ott nem jól tervezték meg a logikai hálózatot. Biztos vagyok benne, hogy a megfelelő if-ek megválasztásával ha nem is teljesen, de nagyon nagy mértékben megszüntethető a sok helyről történő kilépés a függvényből. Max. 2 helyre nyugodtan lehet kopizni a felszabadítást is. De az is lehet, hogy megfelelő szervezéssel még a 2 helyet is le lehet redukálni egyre(de erre a fejemet nem teszem).

    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;
    }

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