summaryrefslogtreecommitdiffhomepage
path: root/pkg/abi/linux/prctl.go
blob: db3206f3671ae3cbf8a86fa8773988e144f16f44 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
// Copyright 2018 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package linux

// PR_* flags, from <linux/pcrtl.h> for prctl(2).
const (
	// PR_SET_PDEATHSIG will set the process' death signal.
	PR_SET_PDEATHSIG = 1

	// PR_GET_PDEATHSIG will get the process' death signal.
	PR_GET_PDEATHSIG = 2

	// PR_GET_DUMPABLE will get the process's dumpable flag.
	PR_GET_DUMPABLE = 3

	// PR_SET_DUMPABLE will set the process's dumpable flag.
	PR_SET_DUMPABLE = 4

	// PR_GET_KEEPCAPS will get the value of the keep capabilities flag.
	PR_GET_KEEPCAPS = 7

	// PR_SET_KEEPCAPS will set the value of the keep capabilities flag.
	PR_SET_KEEPCAPS = 8

	// PR_GET_TIMING will get the process's timing method.
	PR_GET_TIMING = 13

	// PR_SET_TIMING will set the process's timing method.
	PR_SET_TIMING = 14

	// PR_SET_NAME will set the process' name.
	PR_SET_NAME = 15

	// PR_GET_NAME will get the process' name.
	PR_GET_NAME = 16

	// PR_GET_SECCOMP will get a process' seccomp mode.
	PR_GET_SECCOMP = 21

	// PR_SET_SECCOMP will set a process' seccomp mode.
	PR_SET_SECCOMP = 22

	// PR_CAPBSET_READ will get the capability bounding set.
	PR_CAPBSET_READ = 23

	// PR_CAPBSET_DROP will set the capability bounding set.
	PR_CAPBSET_DROP = 24

	// PR_GET_TSC will get the the value of the flag determining whether the
	// timestamp counter can be read.
	PR_GET_TSC = 25

	// PR_SET_TSC will set the the value of the flag determining whether the
	// timestamp counter can be read.
	PR_SET_TSC = 26

	// PR_SET_TIMERSLACK set the process's time slack.
	PR_SET_TIMERSLACK = 29

	// PR_GET_TIMERSLACK get the process's time slack.
	PR_GET_TIMERSLACK = 30

	// PR_TASK_PERF_EVENTS_DISABLE disable all performance counters attached to
	// the calling process.
	PR_TASK_PERF_EVENTS_DISABLE = 31

	// PR_TASK_PERF_EVENTS_ENABLE enable all performance counters attached to
	// the calling process.
	PR_TASK_PERF_EVENTS_ENABLE = 32

	// PR_MCE_KILL set the machine check memory corruption kill policy for the
	// calling thread.
	PR_MCE_KILL = 33

	// PR_MCE_KILL_GET get the machine check memory corruption kill policy for the
	// calling thread.
	PR_MCE_KILL_GET = 34

	// PR_SET_MM will modify certain kernel memory map descriptor fields of the
	// calling process. See prctl(2) for more information.
	PR_SET_MM = 35

	PR_SET_MM_START_CODE  = 1
	PR_SET_MM_END_CODE    = 2
	PR_SET_MM_START_DATA  = 3
	PR_SET_MM_END_DATA    = 4
	PR_SET_MM_START_STACK = 5
	PR_SET_MM_START_BRK   = 6
	PR_SET_MM_BRK         = 7
	PR_SET_MM_ARG_START   = 8
	PR_SET_MM_ARG_END     = 9
	PR_SET_MM_ENV_START   = 10
	PR_SET_MM_ENV_END     = 11
	PR_SET_MM_AUXV        = 12
	// PR_SET_MM_EXE_FILE will supersede the /proc/pid/exe symbolic link with a
	// new one pointing to a new executable file identified by the file descriptor
	// provided in arg3 argument. See prctl(2) for more information.
	PR_SET_MM_EXE_FILE = 13
	PR_SET_MM_MAP      = 14
	PR_SET_MM_MAP_SIZE = 15

	// PR_SET_CHILD_SUBREAPER set the "child subreaper" attribute of the calling
	// process.
	PR_SET_CHILD_SUBREAPER = 36

	// PR_GET_CHILD_SUBREAPER get the "child subreaper" attribute of the calling
	// process.
	PR_GET_CHILD_SUBREAPER = 37

	// PR_SET_NO_NEW_PRIVS will set the calling thread's no_new_privs bit.
	PR_SET_NO_NEW_PRIVS = 38

	// PR_GET_NO_NEW_PRIVS will get the calling thread's no_new_privs bit.
	PR_GET_NO_NEW_PRIVS = 39

	// PR_GET_TID_ADDRESS retrieve the clear_child_tid address.
	PR_GET_TID_ADDRESS = 40

	// PR_SET_THP_DISABLE set the state of the "THP disable" flag for the calling
	// thread.
	PR_SET_THP_DISABLE = 41

	// PR_GET_THP_DISABLE get the state of the "THP disable" flag for the calling
	// thread.
	PR_GET_THP_DISABLE = 42

	// PR_MPX_ENABLE_MANAGEMENT enable kernel management of Memory Protection
	// eXtensions (MPX) bounds tables.
	PR_MPX_ENABLE_MANAGEMENT = 43

	// PR_MPX_DISABLE_MANAGEMENTdisable kernel management of Memory Protection
	// eXtensions (MPX) bounds tables.
	PR_MPX_DISABLE_MANAGEMENT = 44
)

// From <asm/prctl.h>
// Flags are used in syscall arch_prctl(2).
const (
	ARCH_SET_GS    = 0x1001
	ARCH_SET_FS    = 0x1002
	ARCH_GET_FS    = 0x1003
	ARCH_GET_GS    = 0x1004
	ARCH_SET_CPUID = 0x1012
)