Lines Matching refs:work

138 void vhost_work_init(struct vhost_work *work, vhost_work_fn_t fn)  in vhost_work_init()  argument
140 INIT_LIST_HEAD(&work->node); in vhost_work_init()
141 work->fn = fn; in vhost_work_init()
142 init_waitqueue_head(&work->done); in vhost_work_init()
143 work->flushing = 0; in vhost_work_init()
144 work->queue_seq = work->done_seq = 0; in vhost_work_init()
158 vhost_work_init(&poll->work, fn); in vhost_poll_init()
196 static bool vhost_work_seq_done(struct vhost_dev *dev, struct vhost_work *work, in vhost_work_seq_done() argument
202 left = seq - work->done_seq; in vhost_work_seq_done()
207 void vhost_work_flush(struct vhost_dev *dev, struct vhost_work *work) in vhost_work_flush() argument
213 seq = work->queue_seq; in vhost_work_flush()
214 work->flushing++; in vhost_work_flush()
216 wait_event(work->done, vhost_work_seq_done(dev, work, seq)); in vhost_work_flush()
218 flushing = --work->flushing; in vhost_work_flush()
228 vhost_work_flush(poll->dev, &poll->work); in vhost_poll_flush()
232 void vhost_work_queue(struct vhost_dev *dev, struct vhost_work *work) in vhost_work_queue() argument
237 if (list_empty(&work->node)) { in vhost_work_queue()
238 list_add_tail(&work->node, &dev->work_list); in vhost_work_queue()
239 work->queue_seq++; in vhost_work_queue()
250 vhost_work_queue(poll->dev, &poll->work); in vhost_poll_queue()
286 struct vhost_work *work = NULL; in vhost_worker() local
298 if (work) { in vhost_worker()
299 work->done_seq = seq; in vhost_worker()
300 if (work->flushing) in vhost_worker()
301 wake_up_all(&work->done); in vhost_worker()
310 work = list_first_entry(&dev->work_list, in vhost_worker()
312 list_del_init(&work->node); in vhost_worker()
313 seq = work->queue_seq; in vhost_worker()
315 work = NULL; in vhost_worker()
318 if (work) { in vhost_worker()
320 work->fn(work); in vhost_worker()
414 struct vhost_work work; member
419 static void vhost_attach_cgroups_work(struct vhost_work *work) in vhost_attach_cgroups_work() argument
423 s = container_of(work, struct vhost_attach_cgroups_struct, work); in vhost_attach_cgroups_work()
432 vhost_work_init(&attach.work, vhost_attach_cgroups_work); in vhost_attach_cgroups()
433 vhost_work_queue(dev, &attach.work); in vhost_attach_cgroups()
434 vhost_work_flush(dev, &attach.work); in vhost_attach_cgroups()