]> git.proxmox.com Git - mirror_libseccomp.git/commitdiff
arch: update syscalls for Linux 4.9
authorJustin Cormack <justin.cormack@docker.com>
Mon, 26 Dec 2016 17:59:12 +0000 (17:59 +0000)
committerPaul Moore <paul@paul-moore.com>
Wed, 25 Jan 2017 10:10:47 +0000 (05:10 -0500)
Add support for the following syscalls added in Linux v4.9:

- preadv2 and pwritev2
- pkey_mprotect, pkey_alloc, pkey_free

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
[PM: update subject line, description, and some whitespace]
Signed-off-by: Paul Moore <paul@paul-moore.com>
14 files changed:
include/seccomp.h.in
src/arch-aarch64-syscalls.c
src/arch-arm-syscalls.c
src/arch-mips-syscalls.c
src/arch-mips64-syscalls.c
src/arch-mips64n32-syscalls.c
src/arch-parisc-syscalls.c
src/arch-ppc-syscalls.c
src/arch-ppc64-syscalls.c
src/arch-s390-syscalls.c
src/arch-s390x-syscalls.c
src/arch-x32-syscalls.c
src/arch-x86-syscalls.c
src/arch-x86_64-syscalls.c

index 5b9057fd081deb1c723b3d04781db79bf1e59a8a..5fc687c43a664e6ce9901fe7d9a54424c55a7d51 100644 (file)
@@ -1609,6 +1609,21 @@ int seccomp_export_bpf(const scmp_filter_ctx ctx, int fd);
 #define __NR_userfaultfd       __PNR_userfaultfd
 #endif /* __NR_userfaultfd */
 
+#define __PNR_pkey_mprotect    -10201
+#ifndef __NR_pkey_mprotect
+#define __NR_pkey_mprotect     __PNR_pkey_mprotect
+#endif /* __NR_pkey_mprotect */
+
+#define __PNR_pkey_alloc       -10202
+#ifndef __NR_pkey_alloc
+#define __NR_pkey_alloc        __PNR_pkey_alloc
+#endif /* __NR_pkey_alloc */
+
+#define __PNR_pkey_free                -10203
+#ifndef __NR_pkey_free
+#define __NR_pkey_free         __PNR_pkey_free
+#endif /* __NR_pkey_free */
+
 #ifdef __cplusplus
 }
 #endif
index 357f2908f438f269d3fe70dff2f8ba5f797ce42a..6c04ad586cab0be0341a3490ca29df7af52f5ca9 100644 (file)
@@ -26,7 +26,7 @@
 #include "arch.h"
 #include "arch-aarch64.h"
 
-/* NOTE: based on Linux 4.5-rc4 */
+/* NOTE: based on Linux 4.9 */
 const struct arch_syscall_def aarch64_syscall_table[] = { \
        { "_llseek", __PNR__llseek },
        { "_newselect", __PNR__newselect },
@@ -254,11 +254,15 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \
        { "pipe", __PNR_pipe },
        { "pipe2", 59 },
        { "pivot_root", 41 },
+       { "pkey_alloc", __PNR_pkey_alloc },
+       { "pkey_free", __PNR_pkey_free },
+       { "pkey_mprotect", __PNR_pkey_mprotect },
        { "poll", __PNR_poll },
        { "ppoll", 73 },
        { "prctl", 167 },
        { "pread64", 67 },
        { "preadv", 69 },
+       { "preadv2", 392 },
        { "prlimit64", 261 },
        { "process_vm_readv", 270 },
        { "process_vm_writev", 271 },
@@ -269,6 +273,7 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \
        { "putpmsg", __PNR_putpmsg },
        { "pwrite64", 68 },
        { "pwritev", 70 },
+       { "pwritev2", 393 },
        { "query_module", __PNR_query_module },
        { "quotactl", 60 },
        { "read", 63 },
index d1349a1d5d56f78123c98bd430da95906d9cfee4..e7e2d31f128a2de2b54d790691d36fe0a2277cf4 100644 (file)
@@ -37,7 +37,7 @@
 #define __SCMP_NR_BASE                 __SCMP_NR_OABI_SYSCALL_BASE
 #endif
 
-/* NOTE: based on Linux 4.5-rc4 */
+/* NOTE: based on Linux 4.9 */
 const struct arch_syscall_def arm_syscall_table[] = { \
        /* NOTE: arm_sync_file_range() and sync_file_range2() share values */
        { "_llseek", (__SCMP_NR_BASE + 140) },
@@ -266,11 +266,15 @@ const struct arch_syscall_def arm_syscall_table[] = { \
        { "pipe", (__SCMP_NR_BASE + 42) },
        { "pipe2", (__SCMP_NR_BASE + 359) },
        { "pivot_root", (__SCMP_NR_BASE + 218) },
+       { "pkey_alloc", (__SCMP_NR_BASE + 395) },
+       { "pkey_free", (__SCMP_NR_BASE + 396) },
+       { "pkey_mprotect", (__SCMP_NR_BASE + 394) },
        { "poll", (__SCMP_NR_BASE + 168) },
        { "ppoll", (__SCMP_NR_BASE + 336) },
        { "prctl", (__SCMP_NR_BASE + 172) },
        { "pread64", (__SCMP_NR_BASE + 180) },
        { "preadv", (__SCMP_NR_BASE + 361) },
+       { "preadv2", (__SCMP_NR_BASE + 392) },
        { "prlimit64", (__SCMP_NR_BASE + 369) },
        { "process_vm_readv", (__SCMP_NR_BASE + 376) },
        { "process_vm_writev", (__SCMP_NR_BASE + 377) },
@@ -281,6 +285,7 @@ const struct arch_syscall_def arm_syscall_table[] = { \
        { "putpmsg", __PNR_putpmsg },
        { "pwrite64", (__SCMP_NR_BASE + 181) },
        { "pwritev", (__SCMP_NR_BASE + 362) },
+       { "pwritev2", (__SCMP_NR_BASE + 393) },
        { "query_module", __PNR_query_module },
        { "quotactl", (__SCMP_NR_BASE + 131) },
        { "read", (__SCMP_NR_BASE +  3) },
index 2cd86cd1d0f1c08809a07686b8b55ee528aeff60..dada5a9f6d20a6b405b3d51cc4e3e5c012bc2679 100644 (file)
@@ -30,7 +30,7 @@
 /* O32 ABI */
 #define __SCMP_NR_BASE         4000
 
-/* NOTE: based on Linux 4.5-rc4 */
+/* NOTE: based on Linux 4.9 */
 const struct arch_syscall_def mips_syscall_table[] = { \
        { "_llseek", (__SCMP_NR_BASE + 140) },
        { "_newselect", (__SCMP_NR_BASE + 142) },
@@ -258,11 +258,15 @@ const struct arch_syscall_def mips_syscall_table[] = { \
        { "pipe", (__SCMP_NR_BASE + 42) },
        { "pipe2", (__SCMP_NR_BASE + 328) },
        { "pivot_root", (__SCMP_NR_BASE + 216) },
+       { "pkey_alloc", (__SCMP_NR_BASE + 364) },
+       { "pkey_free", (__SCMP_NR_BASE + 365) },
+       { "pkey_mprotect", (__SCMP_NR_BASE + 363) },
        { "poll", (__SCMP_NR_BASE + 188) },
        { "ppoll", (__SCMP_NR_BASE + 302) },
        { "prctl", (__SCMP_NR_BASE + 192) },
        { "pread64", (__SCMP_NR_BASE + 200) },
        { "preadv", (__SCMP_NR_BASE + 330) },
+       { "preadv2", (__SCMP_NR_BASE + 361) },
        { "prlimit64", (__SCMP_NR_BASE + 338) },
        { "process_vm_readv", (__SCMP_NR_BASE + 345) },
        { "process_vm_writev", (__SCMP_NR_BASE + 346) },
@@ -273,6 +277,7 @@ const struct arch_syscall_def mips_syscall_table[] = { \
        { "putpmsg", (__SCMP_NR_BASE + 209) },
        { "pwrite64", (__SCMP_NR_BASE + 201) },
        { "pwritev", (__SCMP_NR_BASE + 331) },
+       { "pwritev2", (__SCMP_NR_BASE + 362) },
        { "query_module", (__SCMP_NR_BASE + 187) },
        { "quotactl", (__SCMP_NR_BASE + 131) },
        { "read", (__SCMP_NR_BASE + 3) },
index 80db4475560ad8b5671a8a96b3c11b76606898f0..bbf8906346938a09bfaea14d52b84f9f603d33c4 100644 (file)
@@ -30,7 +30,7 @@
 /* 64 ABI */
 #define __SCMP_NR_BASE 5000
 
-/* NOTE: based on Linux 4.5-rc4 */
+/* NOTE: based on Linux 4.9 */
 const struct arch_syscall_def mips64_syscall_table[] = { \
        { "_llseek", __PNR__llseek },
        { "_newselect", (__SCMP_NR_BASE + 22) },
@@ -258,11 +258,15 @@ const struct arch_syscall_def mips64_syscall_table[] = { \
        { "pipe", (__SCMP_NR_BASE + 21) },
        { "pipe2", (__SCMP_NR_BASE + 287) },
        { "pivot_root", (__SCMP_NR_BASE + 151) },
+       { "pkey_alloc", (__SCMP_NR_BASE + 324) },
+       { "pkey_free", (__SCMP_NR_BASE + 325) },
+       { "pkey_mprotect", (__SCMP_NR_BASE + 323) },
        { "poll", (__SCMP_NR_BASE + 7) },
        { "ppoll", (__SCMP_NR_BASE + 261) },
        { "prctl", (__SCMP_NR_BASE + 153) },
        { "pread64", (__SCMP_NR_BASE + 16) },
        { "preadv", (__SCMP_NR_BASE + 289) },
+       { "preadv2", (__SCMP_NR_BASE + 321) },
        { "prlimit64", (__SCMP_NR_BASE + 297) },
        { "process_vm_readv", (__SCMP_NR_BASE + 304) },
        { "process_vm_writev", (__SCMP_NR_BASE + 305) },
@@ -273,6 +277,7 @@ const struct arch_syscall_def mips64_syscall_table[] = { \
        { "putpmsg", (__SCMP_NR_BASE + 175) },
        { "pwrite64", (__SCMP_NR_BASE + 17) },
        { "pwritev", (__SCMP_NR_BASE + 290) },
+       { "pwritev2", (__SCMP_NR_BASE + 322) },
        { "query_module", (__SCMP_NR_BASE + 171) },
        { "quotactl", (__SCMP_NR_BASE + 172) },
        { "read", (__SCMP_NR_BASE + 0) },
index 5cf03d2037116040a7c5bee8c73794e7878668be..34848827fc0952096322e9ae52d83fec21451f71 100644 (file)
@@ -30,7 +30,7 @@
 /* N32 ABI */
 #define __SCMP_NR_BASE 6000
 
-/* NOTE: based on Linux 4.5-rc4 */
+/* NOTE: based on Linux 4.9 */
 const struct arch_syscall_def mips64n32_syscall_table[] = { \
        { "_llseek", __PNR__llseek },
        { "_newselect", (__SCMP_NR_BASE + 22) },
@@ -258,11 +258,15 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \
        { "pipe", (__SCMP_NR_BASE + 21) },
        { "pipe2", (__SCMP_NR_BASE + 291) },
        { "pivot_root", (__SCMP_NR_BASE + 151) },
+       { "pkey_alloc", (__SCMP_NR_BASE + 328) },
+       { "pkey_free", (__SCMP_NR_BASE + 329) },
+       { "pkey_mprotect", (__SCMP_NR_BASE + 327) },
        { "poll", (__SCMP_NR_BASE + 7) },
        { "ppoll", (__SCMP_NR_BASE + 265) },
        { "prctl", (__SCMP_NR_BASE + 153) },
        { "pread64", (__SCMP_NR_BASE + 16) },
        { "preadv", (__SCMP_NR_BASE + 293) },
+       { "preadv2", (__SCMP_NR_BASE + 325) },
        { "prlimit64", (__SCMP_NR_BASE + 302) },
        { "process_vm_readv", (__SCMP_NR_BASE + 309) },
        { "process_vm_writev", (__SCMP_NR_BASE + 310) },
@@ -273,6 +277,7 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \
        { "putpmsg", (__SCMP_NR_BASE + 175) },
        { "pwrite64", (__SCMP_NR_BASE + 17) },
        { "pwritev", (__SCMP_NR_BASE + 294) },
+       { "pwritev2", (__SCMP_NR_BASE + 326) },
        { "query_module", (__SCMP_NR_BASE + 171) },
        { "quotactl", (__SCMP_NR_BASE + 172) },
        { "read", (__SCMP_NR_BASE + 0) },
index ad50820127f9fdbcb4b2d867d88cd7b70821ad64..46905770e25240c401113b5e512f21640d17e8a0 100644 (file)
@@ -10,7 +10,7 @@
 #include "arch.h"
 #include "arch-parisc.h"
 
-/* NOTE: based on Linux 4.5-rc4 */
+/* NOTE: based on Linux 4.9 */
 const struct arch_syscall_def parisc_syscall_table[] = { \
        { "_llseek",    140 },
        { "_newselect", 142 },
@@ -238,11 +238,15 @@ const struct arch_syscall_def parisc_syscall_table[] = { \
        { "pipe",       42 },
        { "pipe2",      313 },
        { "pivot_root", 67 },
+       { "pkey_alloc", __PNR_pkey_alloc },
+       { "pkey_free",  __PNR_pkey_free },
+       { "pkey_mprotect",      __PNR_pkey_mprotect },
        { "poll",       168 },
        { "ppoll",      274 },
        { "prctl",      172 },
        { "pread64",    108 },
        { "preadv",     315 },
+       { "preadv2",    347 },
        { "prlimit64",  321 },
        { "process_vm_readv",   330 },
        { "process_vm_writev",  331 },
@@ -253,6 +257,7 @@ const struct arch_syscall_def parisc_syscall_table[] = { \
        { "putpmsg",    197 },
        { "pwrite64",   109 },
        { "pwritev",    316 },
+       { "pwritev2",   348 },
        { "query_module",       167 },
        { "quotactl",   131 },
        { "read",       3 },
index 2bd8a36659414821c7ab9cd091f8dc400a930f18..26b4ff1b7447dde7f15e07b443928567a9db45b1 100644 (file)
@@ -27,7 +27,7 @@
 #include "arch.h"
 #include "arch-ppc.h"
 
-/* NOTE: based on Linux 4.5-rc4 */
+/* NOTE: based on Linux 4.9 */
 const struct arch_syscall_def ppc_syscall_table[] = { \
        { "_llseek", 140 },
        { "_newselect", 142 },
@@ -255,11 +255,15 @@ const struct arch_syscall_def ppc_syscall_table[] = { \
        { "pipe", 42 },
        { "pipe2", 317 },
        { "pivot_root", 203 },
+       { "pkey_alloc", __PNR_pkey_alloc },
+       { "pkey_free", __PNR_pkey_free },
+       { "pkey_mprotect", __PNR_pkey_mprotect },
        { "poll", 167 },
        { "ppoll", 281 },
        { "prctl", 171 },
        { "pread64", 179 },
        { "preadv", 320 },
+       { "preadv2", 380 },
        { "prlimit64", 325 },
        { "process_vm_readv", 351 },
        { "process_vm_writev", 352 },
@@ -270,6 +274,7 @@ const struct arch_syscall_def ppc_syscall_table[] = { \
        { "putpmsg", 188 },
        { "pwrite64", 180 },
        { "pwritev", 321 },
+       { "pwritev2", 381 },
        { "query_module", 166 },
        { "quotactl", 131 },
        { "read", 3 },
index 73621a1c0af4faf378c17d669d46fe6b6588832e..3ebd086c287ceb4dd5a3e224ea02c0aaea7da8fb 100644 (file)
@@ -27,7 +27,7 @@
 #include "arch.h"
 #include "arch-ppc64.h"
 
-/* NOTE: based on Linux 4.5-rc4 */
+/* NOTE: based on Linux 4.9 */
 const struct arch_syscall_def ppc64_syscall_table[] = { \
        { "_llseek", 140 },
        { "_newselect", 142 },
@@ -255,11 +255,15 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \
        { "pipe", 42 },
        { "pipe2", 317 },
        { "pivot_root", 203 },
+       { "pkey_alloc", __PNR_pkey_alloc },
+       { "pkey_free", __PNR_pkey_free },
+       { "pkey_mprotect", __PNR_pkey_mprotect },
        { "poll", 167 },
        { "ppoll", 281 },
        { "prctl", 171 },
        { "pread64", 179 },
        { "preadv", 320 },
+       { "preadv2", 380 },
        { "prlimit64", 325 },
        { "process_vm_readv", 351 },
        { "process_vm_writev", 352 },
@@ -270,6 +274,7 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \
        { "putpmsg", 188 },
        { "pwrite64", 180 },
        { "pwritev", 321 },
+       { "pwritev2", 381 },
        { "query_module", 166 },
        { "quotactl", 131 },
        { "read", 3 },
index a04673a5b4bd4ce73feaae87f4ca6b807beaefcb..84253a6fc386c7357e0e6bb54e954aad6877bc52 100644 (file)
@@ -10,7 +10,7 @@
 #include "arch.h"
 #include "arch-s390.h"
 
-/* NOTE: based on Linux 4.5-rc4 */
+/* NOTE: based on Linux 4.9 */
 const struct arch_syscall_def s390_syscall_table[] = { \
        { "_llseek", 140 },
        { "_newselect", 142 },
@@ -238,11 +238,15 @@ const struct arch_syscall_def s390_syscall_table[] = { \
        { "pipe", 42 },
        { "pipe2", 325 },
        { "pivot_root", 217 },
+       { "pkey_alloc", __PNR_pkey_alloc },
+       { "pkey_free", __PNR_pkey_free },
+       { "pkey_mprotect", __PNR_pkey_mprotect },
        { "poll", 168 },
        { "ppoll", 302 },
        { "prctl", 172 },
        { "pread64", 180 },
        { "preadv", 328 },
+       { "preadv2", 376 },
        { "prlimit64", 334 },
        { "process_vm_readv", 340 },
        { "process_vm_writev", 341 },
@@ -253,6 +257,7 @@ const struct arch_syscall_def s390_syscall_table[] = { \
        { "putpmsg", 189 },
        { "pwrite64", 181 },
        { "pwritev", 329 },
+       { "pwritev2", 377 },
        { "query_module", 167 },
        { "quotactl", 131 },
        { "read", 3 },
index 9825c63902917439b18cb1dfefb279339b276cca..cc9763d14626646a450ee267b4cbfff2cba31075 100644 (file)
@@ -10,7 +10,7 @@
 #include "arch.h"
 #include "arch-s390x.h"
 
-/* NOTE: based on Linux 4.5-rc4 */
+/* NOTE: based on Linux 4.9 */
 const struct arch_syscall_def s390x_syscall_table[] = { \
        { "_llseek", __PNR__llseek },
        { "_newselect", __PNR__newselect },
@@ -238,11 +238,15 @@ const struct arch_syscall_def s390x_syscall_table[] = { \
        { "pipe", 42 },
        { "pipe2", 325 },
        { "pivot_root", 217 },
+       { "pkey_alloc", __PNR_pkey_alloc },
+       { "pkey_free", __PNR_pkey_free },
+       { "pkey_mprotect", __PNR_pkey_mprotect },
        { "poll", 168 },
        { "ppoll", 302 },
        { "prctl", 172 },
        { "pread64", 180 },
        { "preadv", 328 },
+       { "preadv2", 376 },
        { "prlimit64", 334 },
        { "process_vm_readv", 340 },
        { "process_vm_writev", 341 },
@@ -253,6 +257,7 @@ const struct arch_syscall_def s390x_syscall_table[] = { \
        { "putpmsg", 189 },
        { "pwrite64", 181 },
        { "pwritev", 329 },
+       { "pwritev2", 377 },
        { "query_module", 167 },
        { "quotactl", 131 },
        { "read", 3 },
index 80dd38b9df0bc3f6a8440baedfdca14f85390544..5b9970b589a3da2fdf0201fe2ea07e546f142eac 100644 (file)
@@ -254,11 +254,15 @@ const struct arch_syscall_def x32_syscall_table[] = { \
        { "pipe", (X32_SYSCALL_BIT + 22) },
        { "pipe2", (X32_SYSCALL_BIT + 293) },
        { "pivot_root", (X32_SYSCALL_BIT + 155) },
+       { "pkey_alloc", (X32_SYSCALL_BIT + 330) },
+       { "pkey_free", (X32_SYSCALL_BIT + 331) },
+       { "pkey_mprotect", (X32_SYSCALL_BIT + 329) },
        { "poll", (X32_SYSCALL_BIT + 7) },
        { "ppoll", (X32_SYSCALL_BIT + 271) },
        { "prctl", (X32_SYSCALL_BIT + 157) },
        { "pread64", (X32_SYSCALL_BIT + 17) },
        { "preadv", (X32_SYSCALL_BIT + 534) },
+       { "preadv2", (X32_SYSCALL_BIT + 546) },
        { "prlimit64", (X32_SYSCALL_BIT + 302) },
        { "process_vm_readv", (X32_SYSCALL_BIT + 539) },
        { "process_vm_writev", (X32_SYSCALL_BIT + 540) },
@@ -269,6 +273,7 @@ const struct arch_syscall_def x32_syscall_table[] = { \
        { "putpmsg", (X32_SYSCALL_BIT + 182) },
        { "pwrite64", (X32_SYSCALL_BIT + 18) },
        { "pwritev", (X32_SYSCALL_BIT + 535) },
+       { "pwritev2", (X32_SYSCALL_BIT + 547) },
        { "query_module", __PNR_query_module },
        { "quotactl", (X32_SYSCALL_BIT + 179) },
        { "read", (X32_SYSCALL_BIT + 0) },
index 58e0597d5d5072ea993f127f4da4c8602b03ed33..00684acabe145917e24fca218b9e03e98b6d562e 100644 (file)
@@ -26,7 +26,7 @@
 #include "arch.h"
 #include "arch-x86.h"
 
-/* NOTE: based on Linux 4.5-rc4 */
+/* NOTE: based on Linux 4.9 */
 const struct arch_syscall_def x86_syscall_table[] = { \
        { "_llseek", 140 },
        { "_newselect", 142 },
@@ -254,11 +254,15 @@ const struct arch_syscall_def x86_syscall_table[] = { \
        { "pipe", 42 },
        { "pipe2", 331 },
        { "pivot_root", 217 },
+       { "pkey_alloc", 381 },
+       { "pkey_free", 382 },
+       { "pkey_mprotect", 380 },
        { "poll", 168 },
        { "ppoll", 309 },
        { "prctl", 172 },
        { "pread64", 180 },
        { "preadv", 333 },
+       { "preadv2", 378 },
        { "prlimit64", 340 },
        { "process_vm_readv", 347 },
        { "process_vm_writev", 348 },
@@ -269,6 +273,7 @@ const struct arch_syscall_def x86_syscall_table[] = { \
        { "putpmsg", 189 },
        { "pwrite64", 181 },
        { "pwritev", 334 },
+       { "pwritev2", 379 },
        { "query_module", 167 },
        { "quotactl", 131 },
        { "read", 3 },
index 2dd981828aaa7467e3839fae08fa3104f2e10140..655cf5fb1c050483ff44654f336ed53f6b711c4e 100644 (file)
@@ -26,7 +26,7 @@
 #include "arch.h"
 #include "arch-x86_64.h"
 
-/* NOTE: based on Linux 4.5-rc4 */
+/* NOTE: based on Linux 4.9 */
 const struct arch_syscall_def x86_64_syscall_table[] = { \
        { "_llseek", __PNR__llseek },
        { "_newselect", __PNR__newselect },
@@ -254,11 +254,15 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \
        { "pipe", 22 },
        { "pipe2", 293 },
        { "pivot_root", 155 },
+       { "pkey_alloc", 330 },
+       { "pkey_free", 331 },
+       { "pkey_mprotect", 329 },
        { "poll", 7 },
        { "ppoll", 271 },
        { "prctl", 157 },
        { "pread64", 17 },
        { "preadv", 295 },
+       { "preadv2", 327 },
        { "prlimit64", 302 },
        { "process_vm_readv", 310 },
        { "process_vm_writev", 311 },
@@ -269,6 +273,7 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \
        { "putpmsg", 182 },
        { "pwrite64", 18 },
        { "pwritev", 296 },
+       { "pwritev2", 328 },
        { "query_module", 178 },
        { "quotactl", 179 },
        { "read", 0 },