Lines Matching refs:wqv

43     struct waitqueue_vcpu *wqv;  in init_waitqueue_vcpu()  local
45 wqv = xzalloc(struct waitqueue_vcpu); in init_waitqueue_vcpu()
46 if ( wqv == NULL ) in init_waitqueue_vcpu()
50 wqv->stack = alloc_xenheap_page(); in init_waitqueue_vcpu()
51 if ( wqv->stack == NULL ) in init_waitqueue_vcpu()
53 xfree(wqv); in init_waitqueue_vcpu()
58 INIT_LIST_HEAD(&wqv->list); in init_waitqueue_vcpu()
59 wqv->vcpu = v; in init_waitqueue_vcpu()
61 v->waitqueue_vcpu = wqv; in init_waitqueue_vcpu()
68 struct waitqueue_vcpu *wqv; in destroy_waitqueue_vcpu() local
70 wqv = v->waitqueue_vcpu; in destroy_waitqueue_vcpu()
71 if ( wqv == NULL ) in destroy_waitqueue_vcpu()
74 BUG_ON(!list_empty(&wqv->list)); in destroy_waitqueue_vcpu()
76 free_xenheap_page(wqv->stack); in destroy_waitqueue_vcpu()
78 xfree(wqv); in destroy_waitqueue_vcpu()
96 struct waitqueue_vcpu *wqv; in wake_up_nr() local
102 wqv = list_entry(wq->list.next, struct waitqueue_vcpu, list); in wake_up_nr()
103 list_del_init(&wqv->list); in wake_up_nr()
104 vcpu_unpause(wqv->vcpu); in wake_up_nr()
105 put_domain(wqv->vcpu->domain); in wake_up_nr()
123 static void __prepare_to_wait(struct waitqueue_vcpu *wqv) in __prepare_to_wait() argument
131 ASSERT(wqv->esp == 0); in __prepare_to_wait()
134 wqv->wakeup_cpu = smp_processor_id(); in __prepare_to_wait()
135 cpumask_copy(&wqv->saved_affinity, curr->cpu_hard_affinity); in __prepare_to_wait()
136 if ( vcpu_set_hard_affinity(curr, cpumask_of(wqv->wakeup_cpu)) ) in __prepare_to_wait()
151 : "=&S" (wqv->esp), "=&c" (dummy), "=&D" (dummy) in __prepare_to_wait()
152 : "i" (PAGE_SIZE), "0" (0), "1" (cpu_info), "2" (wqv->stack) in __prepare_to_wait()
155 if ( unlikely(wqv->esp == 0) ) in __prepare_to_wait()
164 static void __finish_wait(struct waitqueue_vcpu *wqv) in __finish_wait() argument
166 wqv->esp = NULL; in __finish_wait()
167 (void)vcpu_set_hard_affinity(current, &wqv->saved_affinity); in __finish_wait()
172 struct waitqueue_vcpu *wqv = current->waitqueue_vcpu; in check_wakeup_from_wait() local
174 ASSERT(list_empty(&wqv->list)); in check_wakeup_from_wait()
176 if ( likely(wqv->esp == NULL) ) in check_wakeup_from_wait()
180 if ( unlikely(smp_processor_id() != wqv->wakeup_cpu) ) in check_wakeup_from_wait()
184 cpumask_copy(&wqv->saved_affinity, curr->cpu_hard_affinity); in check_wakeup_from_wait()
185 if ( vcpu_set_hard_affinity(curr, cpumask_of(wqv->wakeup_cpu)) ) in check_wakeup_from_wait()
195 : : "S" (wqv->stack), "D" (wqv->esp), in check_wakeup_from_wait()
196 "c" ((char *)get_cpu_info() - (char *)wqv->esp) in check_wakeup_from_wait()
202 #define __prepare_to_wait(wqv) ((void)0) argument
203 #define __finish_wait(wqv) ((void)0) argument
210 struct waitqueue_vcpu *wqv = curr->waitqueue_vcpu; in prepare_to_wait() local
213 __prepare_to_wait(wqv); in prepare_to_wait()
215 ASSERT(list_empty(&wqv->list)); in prepare_to_wait()
217 list_add_tail(&wqv->list, &wq->list); in prepare_to_wait()
226 struct waitqueue_vcpu *wqv = curr->waitqueue_vcpu; in finish_wait() local
228 __finish_wait(wqv); in finish_wait()
230 if ( list_empty(&wqv->list) ) in finish_wait()
234 if ( !list_empty(&wqv->list) ) in finish_wait()
236 list_del_init(&wqv->list); in finish_wait()