From e0e1ce9888f5483f834e435d53f5c6c42b9b12a1 Mon Sep 17 00:00:00 2001 From: Yuval Pavel Zholkover Date: Sat, 18 Jun 2022 22:02:14 +0300 Subject: [PATCH] runtime: switch FreeBSD to use the non-COMPAT_FREEBSD11 version of the kevent syscall Update #53280 Change-Id: I1c8d4510fbe8bdfe9a41575bde54ea2fbf6b67e9 Reviewed-on: https://go-review.googlesource.com/c/go/+/413174 Reviewed-by: Dmitri Goutnik TryBot-Result: Gopher Robot Reviewed-by: Bryan Mills Reviewed-by: Ian Lance Taylor Run-TryBot: Yuval Pavel Zholkover --- src/runtime/defs_freebsd.go | 12 +++++++----- src/runtime/defs_freebsd_386.go | 8 +++++--- src/runtime/defs_freebsd_amd64.go | 6 ++++-- src/runtime/defs_freebsd_arm.go | 20 ++++++++++++-------- src/runtime/defs_freebsd_arm64.go | 6 ++++-- src/runtime/sys_freebsd_386.s | 2 +- src/runtime/sys_freebsd_amd64.s | 2 +- src/runtime/sys_freebsd_arm.s | 2 +- src/runtime/sys_freebsd_arm64.s | 2 +- 9 files changed, 36 insertions(+), 24 deletions(-) diff --git a/src/runtime/defs_freebsd.go b/src/runtime/defs_freebsd.go index c4204ae0e7..87229fabe8 100644 --- a/src/runtime/defs_freebsd.go +++ b/src/runtime/defs_freebsd.go @@ -16,10 +16,11 @@ package runtime /* #include +#include +#include #include #include #include -#define _WANT_FREEBSD11_KEVENT 1 #include #include #include @@ -45,9 +46,10 @@ const ( ) const ( - EINTR = C.EINTR - EFAULT = C.EFAULT - EAGAIN = C.EAGAIN + EINTR = C.EINTR + EFAULT = C.EFAULT + EAGAIN = C.EAGAIN + ETIMEDOUT = C.ETIMEDOUT O_NONBLOCK = C.O_NONBLOCK O_CLOEXEC = C.O_CLOEXEC @@ -155,7 +157,7 @@ type Itimerval C.struct_itimerval type Umtx_time C.struct__umtx_time -type Kevent C.struct_kevent_freebsd11 +type KeventT C.struct_kevent type bintime C.struct_bintime type vdsoTimehands C.struct_vdso_timehands diff --git a/src/runtime/defs_freebsd_386.go b/src/runtime/defs_freebsd_386.go index 35af133bdd..021caed255 100644 --- a/src/runtime/defs_freebsd_386.go +++ b/src/runtime/defs_freebsd_386.go @@ -1,5 +1,6 @@ -// created by cgo -cdefs and then converted to Go -// cgo -cdefs defs_freebsd.go +// Code generated by cgo, then manually converted into appropriate naming and code +// for the Go runtime. +// go tool cgo -godefs defs_freebsd.go package runtime @@ -229,8 +230,9 @@ type keventt struct { filter int16 flags uint16 fflags uint32 - data int32 + data int64 udata *byte + ext [4]uint64 } type bintime struct { diff --git a/src/runtime/defs_freebsd_amd64.go b/src/runtime/defs_freebsd_amd64.go index 791c4d1d03..d747769696 100644 --- a/src/runtime/defs_freebsd_amd64.go +++ b/src/runtime/defs_freebsd_amd64.go @@ -1,5 +1,6 @@ -// created by cgo -cdefs and then converted to Go -// cgo -cdefs defs_freebsd.go +// Code generated by cgo, then manually converted into appropriate naming and code +// for the Go runtime. +// go tool cgo -godefs defs_freebsd.go package runtime @@ -242,6 +243,7 @@ type keventt struct { fflags uint32 data int64 udata *byte + ext [4]uint64 } type bintime struct { diff --git a/src/runtime/defs_freebsd_arm.go b/src/runtime/defs_freebsd_arm.go index 9ab49c276a..05cfc818dd 100644 --- a/src/runtime/defs_freebsd_arm.go +++ b/src/runtime/defs_freebsd_arm.go @@ -1,5 +1,6 @@ -// created by cgo -cdefs and then converted to Go -// cgo -cdefs defs_freebsd.go +// Code generated by cgo, then manually converted into appropriate naming and code +// for the Go runtime. +// go tool cgo -godefs defs_freebsd.go package runtime @@ -198,12 +199,15 @@ type umtx_time struct { } type keventt struct { - ident uint32 - filter int16 - flags uint16 - fflags uint32 - data int32 - udata *byte + ident uint32 + filter int16 + flags uint16 + fflags uint32 + pad_cgo_0 [4]byte + data int64 + udata *byte + pad_cgo_1 [4]byte + ext [4]uint64 } type bintime struct { diff --git a/src/runtime/defs_freebsd_arm64.go b/src/runtime/defs_freebsd_arm64.go index 9d8e243074..4b2792cebc 100644 --- a/src/runtime/defs_freebsd_arm64.go +++ b/src/runtime/defs_freebsd_arm64.go @@ -1,5 +1,6 @@ -// created by cgo -cdefs and then converted to Go -// cgo -cdefs defs_freebsd.go +// Code generated by cgo, then manually converted into appropriate naming and code +// for the Go runtime. +// go tool cgo -godefs defs_freebsd.go package runtime @@ -226,6 +227,7 @@ type keventt struct { fflags uint32 data int64 udata *byte + ext [4]uint64 } type bintime struct { diff --git a/src/runtime/sys_freebsd_386.s b/src/runtime/sys_freebsd_386.s index e10c89665c..f919c5a000 100644 --- a/src/runtime/sys_freebsd_386.s +++ b/src/runtime/sys_freebsd_386.s @@ -34,7 +34,6 @@ #define SYS_sched_yield 331 #define SYS_sigprocmask 340 #define SYS_kqueue 362 -#define SYS_kevent 363 #define SYS_sigaction 416 #define SYS_sigreturn 417 #define SYS_thr_exit 431 @@ -45,6 +44,7 @@ #define SYS_mmap 477 #define SYS_cpuset_getaffinity 487 #define SYS_pipe2 542 +#define SYS_kevent 560 TEXT runtime·sys_umtx_op(SB),NOSPLIT,$-4 MOVL $SYS__umtx_op, AX diff --git a/src/runtime/sys_freebsd_amd64.s b/src/runtime/sys_freebsd_amd64.s index ab6e09a81b..35311398da 100644 --- a/src/runtime/sys_freebsd_amd64.s +++ b/src/runtime/sys_freebsd_amd64.s @@ -36,7 +36,6 @@ #define SYS_sched_yield 331 #define SYS_sigprocmask 340 #define SYS_kqueue 362 -#define SYS_kevent 363 #define SYS_sigaction 416 #define SYS_thr_exit 431 #define SYS_thr_self 432 @@ -46,6 +45,7 @@ #define SYS_mmap 477 #define SYS_cpuset_getaffinity 487 #define SYS_pipe2 542 +#define SYS_kevent 560 TEXT runtime·sys_umtx_op(SB),NOSPLIT,$0 MOVQ addr+0(FP), DI diff --git a/src/runtime/sys_freebsd_arm.s b/src/runtime/sys_freebsd_arm.s index cbee34d13b..89a8d2bfac 100644 --- a/src/runtime/sys_freebsd_arm.s +++ b/src/runtime/sys_freebsd_arm.s @@ -31,7 +31,6 @@ #define SYS_sched_yield (SYS_BASE + 331) #define SYS_sigprocmask (SYS_BASE + 340) #define SYS_kqueue (SYS_BASE + 362) -#define SYS_kevent (SYS_BASE + 363) #define SYS_sigaction (SYS_BASE + 416) #define SYS_thr_exit (SYS_BASE + 431) #define SYS_thr_self (SYS_BASE + 432) @@ -41,6 +40,7 @@ #define SYS_mmap (SYS_BASE + 477) #define SYS_cpuset_getaffinity (SYS_BASE + 487) #define SYS_pipe2 (SYS_BASE + 542) +#define SYS_kevent (SYS_BASE + 560) TEXT runtime·sys_umtx_op(SB),NOSPLIT,$0 MOVW addr+0(FP), R0 diff --git a/src/runtime/sys_freebsd_arm64.s b/src/runtime/sys_freebsd_arm64.s index cb960773eb..4f24da62ef 100644 --- a/src/runtime/sys_freebsd_arm64.s +++ b/src/runtime/sys_freebsd_arm64.s @@ -38,7 +38,6 @@ #define SYS_sched_yield 331 #define SYS_sigprocmask 340 #define SYS_kqueue 362 -#define SYS_kevent 363 #define SYS_sigaction 416 #define SYS_thr_exit 431 #define SYS_thr_self 432 @@ -48,6 +47,7 @@ #define SYS_mmap 477 #define SYS_cpuset_getaffinity 487 #define SYS_pipe2 542 +#define SYS_kevent 560 TEXT emptyfunc<>(SB),0,$0-0 RET