diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2017-10-26 13:41:01 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2017-10-27 08:10:10 -0400 |
commit | 433727948904301b01f1d5ebf39893c96cd4bab7 (patch) | |
tree | 2064a119c6e2f2432af51db3e6314d4e13e3645a | |
parent | a14390fde64e862c4fe8b92ecb293ee4b12d5bfe (diff) |
tools include uapi: Grab a copy of linux/prctl.h
We will use it to generate tables for beautifying prctl's 'option' arg
and some of the others eventually.
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-cg8mpmz4hk9nfih685emnbk9@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r-- | tools/include/uapi/linux/prctl.h | 200 | ||||
-rwxr-xr-x | tools/perf/check-headers.sh | 1 |
2 files changed, 201 insertions, 0 deletions
diff --git a/tools/include/uapi/linux/prctl.h b/tools/include/uapi/linux/prctl.h new file mode 100644 index 000000000000..a8d0759a9e40 --- /dev/null +++ b/tools/include/uapi/linux/prctl.h | |||
@@ -0,0 +1,200 @@ | |||
1 | #ifndef _LINUX_PRCTL_H | ||
2 | #define _LINUX_PRCTL_H | ||
3 | |||
4 | #include <linux/types.h> | ||
5 | |||
6 | /* Values to pass as first argument to prctl() */ | ||
7 | |||
8 | #define PR_SET_PDEATHSIG 1 /* Second arg is a signal */ | ||
9 | #define PR_GET_PDEATHSIG 2 /* Second arg is a ptr to return the signal */ | ||
10 | |||
11 | /* Get/set current->mm->dumpable */ | ||
12 | #define PR_GET_DUMPABLE 3 | ||
13 | #define PR_SET_DUMPABLE 4 | ||
14 | |||
15 | /* Get/set unaligned access control bits (if meaningful) */ | ||
16 | #define PR_GET_UNALIGN 5 | ||
17 | #define PR_SET_UNALIGN 6 | ||
18 | # define PR_UNALIGN_NOPRINT 1 /* silently fix up unaligned user accesses */ | ||
19 | # define PR_UNALIGN_SIGBUS 2 /* generate SIGBUS on unaligned user access */ | ||
20 | |||
21 | /* Get/set whether or not to drop capabilities on setuid() away from | ||
22 | * uid 0 (as per security/commoncap.c) */ | ||
23 | #define PR_GET_KEEPCAPS 7 | ||
24 | #define PR_SET_KEEPCAPS 8 | ||
25 | |||
26 | /* Get/set floating-point emulation control bits (if meaningful) */ | ||
27 | #define PR_GET_FPEMU 9 | ||
28 | #define PR_SET_FPEMU 10 | ||
29 | # define PR_FPEMU_NOPRINT 1 /* silently emulate fp operations accesses */ | ||
30 | # define PR_FPEMU_SIGFPE 2 /* don't emulate fp operations, send SIGFPE instead */ | ||
31 | |||
32 | /* Get/set floating-point exception mode (if meaningful) */ | ||
33 | #define PR_GET_FPEXC 11 | ||
34 | #define PR_SET_FPEXC 12 | ||
35 | # define PR_FP_EXC_SW_ENABLE 0x80 /* Use FPEXC for FP exception enables */ | ||
36 | # define PR_FP_EXC_DIV 0x010000 /* floating point divide by zero */ | ||
37 | # define PR_FP_EXC_OVF 0x020000 /* floating point overflow */ | ||
38 | # define PR_FP_EXC_UND 0x040000 /* floating point underflow */ | ||
39 | # define PR_FP_EXC_RES 0x080000 /* floating point inexact result */ | ||
40 | # define PR_FP_EXC_INV 0x100000 /* floating point invalid operation */ | ||
41 | # define PR_FP_EXC_DISABLED 0 /* FP exceptions disabled */ | ||
42 | # define PR_FP_EXC_NONRECOV 1 /* async non-recoverable exc. mode */ | ||
43 | # define PR_FP_EXC_ASYNC 2 /* async recoverable exception mode */ | ||
44 | # define PR_FP_EXC_PRECISE 3 /* precise exception mode */ | ||
45 | |||
46 | /* Get/set whether we use statistical process timing or accurate timestamp | ||
47 | * based process timing */ | ||
48 | #define PR_GET_TIMING 13 | ||
49 | #define PR_SET_TIMING 14 | ||
50 | # define PR_TIMING_STATISTICAL 0 /* Normal, traditional, | ||
51 | statistical process timing */ | ||
52 | # define PR_TIMING_TIMESTAMP 1 /* Accurate timestamp based | ||
53 | process timing */ | ||
54 | |||
55 | #define PR_SET_NAME 15 /* Set process name */ | ||
56 | #define PR_GET_NAME 16 /* Get process name */ | ||
57 | |||
58 | /* Get/set process endian */ | ||
59 | #define PR_GET_ENDIAN 19 | ||
60 | #define PR_SET_ENDIAN 20 | ||
61 | # define PR_ENDIAN_BIG 0 | ||
62 | # define PR_ENDIAN_LITTLE 1 /* True little endian mode */ | ||
63 | # define PR_ENDIAN_PPC_LITTLE 2 /* "PowerPC" pseudo little endian */ | ||
64 | |||
65 | /* Get/set process seccomp mode */ | ||
66 | #define PR_GET_SECCOMP 21 | ||
67 | #define PR_SET_SECCOMP 22 | ||
68 | |||
69 | /* Get/set the capability bounding set (as per security/commoncap.c) */ | ||
70 | #define PR_CAPBSET_READ 23 | ||
71 | #define PR_CAPBSET_DROP 24 | ||
72 | |||
73 | /* Get/set the process' ability to use the timestamp counter instruction */ | ||
74 | #define PR_GET_TSC 25 | ||
75 | #define PR_SET_TSC 26 | ||
76 | # define PR_TSC_ENABLE 1 /* allow the use of the timestamp counter */ | ||
77 | # define PR_TSC_SIGSEGV 2 /* throw a SIGSEGV instead of reading the TSC */ | ||
78 | |||
79 | /* Get/set securebits (as per security/commoncap.c) */ | ||
80 | #define PR_GET_SECUREBITS 27 | ||
81 | #define PR_SET_SECUREBITS 28 | ||
82 | |||
83 | /* | ||
84 | * Get/set the timerslack as used by poll/select/nanosleep | ||
85 | * A value of 0 means "use default" | ||
86 | */ | ||
87 | #define PR_SET_TIMERSLACK 29 | ||
88 | #define PR_GET_TIMERSLACK 30 | ||
89 | |||
90 | #define PR_TASK_PERF_EVENTS_DISABLE 31 | ||
91 | #define PR_TASK_PERF_EVENTS_ENABLE 32 | ||
92 | |||
93 | /* | ||
94 | * Set early/late kill mode for hwpoison memory corruption. | ||
95 | * This influences when the process gets killed on a memory corruption. | ||
96 | */ | ||
97 | #define PR_MCE_KILL 33 | ||
98 | # define PR_MCE_KILL_CLEAR 0 | ||
99 | # define PR_MCE_KILL_SET 1 | ||
100 | |||
101 | # define PR_MCE_KILL_LATE 0 | ||
102 | # define PR_MCE_KILL_EARLY 1 | ||
103 | # define PR_MCE_KILL_DEFAULT 2 | ||
104 | |||
105 | #define PR_MCE_KILL_GET 34 | ||
106 | |||
107 | /* | ||
108 | * Tune up process memory map specifics. | ||
109 | */ | ||
110 | #define PR_SET_MM 35 | ||
111 | # define PR_SET_MM_START_CODE 1 | ||
112 | # define PR_SET_MM_END_CODE 2 | ||
113 | # define PR_SET_MM_START_DATA 3 | ||
114 | # define PR_SET_MM_END_DATA 4 | ||
115 | # define PR_SET_MM_START_STACK 5 | ||
116 | # define PR_SET_MM_START_BRK 6 | ||
117 | # define PR_SET_MM_BRK 7 | ||
118 | # define PR_SET_MM_ARG_START 8 | ||
119 | # define PR_SET_MM_ARG_END 9 | ||
120 | # define PR_SET_MM_ENV_START 10 | ||
121 | # define PR_SET_MM_ENV_END 11 | ||
122 | # define PR_SET_MM_AUXV 12 | ||
123 | # define PR_SET_MM_EXE_FILE 13 | ||
124 | # define PR_SET_MM_MAP 14 | ||
125 | # define PR_SET_MM_MAP_SIZE 15 | ||
126 | |||
127 | /* | ||
128 | * This structure provides new memory descriptor | ||
129 | * map which mostly modifies /proc/pid/stat[m] | ||
130 | * output for a task. This mostly done in a | ||
131 | * sake of checkpoint/restore functionality. | ||
132 | */ | ||
133 | struct prctl_mm_map { | ||
134 | __u64 start_code; /* code section bounds */ | ||
135 | __u64 end_code; | ||
136 | __u64 start_data; /* data section bounds */ | ||
137 | __u64 end_data; | ||
138 | __u64 start_brk; /* heap for brk() syscall */ | ||
139 | __u64 brk; | ||
140 | __u64 start_stack; /* stack starts at */ | ||
141 | __u64 arg_start; /* command line arguments bounds */ | ||
142 | __u64 arg_end; | ||
143 | __u64 env_start; /* environment variables bounds */ | ||
144 | __u64 env_end; | ||
145 | __u64 *auxv; /* auxiliary vector */ | ||
146 | __u32 auxv_size; /* vector size */ | ||
147 | __u32 exe_fd; /* /proc/$pid/exe link file */ | ||
148 | }; | ||
149 | |||
150 | /* | ||
151 | * Set specific pid that is allowed to ptrace the current task. | ||
152 | * A value of 0 mean "no process". | ||
153 | */ | ||
154 | #define PR_SET_PTRACER 0x59616d61 | ||
155 | # define PR_SET_PTRACER_ANY ((unsigned long)-1) | ||
156 | |||
157 | #define PR_SET_CHILD_SUBREAPER 36 | ||
158 | #define PR_GET_CHILD_SUBREAPER 37 | ||
159 | |||
160 | /* | ||
161 | * If no_new_privs is set, then operations that grant new privileges (i.e. | ||
162 | * execve) will either fail or not grant them. This affects suid/sgid, | ||
163 | * file capabilities, and LSMs. | ||
164 | * | ||
165 | * Operations that merely manipulate or drop existing privileges (setresuid, | ||
166 | * capset, etc.) will still work. Drop those privileges if you want them gone. | ||
167 | * | ||
168 | * Changing LSM security domain is considered a new privilege. So, for example, | ||
169 | * asking selinux for a specific new context (e.g. with runcon) will result | ||
170 | * in execve returning -EPERM. | ||
171 | * | ||
172 | * See Documentation/prctl/no_new_privs.txt for more details. | ||
173 | */ | ||
174 | #define PR_SET_NO_NEW_PRIVS 38 | ||
175 | #define PR_GET_NO_NEW_PRIVS 39 | ||
176 | |||
177 | #define PR_GET_TID_ADDRESS 40 | ||
178 | |||
179 | #define PR_SET_THP_DISABLE 41 | ||
180 | #define PR_GET_THP_DISABLE 42 | ||
181 | |||
182 | /* | ||
183 | * Tell the kernel to start/stop helping userspace manage bounds tables. | ||
184 | */ | ||
185 | #define PR_MPX_ENABLE_MANAGEMENT 43 | ||
186 | #define PR_MPX_DISABLE_MANAGEMENT 44 | ||
187 | |||
188 | #define PR_SET_FP_MODE 45 | ||
189 | #define PR_GET_FP_MODE 46 | ||
190 | # define PR_FP_MODE_FR (1 << 0) /* 64b FP registers */ | ||
191 | # define PR_FP_MODE_FRE (1 << 1) /* 32b compatibility */ | ||
192 | |||
193 | /* Control the ambient capability set */ | ||
194 | #define PR_CAP_AMBIENT 47 | ||
195 | # define PR_CAP_AMBIENT_IS_SET 1 | ||
196 | # define PR_CAP_AMBIENT_RAISE 2 | ||
197 | # define PR_CAP_AMBIENT_LOWER 3 | ||
198 | # define PR_CAP_AMBIENT_CLEAR_ALL 4 | ||
199 | |||
200 | #endif /* _LINUX_PRCTL_H */ | ||
diff --git a/tools/perf/check-headers.sh b/tools/perf/check-headers.sh index 322629423b49..8d8b37198666 100755 --- a/tools/perf/check-headers.sh +++ b/tools/perf/check-headers.sh | |||
@@ -6,6 +6,7 @@ include/uapi/drm/i915_drm.h | |||
6 | include/uapi/linux/fcntl.h | 6 | include/uapi/linux/fcntl.h |
7 | include/uapi/linux/kvm.h | 7 | include/uapi/linux/kvm.h |
8 | include/uapi/linux/perf_event.h | 8 | include/uapi/linux/perf_event.h |
9 | include/uapi/linux/prctl.h | ||
9 | include/uapi/linux/sched.h | 10 | include/uapi/linux/sched.h |
10 | include/uapi/linux/stat.h | 11 | include/uapi/linux/stat.h |
11 | include/uapi/linux/vhost.h | 12 | include/uapi/linux/vhost.h |