unix: add Signalfd on linux

Also add the SFD_* constants and SignalfdSiginfo type.

Change-Id: I3415c212b85c9d5a940ba2bf70f43739a2630d78
Reviewed-on: https://go-review.googlesource.com/c/157897
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/unix/linux/types.go b/unix/linux/types.go
index 8cac3e6..fecd2ce 100644
--- a/unix/linux/types.go
+++ b/unix/linux/types.go
@@ -36,6 +36,7 @@
 #include <sys/resource.h>
 #include <sys/select.h>
 #include <sys/signal.h>
+#include <sys/signalfd.h>
 #include <sys/statfs.h>
 #include <sys/statvfs.h>
 #include <sys/sysinfo.h>
@@ -748,6 +749,8 @@
 
 type Sigset_t C.sigset_t
 
+type SignalfdSiginfo C.struct_signalfd_siginfo
+
 const RNDGETENTCNT = C.RNDGETENTCNT
 
 const PERF_IOC_FLAG_GROUP = C.PERF_IOC_FLAG_GROUP
diff --git a/unix/mkerrors.sh b/unix/mkerrors.sh
index 28cc7ba..c652b1c 100755
--- a/unix/mkerrors.sh
+++ b/unix/mkerrors.sh
@@ -179,6 +179,7 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <sys/time.h>
+#include <sys/signalfd.h>
 #include <sys/socket.h>
 #include <sys/xattr.h>
 #include <linux/if.h>
@@ -453,7 +454,7 @@
 		$2 !~ "MNT_BITS" &&
 		$2 ~ /^(MS|MNT|UMOUNT)_/ ||
 		$2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||
-		$2 ~ /^(O|F|E?FD|NAME|S|PTRACE|PT)_/ ||
+		$2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT)_/ ||
 		$2 ~ /^KEXEC_/ ||
 		$2 ~ /^LINUX_REBOOT_CMD_/ ||
 		$2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||
diff --git a/unix/syscall_linux.go b/unix/syscall_linux.go
index e371445..761062b 100644
--- a/unix/syscall_linux.go
+++ b/unix/syscall_linux.go
@@ -1467,6 +1467,7 @@
 
 //sys	Setpriority(which int, who int, prio int) (err error)
 //sys	Setxattr(path string, attr string, data []byte, flags int) (err error)
+//sys	Signalfd(fd int, mask *Sigset_t, flags int) = SYS_SIGNALFD4
 //sys	Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)
 //sys	Sync()
 //sys	Syncfs(fd int) (err error)
@@ -1683,7 +1684,6 @@
 // Shmdt
 // Shmget
 // Sigaltstack
-// Signalfd
 // Swapoff
 // Swapon
 // Sysfs
diff --git a/unix/zerrors_linux_386.go b/unix/zerrors_linux_386.go
index 466f8cf..7008975 100644
--- a/unix/zerrors_linux_386.go
+++ b/unix/zerrors_linux_386.go
@@ -1744,6 +1744,8 @@
 	SECCOMP_MODE_STRICT                  = 0x1
 	SECURITYFS_MAGIC                     = 0x73636673
 	SELINUX_MAGIC                        = 0xf97cff8c
+	SFD_CLOEXEC                          = 0x80000
+	SFD_NONBLOCK                         = 0x800
 	SHUT_RD                              = 0x0
 	SHUT_RDWR                            = 0x2
 	SHUT_WR                              = 0x1
diff --git a/unix/zerrors_linux_amd64.go b/unix/zerrors_linux_amd64.go
index 573b87a..3e8a67b 100644
--- a/unix/zerrors_linux_amd64.go
+++ b/unix/zerrors_linux_amd64.go
@@ -1745,6 +1745,8 @@
 	SECCOMP_MODE_STRICT                  = 0x1
 	SECURITYFS_MAGIC                     = 0x73636673
 	SELINUX_MAGIC                        = 0xf97cff8c
+	SFD_CLOEXEC                          = 0x80000
+	SFD_NONBLOCK                         = 0x800
 	SHUT_RD                              = 0x0
 	SHUT_RDWR                            = 0x2
 	SHUT_WR                              = 0x1
diff --git a/unix/zerrors_linux_arm.go b/unix/zerrors_linux_arm.go
index 746d0ee..70e97df 100644
--- a/unix/zerrors_linux_arm.go
+++ b/unix/zerrors_linux_arm.go
@@ -1751,6 +1751,8 @@
 	SECCOMP_MODE_STRICT                  = 0x1
 	SECURITYFS_MAGIC                     = 0x73636673
 	SELINUX_MAGIC                        = 0xf97cff8c
+	SFD_CLOEXEC                          = 0x80000
+	SFD_NONBLOCK                         = 0x800
 	SHUT_RD                              = 0x0
 	SHUT_RDWR                            = 0x2
 	SHUT_WR                              = 0x1
diff --git a/unix/zerrors_linux_arm64.go b/unix/zerrors_linux_arm64.go
index 681b609..b7a15ff 100644
--- a/unix/zerrors_linux_arm64.go
+++ b/unix/zerrors_linux_arm64.go
@@ -1735,6 +1735,8 @@
 	SECCOMP_MODE_STRICT                  = 0x1
 	SECURITYFS_MAGIC                     = 0x73636673
 	SELINUX_MAGIC                        = 0xf97cff8c
+	SFD_CLOEXEC                          = 0x80000
+	SFD_NONBLOCK                         = 0x800
 	SHUT_RD                              = 0x0
 	SHUT_RDWR                            = 0x2
 	SHUT_WR                              = 0x1
diff --git a/unix/zerrors_linux_mips.go b/unix/zerrors_linux_mips.go
index 5494c23..fe4cd19 100644
--- a/unix/zerrors_linux_mips.go
+++ b/unix/zerrors_linux_mips.go
@@ -1744,6 +1744,8 @@
 	SECCOMP_MODE_STRICT                  = 0x1
 	SECURITYFS_MAGIC                     = 0x73636673
 	SELINUX_MAGIC                        = 0xf97cff8c
+	SFD_CLOEXEC                          = 0x80000
+	SFD_NONBLOCK                         = 0x80
 	SHUT_RD                              = 0x0
 	SHUT_RDWR                            = 0x2
 	SHUT_WR                              = 0x1
diff --git a/unix/zerrors_linux_mips64.go b/unix/zerrors_linux_mips64.go
index 8874cf5..07914ea 100644
--- a/unix/zerrors_linux_mips64.go
+++ b/unix/zerrors_linux_mips64.go
@@ -1744,6 +1744,8 @@
 	SECCOMP_MODE_STRICT                  = 0x1
 	SECURITYFS_MAGIC                     = 0x73636673
 	SELINUX_MAGIC                        = 0xf97cff8c
+	SFD_CLOEXEC                          = 0x80000
+	SFD_NONBLOCK                         = 0x80
 	SHUT_RD                              = 0x0
 	SHUT_RDWR                            = 0x2
 	SHUT_WR                              = 0x1
diff --git a/unix/zerrors_linux_mips64le.go b/unix/zerrors_linux_mips64le.go
index a1305a6..235c564 100644
--- a/unix/zerrors_linux_mips64le.go
+++ b/unix/zerrors_linux_mips64le.go
@@ -1744,6 +1744,8 @@
 	SECCOMP_MODE_STRICT                  = 0x1
 	SECURITYFS_MAGIC                     = 0x73636673
 	SELINUX_MAGIC                        = 0xf97cff8c
+	SFD_CLOEXEC                          = 0x80000
+	SFD_NONBLOCK                         = 0x80
 	SHUT_RD                              = 0x0
 	SHUT_RDWR                            = 0x2
 	SHUT_WR                              = 0x1
diff --git a/unix/zerrors_linux_mipsle.go b/unix/zerrors_linux_mipsle.go
index a4ccc19..cd3164f 100644
--- a/unix/zerrors_linux_mipsle.go
+++ b/unix/zerrors_linux_mipsle.go
@@ -1744,6 +1744,8 @@
 	SECCOMP_MODE_STRICT                  = 0x1
 	SECURITYFS_MAGIC                     = 0x73636673
 	SELINUX_MAGIC                        = 0xf97cff8c
+	SFD_CLOEXEC                          = 0x80000
+	SFD_NONBLOCK                         = 0x80
 	SHUT_RD                              = 0x0
 	SHUT_RDWR                            = 0x2
 	SHUT_WR                              = 0x1
diff --git a/unix/zerrors_linux_ppc64.go b/unix/zerrors_linux_ppc64.go
index a957552..9813b22 100644
--- a/unix/zerrors_linux_ppc64.go
+++ b/unix/zerrors_linux_ppc64.go
@@ -1802,6 +1802,8 @@
 	SECCOMP_MODE_STRICT                  = 0x1
 	SECURITYFS_MAGIC                     = 0x73636673
 	SELINUX_MAGIC                        = 0xf97cff8c
+	SFD_CLOEXEC                          = 0x80000
+	SFD_NONBLOCK                         = 0x800
 	SHUT_RD                              = 0x0
 	SHUT_RDWR                            = 0x2
 	SHUT_WR                              = 0x1
diff --git a/unix/zerrors_linux_ppc64le.go b/unix/zerrors_linux_ppc64le.go
index 4d44c9e..b0e1d9d 100644
--- a/unix/zerrors_linux_ppc64le.go
+++ b/unix/zerrors_linux_ppc64le.go
@@ -1802,6 +1802,8 @@
 	SECCOMP_MODE_STRICT                  = 0x1
 	SECURITYFS_MAGIC                     = 0x73636673
 	SELINUX_MAGIC                        = 0xf97cff8c
+	SFD_CLOEXEC                          = 0x80000
+	SFD_NONBLOCK                         = 0x800
 	SHUT_RD                              = 0x0
 	SHUT_RDWR                            = 0x2
 	SHUT_WR                              = 0x1
diff --git a/unix/zerrors_linux_riscv64.go b/unix/zerrors_linux_riscv64.go
index 0369cc1..e247244 100644
--- a/unix/zerrors_linux_riscv64.go
+++ b/unix/zerrors_linux_riscv64.go
@@ -1732,6 +1732,8 @@
 	SECCOMP_MODE_STRICT                  = 0x1
 	SECURITYFS_MAGIC                     = 0x73636673
 	SELINUX_MAGIC                        = 0xf97cff8c
+	SFD_CLOEXEC                          = 0x80000
+	SFD_NONBLOCK                         = 0x800
 	SHUT_RD                              = 0x0
 	SHUT_RDWR                            = 0x2
 	SHUT_WR                              = 0x1
diff --git a/unix/zerrors_linux_s390x.go b/unix/zerrors_linux_s390x.go
index 8b4a06a..710cfa7 100644
--- a/unix/zerrors_linux_s390x.go
+++ b/unix/zerrors_linux_s390x.go
@@ -1805,6 +1805,8 @@
 	SECCOMP_MODE_STRICT                  = 0x1
 	SECURITYFS_MAGIC                     = 0x73636673
 	SELINUX_MAGIC                        = 0xf97cff8c
+	SFD_CLOEXEC                          = 0x80000
+	SFD_NONBLOCK                         = 0x800
 	SHUT_RD                              = 0x0
 	SHUT_RDWR                            = 0x2
 	SHUT_WR                              = 0x1
diff --git a/unix/zerrors_linux_sparc64.go b/unix/zerrors_linux_sparc64.go
index 6d8a25d..70eb41b 100644
--- a/unix/zerrors_linux_sparc64.go
+++ b/unix/zerrors_linux_sparc64.go
@@ -1797,6 +1797,8 @@
 	SECCOMP_MODE_STRICT                  = 0x1
 	SECURITYFS_MAGIC                     = 0x73636673
 	SELINUX_MAGIC                        = 0xf97cff8c
+	SFD_CLOEXEC                          = 0x400000
+	SFD_NONBLOCK                         = 0x4000
 	SHUT_RD                              = 0x0
 	SHUT_RDWR                            = 0x2
 	SHUT_WR                              = 0x1
diff --git a/unix/zsyscall_linux_386.go b/unix/zsyscall_linux_386.go
index 818fdb0..19c608f 100644
--- a/unix/zsyscall_linux_386.go
+++ b/unix/zsyscall_linux_386.go
@@ -1380,6 +1380,13 @@
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Signalfd(fd int, mask *Sigset_t, flags int) {
+	SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags))
+	return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
 	var _p0 *byte
 	_p0, err = BytePtrFromString(path)
diff --git a/unix/zsyscall_linux_amd64.go b/unix/zsyscall_linux_amd64.go
index 486bb2b..dce4e33 100644
--- a/unix/zsyscall_linux_amd64.go
+++ b/unix/zsyscall_linux_amd64.go
@@ -1380,6 +1380,13 @@
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Signalfd(fd int, mask *Sigset_t, flags int) {
+	SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags))
+	return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
 	var _p0 *byte
 	_p0, err = BytePtrFromString(path)
diff --git a/unix/zsyscall_linux_arm.go b/unix/zsyscall_linux_arm.go
index f957388..05ac5b4 100644
--- a/unix/zsyscall_linux_arm.go
+++ b/unix/zsyscall_linux_arm.go
@@ -1380,6 +1380,13 @@
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Signalfd(fd int, mask *Sigset_t, flags int) {
+	SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags))
+	return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
 	var _p0 *byte
 	_p0, err = BytePtrFromString(path)
diff --git a/unix/zsyscall_linux_arm64.go b/unix/zsyscall_linux_arm64.go
index b2294fe..4b57121 100644
--- a/unix/zsyscall_linux_arm64.go
+++ b/unix/zsyscall_linux_arm64.go
@@ -1380,6 +1380,13 @@
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Signalfd(fd int, mask *Sigset_t, flags int) {
+	SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags))
+	return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
 	var _p0 *byte
 	_p0, err = BytePtrFromString(path)
diff --git a/unix/zsyscall_linux_mips.go b/unix/zsyscall_linux_mips.go
index dba87b8..3a933c2 100644
--- a/unix/zsyscall_linux_mips.go
+++ b/unix/zsyscall_linux_mips.go
@@ -1380,6 +1380,13 @@
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Signalfd(fd int, mask *Sigset_t, flags int) {
+	SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags))
+	return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
 	var _p0 *byte
 	_p0, err = BytePtrFromString(path)
diff --git a/unix/zsyscall_linux_mips64.go b/unix/zsyscall_linux_mips64.go
index c4ea405..4f9989c 100644
--- a/unix/zsyscall_linux_mips64.go
+++ b/unix/zsyscall_linux_mips64.go
@@ -1380,6 +1380,13 @@
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Signalfd(fd int, mask *Sigset_t, flags int) {
+	SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags))
+	return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
 	var _p0 *byte
 	_p0, err = BytePtrFromString(path)
diff --git a/unix/zsyscall_linux_mips64le.go b/unix/zsyscall_linux_mips64le.go
index e1be6c8..2cae086 100644
--- a/unix/zsyscall_linux_mips64le.go
+++ b/unix/zsyscall_linux_mips64le.go
@@ -1380,6 +1380,13 @@
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Signalfd(fd int, mask *Sigset_t, flags int) {
+	SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags))
+	return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
 	var _p0 *byte
 	_p0, err = BytePtrFromString(path)
diff --git a/unix/zsyscall_linux_mipsle.go b/unix/zsyscall_linux_mipsle.go
index 8067b94..c28b841 100644
--- a/unix/zsyscall_linux_mipsle.go
+++ b/unix/zsyscall_linux_mipsle.go
@@ -1380,6 +1380,13 @@
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Signalfd(fd int, mask *Sigset_t, flags int) {
+	SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags))
+	return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
 	var _p0 *byte
 	_p0, err = BytePtrFromString(path)
diff --git a/unix/zsyscall_linux_ppc64.go b/unix/zsyscall_linux_ppc64.go
index b118aaa..6f2d9ae 100644
--- a/unix/zsyscall_linux_ppc64.go
+++ b/unix/zsyscall_linux_ppc64.go
@@ -1380,6 +1380,13 @@
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Signalfd(fd int, mask *Sigset_t, flags int) {
+	SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags))
+	return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
 	var _p0 *byte
 	_p0, err = BytePtrFromString(path)
diff --git a/unix/zsyscall_linux_ppc64le.go b/unix/zsyscall_linux_ppc64le.go
index 2c300f9..d5735dc 100644
--- a/unix/zsyscall_linux_ppc64le.go
+++ b/unix/zsyscall_linux_ppc64le.go
@@ -1380,6 +1380,13 @@
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Signalfd(fd int, mask *Sigset_t, flags int) {
+	SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags))
+	return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
 	var _p0 *byte
 	_p0, err = BytePtrFromString(path)
diff --git a/unix/zsyscall_linux_riscv64.go b/unix/zsyscall_linux_riscv64.go
index 9b58c68..a30f7ca 100644
--- a/unix/zsyscall_linux_riscv64.go
+++ b/unix/zsyscall_linux_riscv64.go
@@ -1380,6 +1380,13 @@
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Signalfd(fd int, mask *Sigset_t, flags int) {
+	SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags))
+	return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
 	var _p0 *byte
 	_p0, err = BytePtrFromString(path)
diff --git a/unix/zsyscall_linux_s390x.go b/unix/zsyscall_linux_s390x.go
index b491844..b953b20 100644
--- a/unix/zsyscall_linux_s390x.go
+++ b/unix/zsyscall_linux_s390x.go
@@ -1380,6 +1380,13 @@
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Signalfd(fd int, mask *Sigset_t, flags int) {
+	SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags))
+	return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
 	var _p0 *byte
 	_p0, err = BytePtrFromString(path)
diff --git a/unix/zsyscall_linux_sparc64.go b/unix/zsyscall_linux_sparc64.go
index a9fe23f..d09c7e1 100644
--- a/unix/zsyscall_linux_sparc64.go
+++ b/unix/zsyscall_linux_sparc64.go
@@ -1380,6 +1380,13 @@
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Signalfd(fd int, mask *Sigset_t, flags int) {
+	SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags))
+	return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
 	var _p0 *byte
 	_p0, err = BytePtrFromString(path)
diff --git a/unix/ztypes_linux_386.go b/unix/ztypes_linux_386.go
index ebf10d4..aade41a 100644
--- a/unix/ztypes_linux_386.go
+++ b/unix/ztypes_linux_386.go
@@ -759,6 +759,26 @@
 	Val [32]uint32
 }
 
+type SignalfdSiginfo struct {
+	Signo   uint32
+	Errno   int32
+	Code    int32
+	Pid     uint32
+	Uid     uint32
+	Fd      int32
+	Tid     uint32
+	Band    uint32
+	Overrun uint32
+	Trapno  uint32
+	Status  int32
+	Int     int32
+	Ptr     uint64
+	Utime   uint64
+	Stime   uint64
+	Addr    uint64
+	_       [48]uint8
+}
+
 const RNDGETENTCNT = 0x80045200
 
 const PERF_IOC_FLAG_GROUP = 0x1
diff --git a/unix/ztypes_linux_amd64.go b/unix/ztypes_linux_amd64.go
index 99a6900..80f4ba6 100644
--- a/unix/ztypes_linux_amd64.go
+++ b/unix/ztypes_linux_amd64.go
@@ -772,6 +772,26 @@
 	Val [16]uint64
 }
 
+type SignalfdSiginfo struct {
+	Signo   uint32
+	Errno   int32
+	Code    int32
+	Pid     uint32
+	Uid     uint32
+	Fd      int32
+	Tid     uint32
+	Band    uint32
+	Overrun uint32
+	Trapno  uint32
+	Status  int32
+	Int     int32
+	Ptr     uint64
+	Utime   uint64
+	Stime   uint64
+	Addr    uint64
+	_       [48]uint8
+}
+
 const RNDGETENTCNT = 0x80045200
 
 const PERF_IOC_FLAG_GROUP = 0x1
diff --git a/unix/ztypes_linux_arm.go b/unix/ztypes_linux_arm.go
index 5ccc4b5..19dd4c9 100644
--- a/unix/ztypes_linux_arm.go
+++ b/unix/ztypes_linux_arm.go
@@ -748,6 +748,26 @@
 	Val [32]uint32
 }
 
+type SignalfdSiginfo struct {
+	Signo   uint32
+	Errno   int32
+	Code    int32
+	Pid     uint32
+	Uid     uint32
+	Fd      int32
+	Tid     uint32
+	Band    uint32
+	Overrun uint32
+	Trapno  uint32
+	Status  int32
+	Int     int32
+	Ptr     uint64
+	Utime   uint64
+	Stime   uint64
+	Addr    uint64
+	_       [48]uint8
+}
+
 const RNDGETENTCNT = 0x80045200
 
 const PERF_IOC_FLAG_GROUP = 0x1
diff --git a/unix/ztypes_linux_arm64.go b/unix/ztypes_linux_arm64.go
index be375d9..f64914a 100644
--- a/unix/ztypes_linux_arm64.go
+++ b/unix/ztypes_linux_arm64.go
@@ -751,6 +751,26 @@
 	Val [16]uint64
 }
 
+type SignalfdSiginfo struct {
+	Signo   uint32
+	Errno   int32
+	Code    int32
+	Pid     uint32
+	Uid     uint32
+	Fd      int32
+	Tid     uint32
+	Band    uint32
+	Overrun uint32
+	Trapno  uint32
+	Status  int32
+	Int     int32
+	Ptr     uint64
+	Utime   uint64
+	Stime   uint64
+	Addr    uint64
+	_       [48]uint8
+}
+
 const RNDGETENTCNT = 0x80045200
 
 const PERF_IOC_FLAG_GROUP = 0x1
diff --git a/unix/ztypes_linux_mips.go b/unix/ztypes_linux_mips.go
index 195f7e1..20a5922 100644
--- a/unix/ztypes_linux_mips.go
+++ b/unix/ztypes_linux_mips.go
@@ -753,6 +753,26 @@
 	Val [32]uint32
 }
 
+type SignalfdSiginfo struct {
+	Signo   uint32
+	Errno   int32
+	Code    int32
+	Pid     uint32
+	Uid     uint32
+	Fd      int32
+	Tid     uint32
+	Band    uint32
+	Overrun uint32
+	Trapno  uint32
+	Status  int32
+	Int     int32
+	Ptr     uint64
+	Utime   uint64
+	Stime   uint64
+	Addr    uint64
+	_       [48]uint8
+}
+
 const RNDGETENTCNT = 0x40045200
 
 const PERF_IOC_FLAG_GROUP = 0x1
diff --git a/unix/ztypes_linux_mips64.go b/unix/ztypes_linux_mips64.go
index 77acf56..784b7b1 100644
--- a/unix/ztypes_linux_mips64.go
+++ b/unix/ztypes_linux_mips64.go
@@ -753,6 +753,26 @@
 	Val [16]uint64
 }
 
+type SignalfdSiginfo struct {
+	Signo   uint32
+	Errno   int32
+	Code    int32
+	Pid     uint32
+	Uid     uint32
+	Fd      int32
+	Tid     uint32
+	Band    uint32
+	Overrun uint32
+	Trapno  uint32
+	Status  int32
+	Int     int32
+	Ptr     uint64
+	Utime   uint64
+	Stime   uint64
+	Addr    uint64
+	_       [48]uint8
+}
+
 const RNDGETENTCNT = 0x40045200
 
 const PERF_IOC_FLAG_GROUP = 0x1
diff --git a/unix/ztypes_linux_mips64le.go b/unix/ztypes_linux_mips64le.go
index 2fb7498..fdbad38 100644
--- a/unix/ztypes_linux_mips64le.go
+++ b/unix/ztypes_linux_mips64le.go
@@ -753,6 +753,26 @@
 	Val [16]uint64
 }
 
+type SignalfdSiginfo struct {
+	Signo   uint32
+	Errno   int32
+	Code    int32
+	Pid     uint32
+	Uid     uint32
+	Fd      int32
+	Tid     uint32
+	Band    uint32
+	Overrun uint32
+	Trapno  uint32
+	Status  int32
+	Int     int32
+	Ptr     uint64
+	Utime   uint64
+	Stime   uint64
+	Addr    uint64
+	_       [48]uint8
+}
+
 const RNDGETENTCNT = 0x40045200
 
 const PERF_IOC_FLAG_GROUP = 0x1
diff --git a/unix/ztypes_linux_mipsle.go b/unix/ztypes_linux_mipsle.go
index 41cb148..639520b 100644
--- a/unix/ztypes_linux_mipsle.go
+++ b/unix/ztypes_linux_mipsle.go
@@ -753,6 +753,26 @@
 	Val [32]uint32
 }
 
+type SignalfdSiginfo struct {
+	Signo   uint32
+	Errno   int32
+	Code    int32
+	Pid     uint32
+	Uid     uint32
+	Fd      int32
+	Tid     uint32
+	Band    uint32
+	Overrun uint32
+	Trapno  uint32
+	Status  int32
+	Int     int32
+	Ptr     uint64
+	Utime   uint64
+	Stime   uint64
+	Addr    uint64
+	_       [48]uint8
+}
+
 const RNDGETENTCNT = 0x40045200
 
 const PERF_IOC_FLAG_GROUP = 0x1
diff --git a/unix/ztypes_linux_ppc64.go b/unix/ztypes_linux_ppc64.go
index 8e6b5fa..19fdbf9 100644
--- a/unix/ztypes_linux_ppc64.go
+++ b/unix/ztypes_linux_ppc64.go
@@ -761,6 +761,26 @@
 	Val [16]uint64
 }
 
+type SignalfdSiginfo struct {
+	Signo   uint32
+	Errno   int32
+	Code    int32
+	Pid     uint32
+	Uid     uint32
+	Fd      int32
+	Tid     uint32
+	Band    uint32
+	Overrun uint32
+	Trapno  uint32
+	Status  int32
+	Int     int32
+	Ptr     uint64
+	Utime   uint64
+	Stime   uint64
+	Addr    uint64
+	_       [48]uint8
+}
+
 const RNDGETENTCNT = 0x40045200
 
 const PERF_IOC_FLAG_GROUP = 0x1
diff --git a/unix/ztypes_linux_ppc64le.go b/unix/ztypes_linux_ppc64le.go
index 019d2d6..c54d35c 100644
--- a/unix/ztypes_linux_ppc64le.go
+++ b/unix/ztypes_linux_ppc64le.go
@@ -761,6 +761,26 @@
 	Val [16]uint64
 }
 
+type SignalfdSiginfo struct {
+	Signo   uint32
+	Errno   int32
+	Code    int32
+	Pid     uint32
+	Uid     uint32
+	Fd      int32
+	Tid     uint32
+	Band    uint32
+	Overrun uint32
+	Trapno  uint32
+	Status  int32
+	Int     int32
+	Ptr     uint64
+	Utime   uint64
+	Stime   uint64
+	Addr    uint64
+	_       [48]uint8
+}
+
 const RNDGETENTCNT = 0x40045200
 
 const PERF_IOC_FLAG_GROUP = 0x1
diff --git a/unix/ztypes_linux_riscv64.go b/unix/ztypes_linux_riscv64.go
index cf110ce..6009e5d 100644
--- a/unix/ztypes_linux_riscv64.go
+++ b/unix/ztypes_linux_riscv64.go
@@ -778,6 +778,26 @@
 	Val [16]uint64
 }
 
+type SignalfdSiginfo struct {
+	Signo   uint32
+	Errno   int32
+	Code    int32
+	Pid     uint32
+	Uid     uint32
+	Fd      int32
+	Tid     uint32
+	Band    uint32
+	Overrun uint32
+	Trapno  uint32
+	Status  int32
+	Int     int32
+	Ptr     uint64
+	Utime   uint64
+	Stime   uint64
+	Addr    uint64
+	_       [48]uint8
+}
+
 const RNDGETENTCNT = 0x80045200
 
 const PERF_IOC_FLAG_GROUP = 0x1
diff --git a/unix/ztypes_linux_s390x.go b/unix/ztypes_linux_s390x.go
index abdc086..2ef0d13 100644
--- a/unix/ztypes_linux_s390x.go
+++ b/unix/ztypes_linux_s390x.go
@@ -774,6 +774,26 @@
 	Val [16]uint64
 }
 
+type SignalfdSiginfo struct {
+	Signo   uint32
+	Errno   int32
+	Code    int32
+	Pid     uint32
+	Uid     uint32
+	Fd      int32
+	Tid     uint32
+	Band    uint32
+	Overrun uint32
+	Trapno  uint32
+	Status  int32
+	Int     int32
+	Ptr     uint64
+	Utime   uint64
+	Stime   uint64
+	Addr    uint64
+	_       [48]uint8
+}
+
 const RNDGETENTCNT = 0x80045200
 
 const PERF_IOC_FLAG_GROUP = 0x1
diff --git a/unix/ztypes_linux_sparc64.go b/unix/ztypes_linux_sparc64.go
index b0c9798..2c250a0 100644
--- a/unix/ztypes_linux_sparc64.go
+++ b/unix/ztypes_linux_sparc64.go
@@ -756,6 +756,26 @@
 	Val [16]uint64
 }
 
+type SignalfdSiginfo struct {
+	Signo   uint32
+	Errno   int32
+	Code    int32
+	Pid     uint32
+	Uid     uint32
+	Fd      int32
+	Tid     uint32
+	Band    uint32
+	Overrun uint32
+	Trapno  uint32
+	Status  int32
+	Int     int32
+	Ptr     uint64
+	Utime   uint64
+	Stime   uint64
+	Addr    uint64
+	_       [48]uint8
+}
+
 const RNDGETENTCNT = 0x40045200
 
 const PERF_IOC_FLAG_GROUP = 0x1