Code checking whether a task is a kthread isn't very consistent. Some code correctly tests task->flags & PF_THREAD, while other code checks task->mm (which can be true for a kthread which calls use_mm()).
So that we can clean this up and keep the code easy to follow, let's add an obvious helper function to test whether a task is a kthread. Subsequent patches will use this as part of cleaning up and correcting open-coded tests. At the same time, let's fix up the kerneldoc for is_idle_task() for consistency with the new helper, using true/false rather than 0/1, given the functions return bool. Signed-off-by: Mark Rutland <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Peter Zijlstra <[email protected]> --- include/linux/sched.h | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index 9f51932bd543..b7e96409d75f 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1621,13 +1621,24 @@ extern struct task_struct *idle_task(int cpu); * is_idle_task - is the specified task an idle task? * @p: the task in question. * - * Return: 1 if @p is an idle task. 0 otherwise. + * Return: true if @p is an idle task, false otherwise. */ static inline bool is_idle_task(const struct task_struct *p) { return !!(p->flags & PF_IDLE); } +/** + * is_kthread - is the specified task a kthread + * @p: the task in question. + * + * Return: true if @p is a kthread, false otherwise. + */ +static inline bool is_kthread(const struct task_struct *p) +{ + return !!(p->flags & PF_KTHREAD); +} + extern struct task_struct *curr_task(int cpu); extern void ia64_set_curr_task(int cpu, struct task_struct *p); -- 2.11.0

