Lines Matching refs:vtsk
29 struct vhost_task *vtsk = data; in vhost_task_fn() local
44 if (test_bit(VHOST_TASK_FLAGS_STOP, &vtsk->flags)) { in vhost_task_fn()
49 did_work = vtsk->fn(vtsk->data); in vhost_task_fn()
54 mutex_lock(&vtsk->exit_mutex); in vhost_task_fn()
60 if (!test_bit(VHOST_TASK_FLAGS_STOP, &vtsk->flags)) { in vhost_task_fn()
61 set_bit(VHOST_TASK_FLAGS_KILLED, &vtsk->flags); in vhost_task_fn()
62 vtsk->handle_sigkill(vtsk->data); in vhost_task_fn()
64 mutex_unlock(&vtsk->exit_mutex); in vhost_task_fn()
65 complete(&vtsk->exited); in vhost_task_fn()
76 void vhost_task_wake(struct vhost_task *vtsk) in vhost_task_wake() argument
78 wake_up_process(vtsk->task); in vhost_task_wake()
89 void vhost_task_stop(struct vhost_task *vtsk) in vhost_task_stop() argument
91 mutex_lock(&vtsk->exit_mutex); in vhost_task_stop()
92 if (!test_bit(VHOST_TASK_FLAGS_KILLED, &vtsk->flags)) { in vhost_task_stop()
93 set_bit(VHOST_TASK_FLAGS_STOP, &vtsk->flags); in vhost_task_stop()
94 vhost_task_wake(vtsk); in vhost_task_stop()
96 mutex_unlock(&vtsk->exit_mutex); in vhost_task_stop()
102 wait_for_completion(&vtsk->exited); in vhost_task_stop()
103 kfree(vtsk); in vhost_task_stop()
131 struct vhost_task *vtsk; in vhost_task_create() local
134 vtsk = kzalloc(sizeof(*vtsk), GFP_KERNEL); in vhost_task_create()
135 if (!vtsk) in vhost_task_create()
137 init_completion(&vtsk->exited); in vhost_task_create()
138 mutex_init(&vtsk->exit_mutex); in vhost_task_create()
139 vtsk->data = arg; in vhost_task_create()
140 vtsk->fn = fn; in vhost_task_create()
141 vtsk->handle_sigkill = handle_sigkill; in vhost_task_create()
143 args.fn_arg = vtsk; in vhost_task_create()
147 kfree(vtsk); in vhost_task_create()
151 vtsk->task = tsk; in vhost_task_create()
152 return vtsk; in vhost_task_create()
160 void vhost_task_start(struct vhost_task *vtsk) in vhost_task_start() argument
162 wake_up_new_task(vtsk->task); in vhost_task_start()