Lines Matching refs:workqueue
8 static kstat_t workqueue_is_exist(kworkqueue_t *workqueue) in workqueue_is_exist() argument
18 if (pos == workqueue) { in workqueue_is_exist()
61 kstat_t krhino_workqueue_create(kworkqueue_t *workqueue, const name_t *name, in krhino_workqueue_create() argument
67 NULL_PARA_CHK(workqueue); in krhino_workqueue_create()
79 ret = workqueue_is_exist(workqueue); in krhino_workqueue_create()
84 klist_init(&(workqueue->workqueue_node)); in krhino_workqueue_create()
85 klist_init(&(workqueue->work_list)); in krhino_workqueue_create()
86 workqueue->work_current = NULL; in krhino_workqueue_create()
87 workqueue->name = name; in krhino_workqueue_create()
89 ret = krhino_sem_create(&(workqueue->sem), "WORKQUEUE-SEM", 0); in krhino_workqueue_create()
95 klist_insert(&g_workqueue_list_head, &(workqueue->workqueue_node)); in krhino_workqueue_create()
98 ret = krhino_task_create(&(workqueue->worker), name, (void *)workqueue, pri, in krhino_workqueue_create()
102 klist_rm_init(&(workqueue->workqueue_node)); in krhino_workqueue_create()
104 krhino_sem_del(&(workqueue->sem)); in krhino_workqueue_create()
108 TRACE_WORKQUEUE_CREATE(krhino_cur_task_get(), workqueue); in krhino_workqueue_create()
113 kstat_t krhino_workqueue_del(kworkqueue_t *workqueue) in krhino_workqueue_del() argument
118 NULL_PARA_CHK(workqueue); in krhino_workqueue_del()
120 ret = workqueue_is_exist(workqueue); in krhino_workqueue_del()
127 if (!is_klist_empty(&(workqueue->work_list))) { in krhino_workqueue_del()
132 if (workqueue->work_current != NULL) { in krhino_workqueue_del()
139 ret = krhino_task_del(&(workqueue->worker)); in krhino_workqueue_del()
144 ret = krhino_sem_del(&(workqueue->sem)); in krhino_workqueue_del()
150 klist_rm_init(&(workqueue->workqueue_node)); in krhino_workqueue_del()
151 TRACE_WORKQUEUE_DEL(g_active_task[cpu_cur_get()], workqueue); in krhino_workqueue_del()
227 kstat_t krhino_work_run(kworkqueue_t *workqueue, kwork_t *work) in krhino_work_run() argument
232 NULL_PARA_CHK(workqueue); in krhino_work_run()
238 if (workqueue->work_current == work) { in krhino_work_run()
250 klist_insert(&(workqueue->work_list), &(work->work_node)); in krhino_work_run()
252 work->wq = workqueue; in krhino_work_run()
256 ret = krhino_sem_give(&(workqueue->sem)); in krhino_work_run()
264 ret = krhino_timer_arg_change_auto(work->timer, (void *)workqueue); in krhino_work_run()