aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndré Almeida <andrealmeid@riseup.net>2020-02-17 02:27:23 -0300
committerGitHub <noreply@github.com>2020-02-17 06:27:23 +0100
commitd0d8e8bc776b3fd53659a8067a1eb6f69141d2eb (patch)
treed15a154fcbdf6704e6a7a52a1aa6616e82303bbc
parent1f448cd62db290246f8793128f85bd84aaa7a59d (diff)
sys/linux: add new FUTEX_WAIT_MULTIPLE operation
Create individual file for futex syscall and add description for the new operation FUTEX_WAIT_MULTIPLE. Signed-off-by: André Almeida <andrealmeid@collabora.com>
-rw-r--r--AUTHORS1
-rw-r--r--CONTRIBUTORS2
-rw-r--r--executor/defs.h12
-rw-r--r--executor/syscalls.h6
-rw-r--r--sys/linux/futex.txt27
-rw-r--r--sys/linux/futex_386.const15
-rw-r--r--sys/linux/futex_amd64.const15
-rw-r--r--sys/linux/futex_arm.const15
-rw-r--r--sys/linux/futex_arm64.const15
-rw-r--r--sys/linux/futex_mips64le.const15
-rw-r--r--sys/linux/futex_ppc64le.const15
-rw-r--r--sys/linux/gen/386.go19
-rw-r--r--sys/linux/gen/amd64.go19
-rw-r--r--sys/linux/gen/arm.go19
-rw-r--r--sys/linux/gen/arm64.go19
-rw-r--r--sys/linux/gen/mips64le.go19
-rw-r--r--sys/linux/gen/ppc64le.go19
-rw-r--r--sys/linux/sys.txt15
-rw-r--r--sys/linux/sys_386.const12
-rw-r--r--sys/linux/sys_amd64.const12
-rw-r--r--sys/linux/sys_arm.const12
-rw-r--r--sys/linux/sys_arm64.const12
-rw-r--r--sys/linux/sys_mips64le.const12
-rw-r--r--sys/linux/sys_ppc64le.const12
24 files changed, 234 insertions, 105 deletions
diff --git a/AUTHORS b/AUTHORS
index 8fb37048c..48bcbc3dc 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -37,3 +37,4 @@ Cody Holliday
JinWoo Lee
Andrew Turner
Ethercflow
+Collabora
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index eeb13f5b4..59daa642d 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -54,3 +54,5 @@ JinWoo Lee
Andrew Turner
Ethercflow
Christoph Paasch
+Collabora
+ André Almeida
diff --git a/executor/defs.h b/executor/defs.h
index 1e39f173a..ec14e34a4 100644
--- a/executor/defs.h
+++ b/executor/defs.h
@@ -70,7 +70,7 @@
#if GOARCH_386
#define GOARCH "386"
-#define SYZ_REVISION "81074d7797beb1fd663277e323762de00cf0aee6"
+#define SYZ_REVISION "7e933a8cce847a63d31163d1c6dfa926b9d707ce"
#define SYZ_EXECUTOR_USES_FORK_SERVER 1
#define SYZ_EXECUTOR_USES_SHMEM 1
#define SYZ_PAGE_SIZE 4096
@@ -80,7 +80,7 @@
#if GOARCH_amd64
#define GOARCH "amd64"
-#define SYZ_REVISION "154b48703f29bb3a08a78b81a3046cf44928e4d9"
+#define SYZ_REVISION "05f868b16d6867c0842ba72cf5f4e62b61b93a05"
#define SYZ_EXECUTOR_USES_FORK_SERVER 1
#define SYZ_EXECUTOR_USES_SHMEM 1
#define SYZ_PAGE_SIZE 4096
@@ -90,7 +90,7 @@
#if GOARCH_arm
#define GOARCH "arm"
-#define SYZ_REVISION "5c075e7d181710010f2fc69117b0caba1ca876dd"
+#define SYZ_REVISION "c2ed820e865dcb4c50b91174fcb8be4d26c9b5cb"
#define SYZ_EXECUTOR_USES_FORK_SERVER 1
#define SYZ_EXECUTOR_USES_SHMEM 1
#define SYZ_PAGE_SIZE 4096
@@ -100,7 +100,7 @@
#if GOARCH_arm64
#define GOARCH "arm64"
-#define SYZ_REVISION "8987c5cf20d8a46fba8534793aa33c4be1678e0f"
+#define SYZ_REVISION "e1ea3f956cb5b2b67e3d815b820bb7948c83c955"
#define SYZ_EXECUTOR_USES_FORK_SERVER 1
#define SYZ_EXECUTOR_USES_SHMEM 1
#define SYZ_PAGE_SIZE 4096
@@ -110,7 +110,7 @@
#if GOARCH_mips64le
#define GOARCH "mips64le"
-#define SYZ_REVISION "2b84b657bff1ea3b7b3f73590543e4797622adbd"
+#define SYZ_REVISION "819b0d0076710643840257c4e954ec1603839dd2"
#define SYZ_EXECUTOR_USES_FORK_SERVER 1
#define SYZ_EXECUTOR_USES_SHMEM 1
#define SYZ_PAGE_SIZE 4096
@@ -120,7 +120,7 @@
#if GOARCH_ppc64le
#define GOARCH "ppc64le"
-#define SYZ_REVISION "3396f69ff357c213bed1cf176308552f52f7cb8a"
+#define SYZ_REVISION "983c33d3c33e7722f2cf2de15b12fe03e0f7d9ba"
#define SYZ_EXECUTOR_USES_FORK_SERVER 1
#define SYZ_EXECUTOR_USES_SHMEM 1
#define SYZ_PAGE_SIZE 4096
diff --git a/executor/syscalls.h b/executor/syscalls.h
index 709ad1ab8..8318f3697 100644
--- a/executor/syscalls.h
+++ b/executor/syscalls.h
@@ -2274,6 +2274,7 @@ const call_t syscalls[] = {
{"fsync", 118},
{"ftruncate", 93},
{"futex", 240},
+ {"futex$FUTEX_WAIT_MULTIPLE", 240},
{"futimesat", 299},
{"get_mempolicy", 275},
{"get_robust_list", 312},
@@ -5572,6 +5573,7 @@ const call_t syscalls[] = {
{"fsync", 74},
{"ftruncate", 77},
{"futex", 202},
+ {"futex$FUTEX_WAIT_MULTIPLE", 202},
{"futimesat", 261},
{"get_mempolicy", 239},
{"get_robust_list", 274},
@@ -8869,6 +8871,7 @@ const call_t syscalls[] = {
{"fsync", 118},
{"ftruncate", 93},
{"futex", 240},
+ {"futex$FUTEX_WAIT_MULTIPLE", 240},
{"futimesat", 326},
{"get_mempolicy", 320},
{"get_robust_list", 339},
@@ -12116,6 +12119,7 @@ const call_t syscalls[] = {
{"fsync", 82},
{"ftruncate", 46},
{"futex", 98},
+ {"futex$FUTEX_WAIT_MULTIPLE", 98},
{"get_mempolicy", 236},
{"get_robust_list", 100},
{"getcwd", 17},
@@ -15347,6 +15351,7 @@ const call_t syscalls[] = {
{"fsync", 5072},
{"ftruncate", 5075},
{"futex", 5194},
+ {"futex$FUTEX_WAIT_MULTIPLE", 5194},
{"futimesat", 5251},
{"get_mempolicy", 5228},
{"get_robust_list", 5269},
@@ -18502,6 +18507,7 @@ const call_t syscalls[] = {
{"fsync", 118},
{"ftruncate", 93},
{"futex", 221},
+ {"futex$FUTEX_WAIT_MULTIPLE", 221},
{"futimesat", 290},
{"get_mempolicy", 260},
{"get_robust_list", 299},
diff --git a/sys/linux/futex.txt b/sys/linux/futex.txt
new file mode 100644
index 000000000..cb412f938
--- /dev/null
+++ b/sys/linux/futex.txt
@@ -0,0 +1,27 @@
+# Copyright 2020 syzkaller project authors. All rights reserved.
+# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+include <linux/futex.h>
+
+futex(addr ptr[in, int32[0:2]], op flags[futex_op], val int32[0:2], timeout ptr[in, timespec], addr2 ptr[in, int32[0:2]], val3 int32[0:2])
+futex$FUTEX_WAIT_MULTIPLE(addr ptr[in, array[futex_wait_block, 0:129]], op const[FUTEX_WAIT_MULTIPLE], val len[addr], timeout ptr[in, timespec], addr2 const[0], val3 const[0])
+set_robust_list(head ptr[in, robust_list_head], len len[head])
+get_robust_list(pid pid, head ptr[in, ptr[out, robust_list_head]], len ptr[inout, len[head, intptr]])
+
+robust_list_head {
+ list ptr[in, robust_list, opt]
+ futex_offset intptr
+ list_op_pending ptr[in, robust_list, opt]
+}
+
+robust_list {
+ next ptr[in, robust_list, opt]
+}
+
+futex_wait_block {
+ uaddr ptr[in, int32[0:2]]
+ val int32[0:2]
+ bitset const[4294967295, int32]
+}
+
+futex_op = FUTEX_WAIT, FUTEX_WAIT_BITSET, FUTEX_WAKE, FUTEX_REQUEUE, FUTEX_CMP_REQUEUE, FUTEX_WAIT_MULTIPLE, FUTEX_WAIT_PRIVATE, FUTEX_WAKE_PRIVATE, FUTEX_WAIT_REQUEUE_PI_PRIVATE, FUTEX_CMP_REQUEUE_PI_PRIVATE, FUTEX_WAIT_MULTIPLE_PRIVATE
diff --git a/sys/linux/futex_386.const b/sys/linux/futex_386.const
new file mode 100644
index 000000000..2da0ec78c
--- /dev/null
+++ b/sys/linux/futex_386.const
@@ -0,0 +1,15 @@
+# AUTOGENERATED FILE
+FUTEX_CMP_REQUEUE = 4
+FUTEX_CMP_REQUEUE_PI_PRIVATE = 140
+FUTEX_REQUEUE = 3
+FUTEX_WAIT = 0
+FUTEX_WAIT_BITSET = 9
+FUTEX_WAIT_MULTIPLE = 13
+FUTEX_WAIT_MULTIPLE_PRIVATE = 141
+FUTEX_WAIT_PRIVATE = 128
+FUTEX_WAIT_REQUEUE_PI_PRIVATE = 139
+FUTEX_WAKE = 1
+FUTEX_WAKE_PRIVATE = 129
+__NR_futex = 240
+__NR_get_robust_list = 312
+__NR_set_robust_list = 311
diff --git a/sys/linux/futex_amd64.const b/sys/linux/futex_amd64.const
new file mode 100644
index 000000000..fe82b3ccf
--- /dev/null
+++ b/sys/linux/futex_amd64.const
@@ -0,0 +1,15 @@
+# AUTOGENERATED FILE
+FUTEX_CMP_REQUEUE = 4
+FUTEX_CMP_REQUEUE_PI_PRIVATE = 140
+FUTEX_REQUEUE = 3
+FUTEX_WAIT = 0
+FUTEX_WAIT_BITSET = 9
+FUTEX_WAIT_MULTIPLE = 13
+FUTEX_WAIT_MULTIPLE_PRIVATE = 141
+FUTEX_WAIT_PRIVATE = 128
+FUTEX_WAIT_REQUEUE_PI_PRIVATE = 139
+FUTEX_WAKE = 1
+FUTEX_WAKE_PRIVATE = 129
+__NR_futex = 202
+__NR_get_robust_list = 274
+__NR_set_robust_list = 273
diff --git a/sys/linux/futex_arm.const b/sys/linux/futex_arm.const
new file mode 100644
index 000000000..4367494b5
--- /dev/null
+++ b/sys/linux/futex_arm.const
@@ -0,0 +1,15 @@
+# AUTOGENERATED FILE
+FUTEX_CMP_REQUEUE = 4
+FUTEX_CMP_REQUEUE_PI_PRIVATE = 140
+FUTEX_REQUEUE = 3
+FUTEX_WAIT = 0
+FUTEX_WAIT_BITSET = 9
+FUTEX_WAIT_MULTIPLE = 13
+FUTEX_WAIT_MULTIPLE_PRIVATE = 141
+FUTEX_WAIT_PRIVATE = 128
+FUTEX_WAIT_REQUEUE_PI_PRIVATE = 139
+FUTEX_WAKE = 1
+FUTEX_WAKE_PRIVATE = 129
+__NR_futex = 240
+__NR_get_robust_list = 339
+__NR_set_robust_list = 338
diff --git a/sys/linux/futex_arm64.const b/sys/linux/futex_arm64.const
new file mode 100644
index 000000000..2a685aa16
--- /dev/null
+++ b/sys/linux/futex_arm64.const
@@ -0,0 +1,15 @@
+# AUTOGENERATED FILE
+FUTEX_CMP_REQUEUE = 4
+FUTEX_CMP_REQUEUE_PI_PRIVATE = 140
+FUTEX_REQUEUE = 3
+FUTEX_WAIT = 0
+FUTEX_WAIT_BITSET = 9
+FUTEX_WAIT_MULTIPLE = 13
+FUTEX_WAIT_MULTIPLE_PRIVATE = 141
+FUTEX_WAIT_PRIVATE = 128
+FUTEX_WAIT_REQUEUE_PI_PRIVATE = 139
+FUTEX_WAKE = 1
+FUTEX_WAKE_PRIVATE = 129
+__NR_futex = 98
+__NR_get_robust_list = 100
+__NR_set_robust_list = 99
diff --git a/sys/linux/futex_mips64le.const b/sys/linux/futex_mips64le.const
new file mode 100644
index 000000000..28af2f199
--- /dev/null
+++ b/sys/linux/futex_mips64le.const
@@ -0,0 +1,15 @@
+# AUTOGENERATED FILE
+FUTEX_CMP_REQUEUE = 4
+FUTEX_CMP_REQUEUE_PI_PRIVATE = 140
+FUTEX_REQUEUE = 3
+FUTEX_WAIT = 0
+FUTEX_WAIT_BITSET = 9
+FUTEX_WAIT_MULTIPLE = 13
+FUTEX_WAIT_MULTIPLE_PRIVATE = 141
+FUTEX_WAIT_PRIVATE = 128
+FUTEX_WAIT_REQUEUE_PI_PRIVATE = 139
+FUTEX_WAKE = 1
+FUTEX_WAKE_PRIVATE = 129
+__NR_futex = 5194
+__NR_get_robust_list = 5269
+__NR_set_robust_list = 5268
diff --git a/sys/linux/futex_ppc64le.const b/sys/linux/futex_ppc64le.const
new file mode 100644
index 000000000..4c09ad7f9
--- /dev/null
+++ b/sys/linux/futex_ppc64le.const
@@ -0,0 +1,15 @@
+# AUTOGENERATED FILE
+FUTEX_CMP_REQUEUE = 4
+FUTEX_CMP_REQUEUE_PI_PRIVATE = 140
+FUTEX_REQUEUE = 3
+FUTEX_WAIT = 0
+FUTEX_WAIT_BITSET = 9
+FUTEX_WAIT_MULTIPLE = 13
+FUTEX_WAIT_MULTIPLE_PRIVATE = 141
+FUTEX_WAIT_PRIVATE = 128
+FUTEX_WAIT_REQUEUE_PI_PRIVATE = 139
+FUTEX_WAKE = 1
+FUTEX_WAKE_PRIVATE = 129
+__NR_futex = 221
+__NR_get_robust_list = 299
+__NR_set_robust_list = 300
diff --git a/sys/linux/gen/386.go b/sys/linux/gen/386.go
index 7123e28ff..93224973a 100644
--- a/sys/linux/gen/386.go
+++ b/sys/linux/gen/386.go
@@ -7297,6 +7297,11 @@ var structDescs_386 = []*KeyedStruct{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "size", TypeSize: 4}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "padding", TypeSize: 4}}},
}}},
+ {StructKey{Name: "futex_wait_block"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "futex_wait_block", TypeSize: 12}, Fields: []Type{
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "uaddr", TypeSize: 4}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "bitset", TypeSize: 4}}, Val: 4294967295},
+ }}},
{StructKey{Name: "fw_policy"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "fw_policy", IsVarlen: true}, Fields: []Type{
&StructType{Key: StructKey{Name: "nlattr_t[const[TCA_FW_CLASSID, int16], tcm_handle]"}, FldName: "TCA_FW_CLASSID"},
&StructType{Key: StructKey{Name: "nlattr_t[const[TCA_FW_POLICE, int16], array[police_policy]]"}, FldName: "TCA_FW_POLICE"},
@@ -49221,12 +49226,20 @@ var syscalls_386 = []*Syscall{
}},
{NR: 240, Name: "futex", CallName: "futex", Args: []Type{
&PtrType{TypeCommon{TypeName: "ptr", FldName: "addr", TypeSize: 4}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
- &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "futex_op", FldName: "op", TypeSize: 4}}, Vals: []uint64{0, 1, 3, 4, 9, 128, 129, 139, 140}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "futex_op", FldName: "op", TypeSize: 4}}, Vals: []uint64{0, 1, 3, 4, 9, 13, 128, 129, 139, 140, 141}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "timeout", TypeSize: 4}, &StructType{Key: StructKey{Name: "timespec"}}},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "addr2", TypeSize: 4}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val3", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
}},
+ {NR: 240, Name: "futex$FUTEX_WAIT_MULTIPLE", CallName: "futex", Args: []Type{
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "addr", TypeSize: 4}, &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "futex_wait_block"}}, Kind: 1, RangeEnd: 129}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "op", TypeSize: 4}}, Val: 13},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "val", TypeSize: 4}}, Path: []string{"addr"}},
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "timeout", TypeSize: 4}, &StructType{Key: StructKey{Name: "timespec"}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "addr2", TypeSize: 4}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "val3", TypeSize: 4}}},
+ }},
{NR: 299, Name: "futimesat", CallName: "futimesat", Args: []Type{
&ResourceType{TypeCommon: TypeCommon{TypeName: "fd_dir", FldName: "dir", TypeSize: 4}},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "pathname", TypeSize: 4}, &BufferType{TypeCommon: TypeCommon{TypeName: "filename", IsVarlen: true}, Kind: 3}},
@@ -67654,6 +67667,8 @@ var consts_386 = []ConstValue{
{"FUTEX_REQUEUE", 3},
{Name: "FUTEX_WAIT"},
{"FUTEX_WAIT_BITSET", 9},
+ {"FUTEX_WAIT_MULTIPLE", 13},
+ {"FUTEX_WAIT_MULTIPLE_PRIVATE", 141},
{"FUTEX_WAIT_PRIVATE", 128},
{"FUTEX_WAIT_REQUEUE_PI_PRIVATE", 139},
{"FUTEX_WAKE", 1},
@@ -75807,4 +75822,4 @@ var consts_386 = []ConstValue{
{"ethtool_per_queue_op_size", 128},
}
-const revision_386 = "81074d7797beb1fd663277e323762de00cf0aee6"
+const revision_386 = "7e933a8cce847a63d31163d1c6dfa926b9d707ce"
diff --git a/sys/linux/gen/amd64.go b/sys/linux/gen/amd64.go
index 8505a0b0e..c261c2732 100644
--- a/sys/linux/gen/amd64.go
+++ b/sys/linux/gen/amd64.go
@@ -7431,6 +7431,11 @@ var structDescs_amd64 = []*KeyedStruct{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "size", TypeSize: 4}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "padding", TypeSize: 4}}},
}}},
+ {StructKey{Name: "futex_wait_block"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "futex_wait_block", TypeSize: 16}, Fields: []Type{
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "uaddr", TypeSize: 8}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "bitset", TypeSize: 4}}, Val: 4294967295},
+ }}},
{StructKey{Name: "fw_policy"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "fw_policy", IsVarlen: true}, Fields: []Type{
&StructType{Key: StructKey{Name: "nlattr_t[const[TCA_FW_CLASSID, int16], tcm_handle]"}, FldName: "TCA_FW_CLASSID"},
&StructType{Key: StructKey{Name: "nlattr_t[const[TCA_FW_POLICE, int16], array[police_policy]]"}, FldName: "TCA_FW_POLICE"},
@@ -50129,12 +50134,20 @@ var syscalls_amd64 = []*Syscall{
}},
{NR: 202, Name: "futex", CallName: "futex", Args: []Type{
&PtrType{TypeCommon{TypeName: "ptr", FldName: "addr", TypeSize: 8}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
- &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "futex_op", FldName: "op", TypeSize: 8}}, Vals: []uint64{0, 1, 3, 4, 9, 128, 129, 139, 140}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "futex_op", FldName: "op", TypeSize: 8}}, Vals: []uint64{0, 1, 3, 4, 9, 13, 128, 129, 139, 140, 141}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "timeout", TypeSize: 8}, &StructType{Key: StructKey{Name: "timespec"}}},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "addr2", TypeSize: 8}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val3", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
}},
+ {NR: 202, Name: "futex$FUTEX_WAIT_MULTIPLE", CallName: "futex", Args: []Type{
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "addr", TypeSize: 8}, &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "futex_wait_block"}}, Kind: 1, RangeEnd: 129}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "op", TypeSize: 8}}, Val: 13},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "val", TypeSize: 8}}, Path: []string{"addr"}},
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "timeout", TypeSize: 8}, &StructType{Key: StructKey{Name: "timespec"}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "addr2", TypeSize: 8}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "val3", TypeSize: 8}}},
+ }},
{NR: 261, Name: "futimesat", CallName: "futimesat", Args: []Type{
&ResourceType{TypeCommon: TypeCommon{TypeName: "fd_dir", FldName: "dir", TypeSize: 4}},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "pathname", TypeSize: 8}, &BufferType{TypeCommon: TypeCommon{TypeName: "filename", IsVarlen: true}, Kind: 3}},
@@ -68600,6 +68613,8 @@ var consts_amd64 = []ConstValue{
{"FUTEX_REQUEUE", 3},
{Name: "FUTEX_WAIT"},
{"FUTEX_WAIT_BITSET", 9},
+ {"FUTEX_WAIT_MULTIPLE", 13},
+ {"FUTEX_WAIT_MULTIPLE_PRIVATE", 141},
{"FUTEX_WAIT_PRIVATE", 128},
{"FUTEX_WAIT_REQUEUE_PI_PRIVATE", 139},
{"FUTEX_WAKE", 1},
@@ -76767,4 +76782,4 @@ var consts_amd64 = []ConstValue{
{"ethtool_per_queue_op_size", 128},
}
-const revision_amd64 = "154b48703f29bb3a08a78b81a3046cf44928e4d9"
+const revision_amd64 = "05f868b16d6867c0842ba72cf5f4e62b61b93a05"
diff --git a/sys/linux/gen/arm.go b/sys/linux/gen/arm.go
index 8b8ed5491..8a256e13e 100644
--- a/sys/linux/gen/arm.go
+++ b/sys/linux/gen/arm.go
@@ -7331,6 +7331,11 @@ var structDescs_arm = []*KeyedStruct{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "size", TypeSize: 4}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "padding", TypeSize: 4}}},
}}},
+ {StructKey{Name: "futex_wait_block"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "futex_wait_block", TypeSize: 12}, Fields: []Type{
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "uaddr", TypeSize: 4}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "bitset", TypeSize: 4}}, Val: 4294967295},
+ }}},
{StructKey{Name: "fw_policy"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "fw_policy", IsVarlen: true}, Fields: []Type{
&StructType{Key: StructKey{Name: "nlattr_t[const[TCA_FW_CLASSID, int16], tcm_handle]"}, FldName: "TCA_FW_CLASSID"},
&StructType{Key: StructKey{Name: "nlattr_t[const[TCA_FW_POLICE, int16], array[police_policy]]"}, FldName: "TCA_FW_POLICE"},
@@ -49114,12 +49119,20 @@ var syscalls_arm = []*Syscall{
}},
{NR: 240, Name: "futex", CallName: "futex", Args: []Type{
&PtrType{TypeCommon{TypeName: "ptr", FldName: "addr", TypeSize: 4}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
- &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "futex_op", FldName: "op", TypeSize: 4}}, Vals: []uint64{0, 1, 3, 4, 9, 128, 129, 139, 140}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "futex_op", FldName: "op", TypeSize: 4}}, Vals: []uint64{0, 1, 3, 4, 9, 13, 128, 129, 139, 140, 141}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "timeout", TypeSize: 4}, &StructType{Key: StructKey{Name: "timespec"}}},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "addr2", TypeSize: 4}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val3", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
}},
+ {NR: 240, Name: "futex$FUTEX_WAIT_MULTIPLE", CallName: "futex", Args: []Type{
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "addr", TypeSize: 4}, &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "futex_wait_block"}}, Kind: 1, RangeEnd: 129}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "op", TypeSize: 4}}, Val: 13},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "val", TypeSize: 4}}, Path: []string{"addr"}},
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "timeout", TypeSize: 4}, &StructType{Key: StructKey{Name: "timespec"}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "addr2", TypeSize: 4}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "val3", TypeSize: 4}}},
+ }},
{NR: 326, Name: "futimesat", CallName: "futimesat", Args: []Type{
&ResourceType{TypeCommon: TypeCommon{TypeName: "fd_dir", FldName: "dir", TypeSize: 4}},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "pathname", TypeSize: 4}, &BufferType{TypeCommon: TypeCommon{TypeName: "filename", IsVarlen: true}, Kind: 3}},
@@ -67371,6 +67384,8 @@ var consts_arm = []ConstValue{
{"FUTEX_REQUEUE", 3},
{Name: "FUTEX_WAIT"},
{"FUTEX_WAIT_BITSET", 9},
+ {"FUTEX_WAIT_MULTIPLE", 13},
+ {"FUTEX_WAIT_MULTIPLE_PRIVATE", 141},
{"FUTEX_WAIT_PRIVATE", 128},
{"FUTEX_WAIT_REQUEUE_PI_PRIVATE", 139},
{"FUTEX_WAKE", 1},
@@ -75459,4 +75474,4 @@ var consts_arm = []ConstValue{
{"ethtool_per_queue_op_size", 128},
}
-const revision_arm = "5c075e7d181710010f2fc69117b0caba1ca876dd"
+const revision_arm = "c2ed820e865dcb4c50b91174fcb8be4d26c9b5cb"
diff --git a/sys/linux/gen/arm64.go b/sys/linux/gen/arm64.go
index d7eea1f29..190400a78 100644
--- a/sys/linux/gen/arm64.go
+++ b/sys/linux/gen/arm64.go
@@ -7431,6 +7431,11 @@ var structDescs_arm64 = []*KeyedStruct{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "size", TypeSize: 4}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "padding", TypeSize: 4}}},
}}},
+ {StructKey{Name: "futex_wait_block"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "futex_wait_block", TypeSize: 16}, Fields: []Type{
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "uaddr", TypeSize: 8}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "bitset", TypeSize: 4}}, Val: 4294967295},
+ }}},
{StructKey{Name: "fw_policy"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "fw_policy", IsVarlen: true}, Fields: []Type{
&StructType{Key: StructKey{Name: "nlattr_t[const[TCA_FW_CLASSID, int16], tcm_handle]"}, FldName: "TCA_FW_CLASSID"},
&StructType{Key: StructKey{Name: "nlattr_t[const[TCA_FW_POLICE, int16], array[police_policy]]"}, FldName: "TCA_FW_POLICE"},
@@ -49850,12 +49855,20 @@ var syscalls_arm64 = []*Syscall{
}},
{NR: 98, Name: "futex", CallName: "futex", Args: []Type{
&PtrType{TypeCommon{TypeName: "ptr", FldName: "addr", TypeSize: 8}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
- &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "futex_op", FldName: "op", TypeSize: 8}}, Vals: []uint64{0, 1, 3, 4, 9, 128, 129, 139, 140}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "futex_op", FldName: "op", TypeSize: 8}}, Vals: []uint64{0, 1, 3, 4, 9, 13, 128, 129, 139, 140, 141}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "timeout", TypeSize: 8}, &StructType{Key: StructKey{Name: "timespec"}}},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "addr2", TypeSize: 8}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val3", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
}},
+ {NR: 98, Name: "futex$FUTEX_WAIT_MULTIPLE", CallName: "futex", Args: []Type{
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "addr", TypeSize: 8}, &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "futex_wait_block"}}, Kind: 1, RangeEnd: 129}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "op", TypeSize: 8}}, Val: 13},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "val", TypeSize: 8}}, Path: []string{"addr"}},
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "timeout", TypeSize: 8}, &StructType{Key: StructKey{Name: "timespec"}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "addr2", TypeSize: 8}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "val3", TypeSize: 8}}},
+ }},
{NR: 236, Name: "get_mempolicy", CallName: "get_mempolicy", Args: []Type{
&PtrType{TypeCommon{TypeName: "ptr", FldName: "mode", TypeSize: 8}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4, ArgDir: 1}}}},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "nodemask", TypeSize: 8}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", TypeSize: 8, ArgDir: 1}}}},
@@ -68038,6 +68051,8 @@ var consts_arm64 = []ConstValue{
{"FUTEX_REQUEUE", 3},
{Name: "FUTEX_WAIT"},
{"FUTEX_WAIT_BITSET", 9},
+ {"FUTEX_WAIT_MULTIPLE", 13},
+ {"FUTEX_WAIT_MULTIPLE_PRIVATE", 141},
{"FUTEX_WAIT_PRIVATE", 128},
{"FUTEX_WAIT_REQUEUE_PI_PRIVATE", 139},
{"FUTEX_WAKE", 1},
@@ -76112,4 +76127,4 @@ var consts_arm64 = []ConstValue{
{"ethtool_per_queue_op_size", 128},
}
-const revision_arm64 = "8987c5cf20d8a46fba8534793aa33c4be1678e0f"
+const revision_arm64 = "e1ea3f956cb5b2b67e3d815b820bb7948c83c955"
diff --git a/sys/linux/gen/mips64le.go b/sys/linux/gen/mips64le.go
index c0e9f9523..9499536dc 100644
--- a/sys/linux/gen/mips64le.go
+++ b/sys/linux/gen/mips64le.go
@@ -7418,6 +7418,11 @@ var structDescs_mips64le = []*KeyedStruct{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "size", TypeSize: 4}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "padding", TypeSize: 4}}},
}}},
+ {StructKey{Name: "futex_wait_block"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "futex_wait_block", TypeSize: 16}, Fields: []Type{
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "uaddr", TypeSize: 8}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "bitset", TypeSize: 4}}, Val: 4294967295},
+ }}},
{StructKey{Name: "fw_policy"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "fw_policy", IsVarlen: true}, Fields: []Type{
&StructType{Key: StructKey{Name: "nlattr_t[const[TCA_FW_CLASSID, int16], tcm_handle]"}, FldName: "TCA_FW_CLASSID"},
&StructType{Key: StructKey{Name: "nlattr_t[const[TCA_FW_POLICE, int16], array[police_policy]]"}, FldName: "TCA_FW_POLICE"},
@@ -48942,12 +48947,20 @@ var syscalls_mips64le = []*Syscall{
}},
{NR: 5194, Name: "futex", CallName: "futex", Args: []Type{
&PtrType{TypeCommon{TypeName: "ptr", FldName: "addr", TypeSize: 8}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
- &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "futex_op", FldName: "op", TypeSize: 8}}, Vals: []uint64{0, 1, 3, 4, 9, 128, 129, 139, 140}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "futex_op", FldName: "op", TypeSize: 8}}, Vals: []uint64{0, 1, 3, 4, 9, 13, 128, 129, 139, 140, 141}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "timeout", TypeSize: 8}, &StructType{Key: StructKey{Name: "timespec"}}},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "addr2", TypeSize: 8}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val3", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
}},
+ {NR: 5194, Name: "futex$FUTEX_WAIT_MULTIPLE", CallName: "futex", Args: []Type{
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "addr", TypeSize: 8}, &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "futex_wait_block"}}, Kind: 1, RangeEnd: 129}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "op", TypeSize: 8}}, Val: 13},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "val", TypeSize: 8}}, Path: []string{"addr"}},
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "timeout", TypeSize: 8}, &StructType{Key: StructKey{Name: "timespec"}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "addr2", TypeSize: 8}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "val3", TypeSize: 8}}},
+ }},
{NR: 5251, Name: "futimesat", CallName: "futimesat", Args: []Type{
&ResourceType{TypeCommon: TypeCommon{TypeName: "fd_dir", FldName: "dir", TypeSize: 4}},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "pathname", TypeSize: 8}, &BufferType{TypeCommon: TypeCommon{TypeName: "filename", IsVarlen: true}, Kind: 3}},
@@ -66692,6 +66705,8 @@ var consts_mips64le = []ConstValue{
{"FUTEX_REQUEUE", 3},
{Name: "FUTEX_WAIT"},
{"FUTEX_WAIT_BITSET", 9},
+ {"FUTEX_WAIT_MULTIPLE", 13},
+ {"FUTEX_WAIT_MULTIPLE_PRIVATE", 141},
{"FUTEX_WAIT_PRIVATE", 128},
{"FUTEX_WAIT_REQUEUE_PI_PRIVATE", 139},
{"FUTEX_WAKE", 1},
@@ -73735,4 +73750,4 @@ var consts_mips64le = []ConstValue{
{"ethtool_per_queue_op_size", 128},
}
-const revision_mips64le = "2b84b657bff1ea3b7b3f73590543e4797622adbd"
+const revision_mips64le = "819b0d0076710643840257c4e954ec1603839dd2"
diff --git a/sys/linux/gen/ppc64le.go b/sys/linux/gen/ppc64le.go
index 86ddccf53..8a0207c6b 100644
--- a/sys/linux/gen/ppc64le.go
+++ b/sys/linux/gen/ppc64le.go
@@ -7430,6 +7430,11 @@ var structDescs_ppc64le = []*KeyedStruct{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "size", TypeSize: 4}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "padding", TypeSize: 4}}},
}}},
+ {StructKey{Name: "futex_wait_block"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "futex_wait_block", TypeSize: 16}, Fields: []Type{
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "uaddr", TypeSize: 8}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "bitset", TypeSize: 4}}, Val: 4294967295},
+ }}},
{StructKey{Name: "fw_policy"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "fw_policy", IsVarlen: true}, Fields: []Type{
&StructType{Key: StructKey{Name: "nlattr_t[const[TCA_FW_CLASSID, int16], tcm_handle]"}, FldName: "TCA_FW_CLASSID"},
&StructType{Key: StructKey{Name: "nlattr_t[const[TCA_FW_POLICE, int16], array[police_policy]]"}, FldName: "TCA_FW_POLICE"},
@@ -49785,12 +49790,20 @@ var syscalls_ppc64le = []*Syscall{
}},
{NR: 221, Name: "futex", CallName: "futex", Args: []Type{
&PtrType{TypeCommon{TypeName: "ptr", FldName: "addr", TypeSize: 8}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
- &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "futex_op", FldName: "op", TypeSize: 8}}, Vals: []uint64{0, 1, 3, 4, 9, 128, 129, 139, 140}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "futex_op", FldName: "op", TypeSize: 8}}, Vals: []uint64{0, 1, 3, 4, 9, 13, 128, 129, 139, 140, 141}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "timeout", TypeSize: 8}, &StructType{Key: StructKey{Name: "timespec"}}},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "addr2", TypeSize: 8}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}, Kind: 1, RangeEnd: 2}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "val3", TypeSize: 4}}, Kind: 1, RangeEnd: 2},
}},
+ {NR: 221, Name: "futex$FUTEX_WAIT_MULTIPLE", CallName: "futex", Args: []Type{
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "addr", TypeSize: 8}, &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "futex_wait_block"}}, Kind: 1, RangeEnd: 129}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "op", TypeSize: 8}}, Val: 13},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "val", TypeSize: 8}}, Path: []string{"addr"}},
+ &PtrType{TypeCommon{TypeName: "ptr", FldName: "timeout", TypeSize: 8}, &StructType{Key: StructKey{Name: "timespec"}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "addr2", TypeSize: 8}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "val3", TypeSize: 8}}},
+ }},
{NR: 290, Name: "futimesat", CallName: "futimesat", Args: []Type{
&ResourceType{TypeCommon: TypeCommon{TypeName: "fd_dir", FldName: "dir", TypeSize: 4}},
&PtrType{TypeCommon{TypeName: "ptr", FldName: "pathname", TypeSize: 8}, &BufferType{TypeCommon: TypeCommon{TypeName: "filename", IsVarlen: true}, Kind: 3}},
@@ -68060,6 +68073,8 @@ var consts_ppc64le = []ConstValue{
{"FUTEX_REQUEUE", 3},
{Name: "FUTEX_WAIT"},
{"FUTEX_WAIT_BITSET", 9},
+ {"FUTEX_WAIT_MULTIPLE", 13},
+ {"FUTEX_WAIT_MULTIPLE_PRIVATE", 141},
{"FUTEX_WAIT_PRIVATE", 128},
{"FUTEX_WAIT_REQUEUE_PI_PRIVATE", 139},
{"FUTEX_WAKE", 1},
@@ -76109,4 +76124,4 @@ var consts_ppc64le = []ConstValue{
{"ethtool_per_queue_op_size", 128},
}
-const revision_ppc64le = "3396f69ff357c213bed1cf176308552f52f7cb8a"
+const revision_ppc64le = "983c33d3c33e7722f2cf2de15b12fe03e0f7d9ba"
diff --git a/sys/linux/sys.txt b/sys/linux/sys.txt
index 12ddb6900..ee875ad48 100644
--- a/sys/linux/sys.txt
+++ b/sys/linux/sys.txt
@@ -22,7 +22,6 @@ include <linux/un.h>
include <linux/ioctl.h>
include <linux/fadvise.h>
include <linux/falloc.h>
-include <linux/futex.h>
include <linux/kexec.h>
include <linux/elf.h>
include <linux/fiemap.h>
@@ -177,9 +176,6 @@ pkey_free(key pkey)
pkey_mprotect(addr vma, len len[addr], prot flags[mmap_prot], key pkey)
pkey_flags = PKEY_DISABLE_ACCESS, PKEY_DISABLE_WRITE
-futex(addr ptr[in, int32[0:2]], op flags[futex_op], val int32[0:2], timeout ptr[in, timespec], addr2 ptr[in, int32[0:2]], val3 int32[0:2])
-set_robust_list(head ptr[in, robust_list_head], len len[head])
-get_robust_list(pid pid, head ptr[in, ptr[out, robust_list_head]], len ptr[inout, len[head, intptr]])
restart_syscall()
# Almighty!
@@ -738,16 +734,6 @@ kexec_segment {
memsz intptr
}
-robust_list_head {
- list ptr[in, robust_list, opt]
- futex_offset intptr
- list_op_pending ptr[in, robust_list, opt]
-}
-
-robust_list {
- next ptr[in, robust_list, opt]
-}
-
rusage {
utime timeval
stime timeval
@@ -931,7 +917,6 @@ finit_module_flags = MODULE_INIT_IGNORE_MODVERSIONS, MODULE_INIT_IGNORE_VERMAGIC
delete_module_flags = O_NONBLOCK, O_TRUNC
kexec_load_flags = KEXEC_ON_CRASH, KEXEC_PRESERVE_CONTEXT, KEXEC_ARCH_386, KEXEC_ARCH_X86_64, KEXEC_ARCH_PPC, KEXEC_ARCH_PPC64, KEXEC_ARCH_IA_64, KEXEC_ARCH_ARM, KEXEC_ARCH_S390, KEXEC_ARCH_SH, KEXEC_ARCH_MIPS, KEXEC_ARCH_MIPS_LE, KEXEC_ARCH_DEFAULT
faccessat_flags = 0x100, 0x200, 0x400, 0x800, 0x1000
-futex_op = FUTEX_WAIT, FUTEX_WAIT_BITSET, FUTEX_WAKE, FUTEX_REQUEUE, FUTEX_CMP_REQUEUE, FUTEX_WAIT_PRIVATE, FUTEX_WAKE_PRIVATE, FUTEX_WAIT_REQUEUE_PI_PRIVATE, FUTEX_CMP_REQUEUE_PI_PRIVATE
sync_file_flags = SYNC_FILE_RANGE_WAIT_BEFORE, SYNC_FILE_RANGE_WRITE, SYNC_FILE_RANGE_WAIT_AFTER
kcmp_flags = KCMP_FILE, KCMP_FILES, KCMP_FS, KCMP_IO, KCMP_SIGHAND, KCMP_SYSVSEM, KCMP_VM
rusage_who = RUSAGE_SELF, RUSAGE_CHILDREN, RUSAGE_THREAD
diff --git a/sys/linux/sys_386.const b/sys/linux/sys_386.const
index ff93dc441..ccb7508c2 100644
--- a/sys/linux/sys_386.const
+++ b/sys/linux/sys_386.const
@@ -108,15 +108,6 @@ FIONBIO = 21537
FIONCLEX = 21584
FIOQSIZE = 21600
FITHAW = 3221510264
-FUTEX_CMP_REQUEUE = 4
-FUTEX_CMP_REQUEUE_PI_PRIVATE = 140
-FUTEX_REQUEUE = 3
-FUTEX_WAIT = 0
-FUTEX_WAIT_BITSET = 9
-FUTEX_WAIT_PRIVATE = 128
-FUTEX_WAIT_REQUEUE_PI_PRIVATE = 139
-FUTEX_WAKE = 1
-FUTEX_WAKE_PRIVATE = 129
F_ADD_SEALS = 1033
F_DUPFD = 0
F_DUPFD_CLOEXEC = 1030
@@ -599,10 +590,8 @@ __NR_fstatat64 = 300
__NR_fstatfs = 100
__NR_fsync = 118
__NR_ftruncate = 93
-__NR_futex = 240
__NR_futimesat = 299
__NR_get_mempolicy = 275
-__NR_get_robust_list = 312
__NR_get_thread_area = 244
__NR_getcwd = 183
__NR_getdents = 141
@@ -730,7 +719,6 @@ __NR_select = 82
__NR_sendfile = 187
__NR_sendfile64 = 239
__NR_set_mempolicy = 276
-__NR_set_robust_list = 311
__NR_set_thread_area = 243
__NR_set_tid_address = 258
__NR_setfsgid = 139
diff --git a/sys/linux/sys_amd64.const b/sys/linux/sys_amd64.const
index 4c09a4e0d..3b43c4ecd 100644
--- a/sys/linux/sys_amd64.const
+++ b/sys/linux/sys_amd64.const
@@ -108,15 +108,6 @@ FIONBIO = 21537
FIONCLEX = 21584
FIOQSIZE = 21600
FITHAW = 3221510264
-FUTEX_CMP_REQUEUE = 4
-FUTEX_CMP_REQUEUE_PI_PRIVATE = 140
-FUTEX_REQUEUE = 3
-FUTEX_WAIT = 0
-FUTEX_WAIT_BITSET = 9
-FUTEX_WAIT_PRIVATE = 128
-FUTEX_WAIT_REQUEUE_PI_PRIVATE = 139
-FUTEX_WAKE = 1
-FUTEX_WAKE_PRIVATE = 129
F_ADD_SEALS = 1033
F_DUPFD = 0
F_DUPFD_CLOEXEC = 1030
@@ -599,10 +590,8 @@ __NR_fstat = 5
__NR_fstatfs = 138
__NR_fsync = 74
__NR_ftruncate = 77
-__NR_futex = 202
__NR_futimesat = 261
__NR_get_mempolicy = 239
-__NR_get_robust_list = 274
__NR_get_thread_area = 211
__NR_getcwd = 79
__NR_getdents = 78
@@ -730,7 +719,6 @@ __NR_select = 23
__NR_sendfile = 40
# __NR_sendfile64 is not set
__NR_set_mempolicy = 238
-__NR_set_robust_list = 273
__NR_set_thread_area = 205
__NR_set_tid_address = 218
__NR_setfsgid = 123
diff --git a/sys/linux/sys_arm.const b/sys/linux/sys_arm.const
index 5f4ddac83..531698582 100644
--- a/sys/linux/sys_arm.const
+++ b/sys/linux/sys_arm.const
@@ -108,15 +108,6 @@ FIONBIO = 21537
FIONCLEX = 21584
FIOQSIZE = 21598
FITHAW = 3221510264
-FUTEX_CMP_REQUEUE = 4
-FUTEX_CMP_REQUEUE_PI_PRIVATE = 140
-FUTEX_REQUEUE = 3
-FUTEX_WAIT = 0
-FUTEX_WAIT_BITSET = 9
-FUTEX_WAIT_PRIVATE = 128
-FUTEX_WAIT_REQUEUE_PI_PRIVATE = 139
-FUTEX_WAKE = 1
-FUTEX_WAKE_PRIVATE = 129
F_ADD_SEALS = 1033
F_DUPFD = 0
F_DUPFD_CLOEXEC = 1030
@@ -599,10 +590,8 @@ __NR_fstatat64 = 327
__NR_fstatfs = 100
__NR_fsync = 118
__NR_ftruncate = 93
-__NR_futex = 240
__NR_futimesat = 326
__NR_get_mempolicy = 320
-__NR_get_robust_list = 339
# __NR_get_thread_area is not set
__NR_getcwd = 183
__NR_getdents = 141
@@ -730,7 +719,6 @@ __NR_sched_yield = 158
__NR_sendfile = 187
__NR_sendfile64 = 239
__NR_set_mempolicy = 321
-__NR_set_robust_list = 338
# __NR_set_thread_area is not set
__NR_set_tid_address = 256
__NR_setfsgid = 139
diff --git a/sys/linux/sys_arm64.const b/sys/linux/sys_arm64.const
index 1ec147f65..49a2f6928 100644
--- a/sys/linux/sys_arm64.const
+++ b/sys/linux/sys_arm64.const
@@ -108,15 +108,6 @@ FIONBIO = 21537
FIONCLEX = 21584
FIOQSIZE = 21600
FITHAW = 3221510264
-FUTEX_CMP_REQUEUE = 4
-FUTEX_CMP_REQUEUE_PI_PRIVATE = 140
-FUTEX_REQUEUE = 3
-FUTEX_WAIT = 0
-FUTEX_WAIT_BITSET = 9
-FUTEX_WAIT_PRIVATE = 128
-FUTEX_WAIT_REQUEUE_PI_PRIVATE = 139
-FUTEX_WAKE = 1
-FUTEX_WAKE_PRIVATE = 129
F_ADD_SEALS = 1033
F_DUPFD = 0
F_DUPFD_CLOEXEC = 1030
@@ -599,10 +590,8 @@ __NR_fstat = 80
__NR_fstatfs = 44
__NR_fsync = 82
__NR_ftruncate = 46
-__NR_futex = 98
# __NR_futimesat is not set
__NR_get_mempolicy = 236
-__NR_get_robust_list = 100
# __NR_get_thread_area is not set
__NR_getcwd = 17
# __NR_getdents is not set
@@ -730,7 +719,6 @@ __NR_sched_yield = 124
__NR_sendfile = 71
# __NR_sendfile64 is not set
__NR_set_mempolicy = 237
-__NR_set_robust_list = 99
# __NR_set_thread_area is not set
__NR_set_tid_address = 96
__NR_setfsgid = 152
diff --git a/sys/linux/sys_mips64le.const b/sys/linux/sys_mips64le.const
index 728aac2ed..e4c37f7f7 100644
--- a/sys/linux/sys_mips64le.const
+++ b/sys/linux/sys_mips64le.const
@@ -108,15 +108,6 @@ FIONBIO = 26238
FIONCLEX = 26114
FIOQSIZE = 26239
FITHAW = 3221510264
-FUTEX_CMP_REQUEUE = 4
-FUTEX_CMP_REQUEUE_PI_PRIVATE = 140
-FUTEX_REQUEUE = 3
-FUTEX_WAIT = 0
-FUTEX_WAIT_BITSET = 9
-FUTEX_WAIT_PRIVATE = 128
-FUTEX_WAIT_REQUEUE_PI_PRIVATE = 139
-FUTEX_WAKE = 1
-FUTEX_WAKE_PRIVATE = 129
F_ADD_SEALS = 1033
F_DUPFD = 0
F_DUPFD_CLOEXEC = 1030
@@ -599,10 +590,8 @@ __NR_fstat = 5005
__NR_fstatfs = 5135
__NR_fsync = 5072
__NR_ftruncate = 5075
-__NR_futex = 5194
__NR_futimesat = 5251
__NR_get_mempolicy = 5228
-__NR_get_robust_list = 5269
# __NR_get_thread_area is not set
__NR_getcwd = 5077
__NR_getdents = 5076
@@ -730,7 +719,6 @@ __NR_sched_yield = 5023
__NR_sendfile = 5039
# __NR_sendfile64 is not set
__NR_set_mempolicy = 5229
-__NR_set_robust_list = 5268
__NR_set_thread_area = 5242
__NR_set_tid_address = 5212
__NR_setfsgid = 5121
diff --git a/sys/linux/sys_ppc64le.const b/sys/linux/sys_ppc64le.const
index c55be9c8b..efddafe61 100644
--- a/sys/linux/sys_ppc64le.const
+++ b/sys/linux/sys_ppc64le.const
@@ -108,15 +108,6 @@ FIONBIO = 2147772030
FIONCLEX = 536897026
FIOQSIZE = 1074292352
FITHAW = 3221510264
-FUTEX_CMP_REQUEUE = 4
-FUTEX_CMP_REQUEUE_PI_PRIVATE = 140
-FUTEX_REQUEUE = 3
-FUTEX_WAIT = 0
-FUTEX_WAIT_BITSET = 9
-FUTEX_WAIT_PRIVATE = 128
-FUTEX_WAIT_REQUEUE_PI_PRIVATE = 139
-FUTEX_WAKE = 1
-FUTEX_WAKE_PRIVATE = 129
F_ADD_SEALS = 1033
F_DUPFD = 0
F_DUPFD_CLOEXEC = 1030
@@ -599,10 +590,8 @@ __NR_fstat = 108
__NR_fstatfs = 100
__NR_fsync = 118
__NR_ftruncate = 93
-__NR_futex = 221
__NR_futimesat = 290
__NR_get_mempolicy = 260
-__NR_get_robust_list = 299
# __NR_get_thread_area is not set
__NR_getcwd = 182
__NR_getdents = 141
@@ -730,7 +719,6 @@ __NR_select = 82
__NR_sendfile = 186
# __NR_sendfile64 is not set
__NR_set_mempolicy = 261
-__NR_set_robust_list = 300
# __NR_set_thread_area is not set
__NR_set_tid_address = 232
__NR_setfsgid = 139