void vcpu_unlock_affinity(struct vcpu *v, cpumask_t *affinity) { cpumask_t online_affinity; /* Do not fail if no CPU in old affinity mask is online. */ cpus_and(online_affinity, *affinity, cpu_online_map); if ( cpus_empty(online_affinity) ) *affinity = cpu_online_map; if ( __vcpu_set_affinity(v, affinity, 1, 0) != 0 ) BUG(); }
int vcpu_set_affinity(struct vcpu *v, cpumask_t *affinity) { if ( v->domain->is_pinned ) return -EINVAL; return __vcpu_set_affinity(v, affinity, 0, 0); }
int vcpu_lock_affinity(struct vcpu *v, cpumask_t *affinity) { return __vcpu_set_affinity(v, affinity, 0, 1); }
int vcpu_locked_change_affinity(struct vcpu *v, cpumask_t *affinity) { return __vcpu_set_affinity(v, affinity, 1, 1); }