Lines Matching refs:worker
285 struct kthread_worker *worker = worker_ptr;
288 WARN_ON(worker->task);
289 worker->task = current;
295 spin_lock_irq(&worker->lock);
296 worker->task = NULL;
297 spin_unlock_irq(&worker->lock);
302 spin_lock_irq(&worker->lock);
303 if (!list_empty(&worker->work_list)) {
304 work = list_first_entry(&worker->work_list,
308 spin_unlock_irq(&worker->lock);
313 smp_wmb(); /* wmb worker-b0 paired with flush-b1 */
315 smp_mb(); /* mb worker-b1 paired with flush-b0 */
328 * @worker: target kthread_worker
335 bool queue_kthread_work(struct kthread_worker *worker,
341 spin_lock_irqsave(&worker->lock, flags);
343 list_add_tail(&work->node, &worker->work_list);
345 if (likely(worker->task))
346 wake_up_process(worker->task);
349 spin_unlock_irqrestore(&worker->lock, flags);
367 * mb flush-b0 paired with worker-b1, to make sure either
368 * worker sees the above increment or we see done_seq update.
377 * rmb flush-b1 paired with worker-b0, to make sure our caller
398 * @worker: worker to flush
400 * Wait until all currently executing or pending works on @worker are
403 void flush_kthread_worker(struct kthread_worker *worker)
410 queue_kthread_work(worker, &fwork.work);