Lines Matching refs:task

40 int __rxe_do_task(struct rxe_task *task)  in __rxe_do_task()  argument
45 while ((ret = task->func(task->arg)) == 0) in __rxe_do_task()
48 task->ret = ret; in __rxe_do_task()
63 struct rxe_task *task = (struct rxe_task *)data; in rxe_do_task() local
65 spin_lock_irqsave(&task->state_lock, flags); in rxe_do_task()
66 switch (task->state) { in rxe_do_task()
68 task->state = TASK_STATE_BUSY; in rxe_do_task()
69 spin_unlock_irqrestore(&task->state_lock, flags); in rxe_do_task()
73 task->state = TASK_STATE_ARMED; in rxe_do_task()
76 spin_unlock_irqrestore(&task->state_lock, flags); in rxe_do_task()
80 spin_unlock_irqrestore(&task->state_lock, flags); in rxe_do_task()
81 pr_warn("%s failed with bad state %d\n", __func__, task->state); in rxe_do_task()
87 ret = task->func(task->arg); in rxe_do_task()
89 spin_lock_irqsave(&task->state_lock, flags); in rxe_do_task()
90 switch (task->state) { in rxe_do_task()
93 task->state = TASK_STATE_START; in rxe_do_task()
103 task->state = TASK_STATE_BUSY; in rxe_do_task()
109 task->state); in rxe_do_task()
111 spin_unlock_irqrestore(&task->state_lock, flags); in rxe_do_task()
114 task->ret = ret; in rxe_do_task()
117 int rxe_init_task(void *obj, struct rxe_task *task, in rxe_init_task() argument
120 task->obj = obj; in rxe_init_task()
121 task->arg = arg; in rxe_init_task()
122 task->func = func; in rxe_init_task()
123 snprintf(task->name, sizeof(task->name), "%s", name); in rxe_init_task()
124 task->destroyed = false; in rxe_init_task()
126 tasklet_init(&task->tasklet, rxe_do_task, (unsigned long)task); in rxe_init_task()
128 task->state = TASK_STATE_START; in rxe_init_task()
129 spin_lock_init(&task->state_lock); in rxe_init_task()
134 void rxe_cleanup_task(struct rxe_task *task) in rxe_cleanup_task() argument
143 task->destroyed = true; in rxe_cleanup_task()
146 spin_lock_irqsave(&task->state_lock, flags); in rxe_cleanup_task()
147 idle = (task->state == TASK_STATE_START); in rxe_cleanup_task()
148 spin_unlock_irqrestore(&task->state_lock, flags); in rxe_cleanup_task()
151 tasklet_kill(&task->tasklet); in rxe_cleanup_task()
154 void rxe_run_task(struct rxe_task *task, int sched) in rxe_run_task() argument
156 if (task->destroyed) in rxe_run_task()
160 tasklet_schedule(&task->tasklet); in rxe_run_task()
162 rxe_do_task((unsigned long)task); in rxe_run_task()
165 void rxe_disable_task(struct rxe_task *task) in rxe_disable_task() argument
167 tasklet_disable(&task->tasklet); in rxe_disable_task()
170 void rxe_enable_task(struct rxe_task *task) in rxe_enable_task() argument
172 tasklet_enable(&task->tasklet); in rxe_enable_task()