Lines Matching refs:work
91 linux_work_exec_unblock(struct work_struct *work) in linux_work_exec_unblock() argument
97 wq = work->work_queue; in linux_work_exec_unblock()
103 if (exec->target == work) { in linux_work_exec_unblock()
119 tq = dwork->work.work_queue->taskqueue; in linux_delayed_work_enqueue()
120 taskqueue_enqueue(tq, &dwork->work.work_task); in linux_delayed_work_enqueue()
130 struct work_struct *work) in linux_queue_work_on() argument
141 return (!work_pending(work)); in linux_queue_work_on()
143 switch (linux_update_state(&work->state, states)) { in linux_queue_work_on()
146 if (linux_work_exec_unblock(work) != 0) in linux_queue_work_on()
150 work->work_queue = wq; in linux_queue_work_on()
151 taskqueue_enqueue(wq->taskqueue, &work->work_task); in linux_queue_work_on()
177 return (!work_pending(&dwork->work)); in linux_queue_delayed_work_on()
179 switch (linux_update_state(&dwork->work.state, states)) { in linux_queue_delayed_work_on()
182 if (delay == 0 && linux_work_exec_unblock(&dwork->work) != 0) { in linux_queue_delayed_work_on()
188 dwork->work.work_queue = wq; in linux_queue_delayed_work_on()
220 struct work_struct *work; in linux_work_fn() local
228 work = context; in linux_work_fn()
229 wq = work->work_queue; in linux_work_fn()
232 exec.target = work; in linux_work_fn()
238 switch (linux_update_state(&work->state, states)) { in linux_work_fn()
245 task->work = work; in linux_work_fn()
248 work->func(work); in linux_work_fn()
251 task->work = NULL; in linux_work_fn()
255 if (exec.target != work) { in linux_work_fn()
257 exec.target = work; in linux_work_fn()
285 linux_work_fn(&dwork->work, pending); in linux_delayed_work_fn()
300 switch (linux_update_state(&dwork->work.state, states)) { in linux_delayed_work_timer_fn()
316 linux_cancel_work_sync(struct work_struct *work) in linux_cancel_work_sync() argument
331 switch (linux_update_state(&work->state, states)) { in linux_cancel_work_sync()
336 tq = work->work_queue->taskqueue; in linux_cancel_work_sync()
337 if (taskqueue_cancel(tq, &work->work_task, NULL) != 0) in linux_cancel_work_sync()
338 taskqueue_drain(tq, &work->work_task); in linux_cancel_work_sync()
341 tq = work->work_queue->taskqueue; in linux_cancel_work_sync()
342 if (taskqueue_cancel(tq, &work->work_task, NULL) != 0) in linux_cancel_work_sync()
343 taskqueue_drain(tq, &work->work_task); in linux_cancel_work_sync()
388 switch (linux_update_state(&dwork->work.state, states)) { in linux_cancel_delayed_work()
392 atomic_cmpxchg(&dwork->work.state, in linux_cancel_delayed_work()
398 tq = dwork->work.work_queue->taskqueue; in linux_cancel_delayed_work()
399 if (taskqueue_cancel(tq, &dwork->work.work_task, NULL) == 0) { in linux_cancel_delayed_work()
400 atomic_cmpxchg(&dwork->work.state, in linux_cancel_delayed_work()
431 switch (linux_update_state(&dwork->work.state, states)) { in linux_cancel_delayed_work_sync()
435 tq = dwork->work.work_queue->taskqueue; in linux_cancel_delayed_work_sync()
436 if (taskqueue_cancel(tq, &dwork->work.work_task, NULL) != 0) in linux_cancel_delayed_work_sync()
437 taskqueue_drain(tq, &dwork->work.work_task); in linux_cancel_delayed_work_sync()
446 tq = dwork->work.work_queue->taskqueue; in linux_cancel_delayed_work_sync()
447 taskqueue_drain(tq, &dwork->work.work_task); in linux_cancel_delayed_work_sync()
453 tq = dwork->work.work_queue->taskqueue; in linux_cancel_delayed_work_sync()
454 if (taskqueue_cancel(tq, &dwork->work.work_task, NULL) != 0) in linux_cancel_delayed_work_sync()
455 taskqueue_drain(tq, &dwork->work.work_task); in linux_cancel_delayed_work_sync()
467 linux_flush_work(struct work_struct *work) in linux_flush_work() argument
475 switch (atomic_read(&work->state)) { in linux_flush_work()
479 tq = work->work_queue->taskqueue; in linux_flush_work()
480 retval = taskqueue_poll_is_busy(tq, &work->work_task); in linux_flush_work()
481 taskqueue_drain(tq, &work->work_task); in linux_flush_work()
500 switch (atomic_read(&dwork->work.state)) { in linux_flush_delayed_work()
508 tq = dwork->work.work_queue->taskqueue; in linux_flush_delayed_work()
509 retval = taskqueue_poll_is_busy(tq, &dwork->work.work_task); in linux_flush_delayed_work()
510 taskqueue_drain(tq, &dwork->work.work_task); in linux_flush_delayed_work()
520 linux_work_pending(struct work_struct *work) in linux_work_pending() argument
522 switch (atomic_read(&work->state)) { in linux_work_pending()
536 linux_work_busy(struct work_struct *work) in linux_work_busy() argument
540 switch (atomic_read(&work->state)) { in linux_work_busy()
544 tq = work->work_queue->taskqueue; in linux_work_busy()
545 return (taskqueue_poll_is_busy(tq, &work->work_task)); in linux_work_busy()
587 dwork->work.func = func; in linux_init_delayed_work()
588 TASK_INIT(&dwork->work.work_task, 0, linux_delayed_work_fn, dwork); in linux_init_delayed_work()
597 return (current->work); in linux_current_work()