Lines Matching refs:kthread

56 struct kthread {  struct
82 static inline struct kthread *to_kthread(struct task_struct *k) in to_kthread() argument
90 struct kthread *kthread = to_kthread(tsk); in get_kthread_comm() local
92 if (!kthread || !kthread->full_name) { in get_kthread_comm()
97 strscpy_pad(buf, kthread->full_name, buf_size); in get_kthread_comm()
102 struct kthread *kthread; in set_kthread_struct() local
107 kthread = kzalloc_obj(*kthread); in set_kthread_struct()
108 if (!kthread) in set_kthread_struct()
111 init_completion(&kthread->exited); in set_kthread_struct()
112 init_completion(&kthread->parked); in set_kthread_struct()
113 INIT_LIST_HEAD(&kthread->affinity_node); in set_kthread_struct()
114 p->vfork_done = &kthread->exited; in set_kthread_struct()
116 kthread->task = p; in set_kthread_struct()
117 kthread->node = tsk_fork_get_node(current); in set_kthread_struct()
118 p->worker_private = kthread; in set_kthread_struct()
124 struct kthread *kthread; in free_kthread_struct() local
129 kthread = to_kthread(k); in free_kthread_struct()
130 if (!kthread) in free_kthread_struct()
134 WARN_ON_ONCE(kthread->blkcg_css); in free_kthread_struct()
137 kfree(kthread->full_name); in free_kthread_struct()
138 kfree(kthread); in free_kthread_struct()
178 struct kthread *kthread = tsk_is_kthread(current); in kthread_should_stop_or_park() local
180 if (!kthread) in kthread_should_stop_or_park()
183 return kthread->flags & (BIT(KTHREAD_SHOULD_STOP) | BIT(KTHREAD_SHOULD_PARK)); in kthread_should_stop_or_park()
219 struct kthread *kthread = tsk_is_kthread(task); in kthread_func() local
220 if (kthread) in kthread_func()
221 return kthread->threadfn; in kthread_func()
251 struct kthread *kthread = tsk_is_kthread(task); in kthread_probe_data() local
254 if (kthread) in kthread_probe_data()
255 copy_from_kernel_nofault(&data, &kthread->data, sizeof(data)); in kthread_probe_data()
259 static void __kthread_parkme(struct kthread *self) in __kthread_parkme()
294 void kthread_do_exit(struct kthread *kthread, long result) in kthread_do_exit() argument
296 kthread->result = result; in kthread_do_exit()
297 if (!list_empty(&kthread->affinity_node)) { in kthread_do_exit()
299 list_del(&kthread->affinity_node); in kthread_do_exit()
302 if (kthread->preferred_affinity) { in kthread_do_exit()
303 kfree(kthread->preferred_affinity); in kthread_do_exit()
304 kthread->preferred_affinity = NULL; in kthread_do_exit()
330 static void kthread_fetch_affinity(struct kthread *kthread, struct cpumask *cpumask) in kthread_fetch_affinity() argument
336 if (kthread->preferred_affinity) { in kthread_fetch_affinity()
337 pref = kthread->preferred_affinity; in kthread_fetch_affinity()
339 if (kthread->node == NUMA_NO_NODE) in kthread_fetch_affinity()
342 pref = cpumask_of_node(kthread->node); in kthread_fetch_affinity()
352 struct kthread *kthread = to_kthread(current); in kthread_affine_node() local
364 WARN_ON_ONCE(!list_empty(&kthread->affinity_node)); in kthread_affine_node()
365 list_add_tail(&kthread->affinity_node, &kthread_affinity_list); in kthread_affine_node()
373 kthread_fetch_affinity(kthread, affinity); in kthread_affine_node()
380 static int kthread(void *_create) in kthread() function
388 struct kthread *self; in kthread()
459 pid = kernel_thread(kthread, create, create->full_name, in create_kthread()
587 struct kthread *kthread = to_kthread(p); in kthread_bind_mask() local
589 WARN_ON_ONCE(kthread->started); in kthread_bind_mask()
603 struct kthread *kthread = to_kthread(p); in kthread_bind() local
605 WARN_ON_ONCE(kthread->started); in kthread_bind()
638 struct kthread *kthread = to_kthread(k); in kthread_set_per_cpu() local
639 if (!kthread) in kthread_set_per_cpu()
645 clear_bit(KTHREAD_IS_PER_CPU, &kthread->flags); in kthread_set_per_cpu()
649 kthread->cpu = cpu; in kthread_set_per_cpu()
650 set_bit(KTHREAD_IS_PER_CPU, &kthread->flags); in kthread_set_per_cpu()
655 struct kthread *kthread = tsk_is_kthread(p); in kthread_is_per_cpu() local
656 if (!kthread) in kthread_is_per_cpu()
659 return test_bit(KTHREAD_IS_PER_CPU, &kthread->flags); in kthread_is_per_cpu()
672 struct kthread *kthread = to_kthread(k); in kthread_unpark() local
674 if (!test_bit(KTHREAD_SHOULD_PARK, &kthread->flags)) in kthread_unpark()
680 if (test_bit(KTHREAD_IS_PER_CPU, &kthread->flags)) in kthread_unpark()
681 __kthread_bind(k, kthread->cpu, TASK_PARKED); in kthread_unpark()
683 clear_bit(KTHREAD_SHOULD_PARK, &kthread->flags); in kthread_unpark()
705 struct kthread *kthread = to_kthread(k); in kthread_park() local
710 if (WARN_ON_ONCE(test_bit(KTHREAD_SHOULD_PARK, &kthread->flags))) in kthread_park()
713 set_bit(KTHREAD_SHOULD_PARK, &kthread->flags); in kthread_park()
720 wait_for_completion(&kthread->parked); in kthread_park()
749 struct kthread *kthread; in kthread_stop() local
755 kthread = to_kthread(k); in kthread_stop()
756 set_bit(KTHREAD_SHOULD_STOP, &kthread->flags); in kthread_stop()
760 wait_for_completion(&kthread->exited); in kthread_stop()
761 ret = kthread->result; in kthread_stop()
841 struct kthread *kthread = to_kthread(p); in kthread_affine_preferred() local
845 if (!wait_task_inactive(p, TASK_UNINTERRUPTIBLE) || kthread->started) { in kthread_affine_preferred()
850 WARN_ON_ONCE(kthread->preferred_affinity); in kthread_affine_preferred()
855 kthread->preferred_affinity = kzalloc(sizeof(struct cpumask), GFP_KERNEL); in kthread_affine_preferred()
856 if (!kthread->preferred_affinity) { in kthread_affine_preferred()
862 cpumask_copy(kthread->preferred_affinity, mask); in kthread_affine_preferred()
863 WARN_ON_ONCE(!list_empty(&kthread->affinity_node)); in kthread_affine_preferred()
864 list_add_tail(&kthread->affinity_node, &kthread_affinity_list); in kthread_affine_preferred()
865 kthread_fetch_affinity(kthread, affinity); in kthread_affine_preferred()
881 struct kthread *k; in kthreads_update_affinity()
1704 struct kthread *kthread; in kthread_associate_blkcg() local
1708 kthread = to_kthread(current); in kthread_associate_blkcg()
1709 if (!kthread) in kthread_associate_blkcg()
1712 if (kthread->blkcg_css) { in kthread_associate_blkcg()
1713 css_put(kthread->blkcg_css); in kthread_associate_blkcg()
1714 kthread->blkcg_css = NULL; in kthread_associate_blkcg()
1718 kthread->blkcg_css = css; in kthread_associate_blkcg()
1730 struct kthread *kthread; in kthread_blkcg() local
1733 kthread = to_kthread(current); in kthread_blkcg()
1734 if (kthread) in kthread_blkcg()
1735 return kthread->blkcg_css; in kthread_blkcg()