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