Lines Matching refs:work
68 struct work_struct *work; in process_all_work() local
72 work = STAILQ_FIRST(&worker->ws_list_head); in process_all_work()
74 work->on_queue = false; in process_all_work()
77 if (work->running) in process_all_work()
81 if (work->canceled) { in process_all_work()
83 work->canceled = false; in process_all_work()
87 work->running = true; in process_all_work()
89 work->func(work); in process_all_work()
92 if (work->on_queue == false) in process_all_work()
93 work->worker = NULL; in process_all_work()
94 didcan = work->canceled; in process_all_work()
96 work->running = false; in process_all_work()
98 wakeup(work); in process_all_work()
120 queue_work(struct workqueue_struct *wq, struct work_struct *work) in queue_work() argument
135 work->canceled = false; in queue_work()
136 if (work->on_queue == false || work->running == false) { in queue_work()
137 if (work->on_queue == false) { in queue_work()
138 STAILQ_INSERT_TAIL(&worker->ws_list_head, work, in queue_work()
140 work->on_queue = true; in queue_work()
141 work->worker = worker; in queue_work()
156 queue_work(system_wq, &dw->work); in _delayed_work_fn()
160 queue_delayed_work(struct workqueue_struct *wq, struct delayed_work *work, in queue_delayed_work() argument
163 int pending = work->work.on_queue; // XXX: running too ? in queue_delayed_work()
165 callout_reset(&work->timer, delay, _delayed_work_fn, work); in queue_delayed_work()
167 _delayed_work_fn((void *)work); in queue_delayed_work()
262 return flush_work(&dwork->work); in flush_delayed_work()
289 work_pending(struct work_struct *work) in work_pending() argument
292 return work->on_queue; in work_pending()
296 work_busy(struct work_struct *work) in work_busy() argument
298 return (work->on_queue || work->running); in work_busy()
302 __flush_work_func(struct work_struct *work) in __flush_work_func() argument
304 wakeup_one(work); in __flush_work_func()
326 flush_work(struct work_struct *work) in flush_work() argument
331 while (work->on_queue || work->running) { in flush_work()
341 _cancel_work(struct work_struct *work, bool sync_wait) in _cancel_work() argument
349 if (work->on_queue) { in _cancel_work()
350 worker = work->worker; in _cancel_work()
354 if (worker != work->worker || work->on_queue == false) { in _cancel_work()
358 STAILQ_REMOVE(&worker->ws_list_head, work, in _cancel_work()
360 work->on_queue = false; in _cancel_work()
364 if (work->running == false) in _cancel_work()
367 worker = work->worker; in _cancel_work()
371 if (worker != work->worker || work->running == false) { in _cancel_work()
375 work->canceled = true; in _cancel_work()
382 lksleep(work, &worker->worker_lock, 0, "wqcan", 1); in _cancel_work()
397 cancel_work_sync(struct work_struct *work) in cancel_work_sync() argument
399 return _cancel_work(work, true); in cancel_work_sync()
407 struct work_struct *work = &dwork->work; in cancel_delayed_work() local
409 work->canceled = true; in cancel_delayed_work()
412 return _cancel_work(work, false); in cancel_delayed_work()
418 struct work_struct *work = &dwork->work; in cancel_delayed_work_sync() local
420 work->canceled = true; in cancel_delayed_work_sync()
423 return _cancel_work(work, true); in cancel_delayed_work_sync()
430 return work_pending(&dw->work); in delayed_work_pending()
434 destroy_work_on_stack(struct work_struct *work) in destroy_work_on_stack() argument
439 destroy_delayed_work_on_stack(struct delayed_work *work) in destroy_delayed_work_on_stack() argument