Browse Source

add new prctl command PR_SET_MM_MAP to sys/prctl.h

PR_SET_MM_MAP was introduced as a subcommand for PR_SET_MM in
linux v3.18 commit f606b77f1a9e362451aca8f81d8f36a3a112139e

the associated struct type is replicated in sys/prctl.h using
libc types.

example usage:

 struct prctl_mm_map *p;
 ...
 prctl(PR_SET_MM, PR_SET_MM_MAP, p, sizeof *p);

the kernel side supported struct size may be queried with
the PR_SET_MM_MAP_SIZE subcommand.
Szabolcs Nagy 10 years ago
parent
commit
11ac2a6e81
1 changed files with 21 additions and 0 deletions
  1. 21 0
      include/sys/prctl.h

+ 21 - 0
include/sys/prctl.h

@@ -5,6 +5,8 @@
 extern "C" {
 #endif
 
+#include <stdint.h>
+
 #define PR_SET_PDEATHSIG  1
 #define PR_GET_PDEATHSIG  2
 #define PR_GET_DUMPABLE   3
@@ -80,6 +82,25 @@ extern "C" {
 #define PR_SET_MM_ENV_END              11
 #define PR_SET_MM_AUXV                 12
 #define PR_SET_MM_EXE_FILE             13
+#define PR_SET_MM_MAP                  14
+#define PR_SET_MM_MAP_SIZE             15
+
+struct prctl_mm_map {
+	uint64_t start_code;
+	uint64_t end_code;
+	uint64_t start_data;
+	uint64_t end_data;
+	uint64_t start_brk;
+	uint64_t brk;
+	uint64_t start_stack;
+	uint64_t arg_start;
+	uint64_t arg_end;
+	uint64_t env_start;
+	uint64_t env_end;
+	uint64_t *auxv;
+	uint32_t auxv_size;
+	uint32_t exe_fd;
+};
 
 #define PR_SET_PTRACER 0x59616d61
 #define PR_SET_PTRACER_ANY (-1UL)