Lines Matching refs:work
95 linux_work_exec_unblock(struct work_struct *work) in linux_work_exec_unblock() argument
101 wq = work->work_queue; in linux_work_exec_unblock()
107 if (exec->target == work) { in linux_work_exec_unblock()
123 tq = dwork->work.work_queue->taskqueue; in linux_delayed_work_enqueue()
124 taskqueue_enqueue(tq, &dwork->work.work_task); in linux_delayed_work_enqueue()
134 struct work_struct *work) in linux_queue_work_on() argument
145 return (!work_pending(work)); in linux_queue_work_on()
147 switch (linux_update_state(&work->state, states)) { in linux_queue_work_on()
150 if (linux_work_exec_unblock(work) != 0) in linux_queue_work_on()
154 work->work_queue = wq; in linux_queue_work_on()
155 taskqueue_enqueue(wq->taskqueue, &work->work_task); in linux_queue_work_on()
171 linux_queue_work_on(WORK_CPU_UNBOUND, rwork->wq, &rwork->work); in rcu_work_func()
183 if (!linux_work_pending(&rwork->work)) { in linux_queue_rcu_work()
201 if (linux_work_pending(&rwork->work)) { in linux_flush_rcu_work()
203 linux_flush_work(&rwork->work); in linux_flush_rcu_work()
206 return (linux_flush_work(&rwork->work)); in linux_flush_rcu_work()
228 return (!work_pending(&dwork->work)); in linux_queue_delayed_work_on()
230 switch (linux_update_state(&dwork->work.state, states)) { in linux_queue_delayed_work_on()
233 if (delay == 0 && linux_work_exec_unblock(&dwork->work) != 0) { in linux_queue_delayed_work_on()
239 dwork->work.work_queue = wq; in linux_queue_delayed_work_on()
271 struct work_struct *work; in linux_work_fn() local
279 work = context; in linux_work_fn()
280 wq = work->work_queue; in linux_work_fn()
283 exec.target = work; in linux_work_fn()
289 switch (linux_update_state(&work->state, states)) { in linux_work_fn()
296 task->work = work; in linux_work_fn()
299 work->func(work); in linux_work_fn()
302 task->work = NULL; in linux_work_fn()
306 if (exec.target != work) { in linux_work_fn()
308 exec.target = work; in linux_work_fn()
336 linux_work_fn(&dwork->work, pending); in linux_delayed_work_fn()
351 switch (linux_update_state(&dwork->work.state, states)) { in linux_delayed_work_timer_fn()
367 linux_cancel_work_sync(struct work_struct *work) in linux_cancel_work_sync() argument
382 switch (linux_update_state(&work->state, states)) { in linux_cancel_work_sync()
387 tq = work->work_queue->taskqueue; in linux_cancel_work_sync()
388 if (taskqueue_cancel(tq, &work->work_task, NULL) != 0) in linux_cancel_work_sync()
389 taskqueue_drain(tq, &work->work_task); in linux_cancel_work_sync()
392 tq = work->work_queue->taskqueue; in linux_cancel_work_sync()
393 if (taskqueue_cancel(tq, &work->work_task, NULL) != 0) in linux_cancel_work_sync()
394 taskqueue_drain(tq, &work->work_task); in linux_cancel_work_sync()
441 switch (linux_update_state(&dwork->work.state, states)) { in linux_cancel_delayed_work()
446 atomic_cmpxchg(&dwork->work.state, in linux_cancel_delayed_work()
453 tq = dwork->work.work_queue->taskqueue; in linux_cancel_delayed_work()
454 if (taskqueue_cancel(tq, &dwork->work.work_task, NULL) == 0) { in linux_cancel_delayed_work()
455 atomic_cmpxchg(&dwork->work.state, in linux_cancel_delayed_work()
491 state = linux_update_state(&dwork->work.state, states); in linux_cancel_delayed_work_sync()
500 tq = dwork->work.work_queue->taskqueue; in linux_cancel_delayed_work_sync()
501 ret = taskqueue_cancel(tq, &dwork->work.work_task, NULL); in linux_cancel_delayed_work_sync()
505 taskqueue_drain(tq, &dwork->work.work_task); in linux_cancel_delayed_work_sync()
508 tq = dwork->work.work_queue->taskqueue; in linux_cancel_delayed_work_sync()
509 ret = taskqueue_cancel(tq, &dwork->work.work_task, NULL); in linux_cancel_delayed_work_sync()
512 taskqueue_drain(tq, &dwork->work.work_task); in linux_cancel_delayed_work_sync()
523 linux_flush_work(struct work_struct *work) in linux_flush_work() argument
531 switch (atomic_read(&work->state)) { in linux_flush_work()
535 tq = work->work_queue->taskqueue; in linux_flush_work()
536 retval = taskqueue_poll_is_busy(tq, &work->work_task); in linux_flush_work()
537 taskqueue_drain(tq, &work->work_task); in linux_flush_work()
556 switch (atomic_read(&dwork->work.state)) { in linux_flush_delayed_work()
564 tq = dwork->work.work_queue->taskqueue; in linux_flush_delayed_work()
565 retval = taskqueue_poll_is_busy(tq, &dwork->work.work_task); in linux_flush_delayed_work()
566 taskqueue_drain(tq, &dwork->work.work_task); in linux_flush_delayed_work()
576 linux_work_pending(struct work_struct *work) in linux_work_pending() argument
578 switch (atomic_read(&work->state)) { in linux_work_pending()
592 linux_work_busy(struct work_struct *work) in linux_work_busy() argument
596 switch (atomic_read(&work->state)) { in linux_work_busy()
600 tq = work->work_queue->taskqueue; in linux_work_busy()
601 return (taskqueue_poll_is_busy(tq, &work->work_task)); in linux_work_busy()
643 dwork->work.func = func; in linux_init_delayed_work()
644 TASK_INIT(&dwork->work.work_task, 0, linux_delayed_work_fn, dwork); in linux_init_delayed_work()
653 return (current->work); in linux_current_work()