package runtime
 
+import "internal/goarch"
+
 const (
        _EINTR  = 0x4
        _EAGAIN = 0xb
        si_code  int32
        // below here is a union; si_addr is the only field we use
        si_addr uint32
+
+       // Pad struct to the max size in the kernel. Account for the 3 32-bit
+       // fields, the alignment to this architecture's pointer size, and the final
+       // pointer-length field.
+       _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte
 }
 
 type stackt struct {
        notify int32
        // below here is a union; sigev_notify_thread_id is the only field we use
        sigev_notify_thread_id int32
+
+       // Pad struct to the max size in the kernel. Account for the pointer-length
+       // field and the 3 32-bit fields.
+       _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte
 }
 
 type epollevent struct {
 
 
 package runtime
 
+import "internal/goarch"
+
 const (
        _EINTR  = 0x4
        _EAGAIN = 0xb
        si_code  int32
        // below here is a union; si_addr is the only field we use
        si_addr uint64
+
+       // Pad struct to the max size in the kernel. Account for the 3 32-bit
+       // fields, the alignment to this architecture's pointer size, and the final
+       // pointer-length field.
+       _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte
 }
 
 type itimerspec struct {
        notify int32
        // below here is a union; sigev_notify_thread_id is the only field we use
        sigev_notify_thread_id int32
+
+       // Pad struct to the max size in the kernel. Account for the pointer-length
+       // field and the 3 32-bit fields.
+       _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte
 }
 
 type epollevent struct {
 
 
 package runtime
 
+import "internal/goarch"
+
 // Constants
 const (
        _EINTR  = 0x4
        notify int32
        // below here is a union; sigev_notify_thread_id is the only field we use
        sigev_notify_thread_id int32
+
+       // Pad struct to the max size in the kernel. Account for the pointer-length
+       // field and the 3 32-bit fields.
+       _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte
 }
 
 type siginfo struct {
        si_code  int32
        // below here is a union; si_addr is the only field we use
        si_addr uint32
+
+       // Pad struct to the max size in the kernel. Account for the 3 32-bit
+       // fields, the alignment to this architecture's pointer size, and the final
+       // pointer-length field.
+       _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte
 }
 
 type sigactiont struct {
 
 
 package runtime
 
+import "internal/goarch"
+
 const (
        _EINTR  = 0x4
        _EAGAIN = 0xb
        si_code  int32
        // below here is a union; si_addr is the only field we use
        si_addr uint64
+
+       // Pad struct to the max size in the kernel. Account for the 3 32-bit
+       // fields, the alignment to this architecture's pointer size, and the final
+       // pointer-length field.
+       _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte
 }
 
 type itimerspec struct {
        notify int32
        // below here is a union; sigev_notify_thread_id is the only field we use
        sigev_notify_thread_id int32
+
+       // Pad struct to the max size in the kernel. Account for the pointer-length
+       // field and the 3 32-bit fields.
+       _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte
 }
 
 type epollevent struct {
 
 
 package runtime
 
+import "internal/goarch"
+
 const (
        _EINTR  = 0x4
        _EAGAIN = 0xb
        __pad0   [1]int32
        // below here is a union; si_addr is the only field we use
        si_addr uint64
+
+       // Pad struct to the max size in the kernel. Account for the 3 32-bit
+       // fields, the alignment to this architecture's pointer size, and the final
+       // pointer-length field.
+       _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte
 }
 
 type itimerspec struct {
        notify int32
        // below here is a union; sigev_notify_thread_id is the only field we use
        sigev_notify_thread_id int32
+
+       // Pad struct to the max size in the kernel. Account for the pointer-length
+       // field and the 3 32-bit fields.
+       _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte
 }
 
 type epollevent struct {
 
 
 package runtime
 
+import "internal/goarch"
+
 const (
        _EINTR  = 0x4
        _EAGAIN = 0xb
        si_errno int32
        // below here is a union; si_addr is the only field we use
        si_addr uint32
+
+       // Pad struct to the max size in the kernel. Account for the 3 32-bit
+       // fields, the alignment to this architecture's pointer size, and the final
+       // pointer-length field.
+       _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte
 }
 
 type itimerspec struct {
        notify int32
        // below here is a union; sigev_notify_thread_id is the only field we use
        sigev_notify_thread_id int32
+
+       // Pad struct to the max size in the kernel. Account for the pointer-length
+       // field and the 3 32-bit fields.
+       _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte
 }
 
 type epollevent struct {
 
 
 package runtime
 
+import "internal/goarch"
+
 const (
        _EINTR  = 0x4
        _EAGAIN = 0xb
        si_code  int32
        // below here is a union; si_addr is the only field we use
        si_addr uint64
+
+       // Pad struct to the max size in the kernel. Account for the 3 32-bit
+       // fields, the alignment to this architecture's pointer size, and the final
+       // pointer-length field.
+       _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte
 }
 
 type itimerspec struct {
        notify int32
        // below here is a union; sigev_notify_thread_id is the only field we use
        sigev_notify_thread_id int32
+
+       // Pad struct to the max size in the kernel. Account for the pointer-length
+       // field and the 3 32-bit fields.
+       _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte
 }
 
 type epollevent struct {
 
 
 package runtime
 
+import "internal/goarch"
+
 const (
        _EINTR  = 0x4
        _EAGAIN = 0xb
        si_code  int32
        // below here is a union; si_addr is the only field we use
        si_addr uint64
+
+       // Pad struct to the max size in the kernel. Account for the 3 32-bit
+       // fields, the alignment to this architecture's pointer size, and the final
+       // pointer-length field.
+       _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte
 }
 
 type itimerspec struct {
        notify int32
        // below here is a union; sigev_notify_thread_id is the only field we use
        sigev_notify_thread_id int32
+
+       // Pad struct to the max size in the kernel. Account for the pointer-length
+       // field and the 3 32-bit fields.
+       _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte
 }
 
 type epollevent struct {
 
 
 package runtime
 
+import "internal/goarch"
+
 const (
        _EINTR  = 0x4
        _EAGAIN = 0xb
        si_code  int32
        // below here is a union; si_addr is the only field we use
        si_addr uint64
+
+       // Pad struct to the max size in the kernel. Account for the 3 32-bit
+       // fields, the alignment to this architecture's pointer size, and the final
+       // pointer-length field.
+       _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte
 }
 
 type itimerspec struct {
        notify int32
        // below here is a union; sigev_notify_thread_id is the only field we use
        sigev_notify_thread_id int32
+
+       // Pad struct to the max size in the kernel. Account for the pointer-length
+       // field and the 3 32-bit fields.
+       _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte
 }
 
 type epollevent struct {
 
 
 package runtime
 
+import "internal/goarch"
+
 const (
        _EINTR  = 0x4
        _EAGAIN = 0xb
        si_code  int32
        // below here is a union; si_addr is the only field we use
        si_addr uint64
+
+       // Pad struct to the max size in the kernel. Account for the 3 32-bit
+       // fields, the alignment to this architecture's pointer size, and the final
+       // pointer-length field.
+       _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte
 }
 
 type itimerspec struct {
        notify int32
        // below here is a union; sigev_notify_thread_id is the only field we use
        sigev_notify_thread_id int32
+
+       // Pad struct to the max size in the kernel. Account for the pointer-length
+       // field and the 3 32-bit fields.
+       _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte
 }
 
 type epollevent struct {
 
 func pipe2(flags int32) (r, w int32, errno int32)
 func setNonblock(fd int32)
 
+const (
+       _si_max_size    = 128
+       _sigev_max_size = 64
+)
+
+// Assert that the Go definitions of structures exchanged with the kernel are
+// the same size as what the kernel defines.
+var (
+       _ [_si_max_size]struct{}    = [unsafe.Sizeof(siginfo{})]struct{}{}
+       _ [_sigev_max_size]struct{} = [unsafe.Sizeof(sigevent{})]struct{}{}
+)
+
 //go:nosplit
 //go:nowritebarrierrec
 func setsig(i uint32, fn uintptr) {