Lines Matching refs:dwork

115 linux_delayed_work_enqueue(struct delayed_work *dwork)  in linux_delayed_work_enqueue()  argument
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()
166 struct delayed_work *dwork, unsigned delay) in linux_queue_delayed_work_on() argument
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()
183 dwork->timer.expires = jiffies; in linux_queue_delayed_work_on()
188 dwork->work.work_queue = wq; in linux_queue_delayed_work_on()
189 dwork->timer.expires = jiffies + delay; in linux_queue_delayed_work_on()
192 linux_delayed_work_enqueue(dwork); in linux_queue_delayed_work_on()
194 mtx_lock(&dwork->timer.mtx); in linux_queue_delayed_work_on()
195 callout_reset_on(&dwork->timer.callout, delay, in linux_queue_delayed_work_on()
196 &linux_delayed_work_timer_fn, dwork, cpu); in linux_queue_delayed_work_on()
197 mtx_unlock(&dwork->timer.mtx); in linux_queue_delayed_work_on()
199 mtx_lock(&dwork->timer.mtx); in linux_queue_delayed_work_on()
200 callout_reset(&dwork->timer.callout, delay, in linux_queue_delayed_work_on()
201 &linux_delayed_work_timer_fn, dwork); in linux_queue_delayed_work_on()
202 mtx_unlock(&dwork->timer.mtx); in linux_queue_delayed_work_on()
274 struct delayed_work *dwork = context; in linux_delayed_work_fn() local
283 callout_drain(&dwork->timer.callout); in linux_delayed_work_fn()
285 linux_work_fn(&dwork->work, pending); in linux_delayed_work_fn()
298 struct delayed_work *dwork = arg; in linux_delayed_work_timer_fn() local
300 switch (linux_update_state(&dwork->work.state, states)) { in linux_delayed_work_timer_fn()
303 linux_delayed_work_enqueue(dwork); in linux_delayed_work_timer_fn()
356 linux_cancel_timer(struct delayed_work *dwork, bool drain) in linux_cancel_timer() argument
360 mtx_lock(&dwork->timer.mtx); in linux_cancel_timer()
361 cancelled = (callout_stop(&dwork->timer.callout) == 1); in linux_cancel_timer()
362 mtx_unlock(&dwork->timer.mtx); in linux_cancel_timer()
366 callout_drain(&dwork->timer.callout); in linux_cancel_timer()
377 linux_cancel_delayed_work(struct delayed_work *dwork) in linux_cancel_delayed_work() argument
388 switch (linux_update_state(&dwork->work.state, states)) { in linux_cancel_delayed_work()
391 if (linux_cancel_timer(dwork, 0)) { 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()
416 linux_cancel_delayed_work_sync(struct delayed_work *dwork) in linux_cancel_delayed_work_sync() argument
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()
441 if (linux_cancel_timer(dwork, 1)) { 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()
492 linux_flush_delayed_work(struct delayed_work *dwork) in linux_flush_delayed_work() argument
500 switch (atomic_read(&dwork->work.state)) { in linux_flush_delayed_work()
504 if (linux_cancel_timer(dwork, 1)) in linux_flush_delayed_work()
505 linux_delayed_work_enqueue(dwork); 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()
584 linux_init_delayed_work(struct delayed_work *dwork, work_func_t func) in linux_init_delayed_work() argument
586 memset(dwork, 0, sizeof(*dwork)); in linux_init_delayed_work()
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()
589 mtx_init(&dwork->timer.mtx, spin_lock_name("lkpi-dwork"), NULL, in linux_init_delayed_work()
591 callout_init_mtx(&dwork->timer.callout, &dwork->timer.mtx, 0); in linux_init_delayed_work()