Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef _LINUX_SCHED_JOBCTL_H
0003 #define _LINUX_SCHED_JOBCTL_H
0004 
0005 #include <linux/types.h>
0006 
0007 struct task_struct;
0008 
0009 /*
0010  * task->jobctl flags
0011  */
0012 #define JOBCTL_STOP_SIGMASK 0xffff  /* signr of the last group stop */
0013 
0014 #define JOBCTL_STOP_DEQUEUED_BIT 16 /* stop signal dequeued */
0015 #define JOBCTL_STOP_PENDING_BIT 17  /* task should stop for group stop */
0016 #define JOBCTL_STOP_CONSUME_BIT 18  /* consume group stop count */
0017 #define JOBCTL_TRAP_STOP_BIT    19  /* trap for STOP */
0018 #define JOBCTL_TRAP_NOTIFY_BIT  20  /* trap for NOTIFY */
0019 #define JOBCTL_TRAPPING_BIT 21  /* switching to TRACED */
0020 #define JOBCTL_LISTENING_BIT    22  /* ptracer is listening for events */
0021 #define JOBCTL_TRAP_FREEZE_BIT  23  /* trap for cgroup freezer */
0022 #define JOBCTL_PTRACE_FROZEN_BIT    24  /* frozen for ptrace */
0023 
0024 #define JOBCTL_STOPPED_BIT  26  /* do_signal_stop() */
0025 #define JOBCTL_TRACED_BIT   27  /* ptrace_stop() */
0026 
0027 #define JOBCTL_STOP_DEQUEUED    (1UL << JOBCTL_STOP_DEQUEUED_BIT)
0028 #define JOBCTL_STOP_PENDING (1UL << JOBCTL_STOP_PENDING_BIT)
0029 #define JOBCTL_STOP_CONSUME (1UL << JOBCTL_STOP_CONSUME_BIT)
0030 #define JOBCTL_TRAP_STOP    (1UL << JOBCTL_TRAP_STOP_BIT)
0031 #define JOBCTL_TRAP_NOTIFY  (1UL << JOBCTL_TRAP_NOTIFY_BIT)
0032 #define JOBCTL_TRAPPING     (1UL << JOBCTL_TRAPPING_BIT)
0033 #define JOBCTL_LISTENING    (1UL << JOBCTL_LISTENING_BIT)
0034 #define JOBCTL_TRAP_FREEZE  (1UL << JOBCTL_TRAP_FREEZE_BIT)
0035 #define JOBCTL_PTRACE_FROZEN    (1UL << JOBCTL_PTRACE_FROZEN_BIT)
0036 
0037 #define JOBCTL_STOPPED      (1UL << JOBCTL_STOPPED_BIT)
0038 #define JOBCTL_TRACED       (1UL << JOBCTL_TRACED_BIT)
0039 
0040 #define JOBCTL_TRAP_MASK    (JOBCTL_TRAP_STOP | JOBCTL_TRAP_NOTIFY)
0041 #define JOBCTL_PENDING_MASK (JOBCTL_STOP_PENDING | JOBCTL_TRAP_MASK)
0042 
0043 extern bool task_set_jobctl_pending(struct task_struct *task, unsigned long mask);
0044 extern void task_clear_jobctl_trapping(struct task_struct *task);
0045 extern void task_clear_jobctl_pending(struct task_struct *task, unsigned long mask);
0046 
0047 #endif /* _LINUX_SCHED_JOBCTL_H */