| 1 | /* SPDX-License-Identifier: GPL-2.0 */ | 
|---|
| 2 | #ifndef _LINUX_SCHED_JOBCTL_H | 
|---|
| 3 | #define _LINUX_SCHED_JOBCTL_H | 
|---|
| 4 |  | 
|---|
| 5 | #include <linux/types.h> | 
|---|
| 6 |  | 
|---|
| 7 | struct task_struct; | 
|---|
| 8 |  | 
|---|
| 9 | /* | 
|---|
| 10 | * task->jobctl flags | 
|---|
| 11 | */ | 
|---|
| 12 | #define JOBCTL_STOP_SIGMASK	0xffff	/* signr of the last group stop */ | 
|---|
| 13 |  | 
|---|
| 14 | #define JOBCTL_STOP_DEQUEUED_BIT 16	/* stop signal dequeued */ | 
|---|
| 15 | #define JOBCTL_STOP_PENDING_BIT	17	/* task should stop for group stop */ | 
|---|
| 16 | #define JOBCTL_STOP_CONSUME_BIT	18	/* consume group stop count */ | 
|---|
| 17 | #define JOBCTL_TRAP_STOP_BIT	19	/* trap for STOP */ | 
|---|
| 18 | #define JOBCTL_TRAP_NOTIFY_BIT	20	/* trap for NOTIFY */ | 
|---|
| 19 | #define JOBCTL_TRAPPING_BIT	21	/* switching to TRACED */ | 
|---|
| 20 | #define JOBCTL_LISTENING_BIT	22	/* ptracer is listening for events */ | 
|---|
| 21 | #define JOBCTL_TRAP_FREEZE_BIT	23	/* trap for cgroup freezer */ | 
|---|
| 22 | #define JOBCTL_PTRACE_FROZEN_BIT	24	/* frozen for ptrace */ | 
|---|
| 23 |  | 
|---|
| 24 | #define JOBCTL_STOPPED_BIT	26	/* do_signal_stop() */ | 
|---|
| 25 | #define JOBCTL_TRACED_BIT	27	/* ptrace_stop() */ | 
|---|
| 26 |  | 
|---|
| 27 | #define JOBCTL_STOP_DEQUEUED	(1UL << JOBCTL_STOP_DEQUEUED_BIT) | 
|---|
| 28 | #define JOBCTL_STOP_PENDING	(1UL << JOBCTL_STOP_PENDING_BIT) | 
|---|
| 29 | #define JOBCTL_STOP_CONSUME	(1UL << JOBCTL_STOP_CONSUME_BIT) | 
|---|
| 30 | #define JOBCTL_TRAP_STOP	(1UL << JOBCTL_TRAP_STOP_BIT) | 
|---|
| 31 | #define JOBCTL_TRAP_NOTIFY	(1UL << JOBCTL_TRAP_NOTIFY_BIT) | 
|---|
| 32 | #define JOBCTL_TRAPPING		(1UL << JOBCTL_TRAPPING_BIT) | 
|---|
| 33 | #define JOBCTL_LISTENING	(1UL << JOBCTL_LISTENING_BIT) | 
|---|
| 34 | #define JOBCTL_TRAP_FREEZE	(1UL << JOBCTL_TRAP_FREEZE_BIT) | 
|---|
| 35 | #define JOBCTL_PTRACE_FROZEN	(1UL << JOBCTL_PTRACE_FROZEN_BIT) | 
|---|
| 36 |  | 
|---|
| 37 | #define JOBCTL_STOPPED		(1UL << JOBCTL_STOPPED_BIT) | 
|---|
| 38 | #define JOBCTL_TRACED		(1UL << JOBCTL_TRACED_BIT) | 
|---|
| 39 |  | 
|---|
| 40 | #define JOBCTL_TRAP_MASK	(JOBCTL_TRAP_STOP | JOBCTL_TRAP_NOTIFY) | 
|---|
| 41 | #define JOBCTL_PENDING_MASK	(JOBCTL_STOP_PENDING | JOBCTL_TRAP_MASK) | 
|---|
| 42 |  | 
|---|
| 43 | extern bool task_set_jobctl_pending(struct task_struct *task, unsigned long mask); | 
|---|
| 44 | extern void task_clear_jobctl_trapping(struct task_struct *task); | 
|---|
| 45 | extern void task_clear_jobctl_pending(struct task_struct *task, unsigned long mask); | 
|---|
| 46 |  | 
|---|
| 47 | #endif /* _LINUX_SCHED_JOBCTL_H */ | 
|---|
| 48 |  | 
|---|