]> Cypherpunks.ru repositories - gostls13.git/commitdiff
syscall: call getfsstat via libc on openbsd
authorJoel Sing <joel@sing.id.au>
Wed, 1 Nov 2023 12:43:15 +0000 (23:43 +1100)
committerJoel Sing <joel@sing.id.au>
Thu, 2 Nov 2023 10:34:00 +0000 (10:34 +0000)
On openbsd, call getfsstat directly via libc, instead of calling it
via syscall.Syscall.

Updates #63900

Change-Id: Ib4c581160b170e6cc6017c42e959e647d97ac993
Reviewed-on: https://go-review.googlesource.com/c/go/+/538736
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Josh Rickmar <jrick@zettaport.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Run-TryBot: Joel Sing <joel@sing.id.au>

13 files changed:
src/syscall/syscall_openbsd.go
src/syscall/zsyscall_openbsd_386.go
src/syscall/zsyscall_openbsd_386.s
src/syscall/zsyscall_openbsd_amd64.go
src/syscall/zsyscall_openbsd_amd64.s
src/syscall/zsyscall_openbsd_arm.go
src/syscall/zsyscall_openbsd_arm.s
src/syscall/zsyscall_openbsd_arm64.go
src/syscall/zsyscall_openbsd_arm64.s
src/syscall/zsyscall_openbsd_ppc64.go
src/syscall/zsyscall_openbsd_ppc64.s
src/syscall/zsyscall_openbsd_riscv64.go
src/syscall/zsyscall_openbsd_riscv64.s

index 44bb1121ac0a2dd36f2a261014777866fc27a8a4..80a3854ea831561153b8e3d62b06386afc10bfde 100644 (file)
@@ -116,18 +116,13 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
 }
 
 func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
-       var _p0 unsafe.Pointer
+       var bufptr *Statfs_t
        var bufsize uintptr
        if len(buf) > 0 {
-               _p0 = unsafe.Pointer(&buf[0])
+               bufptr = &buf[0]
                bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
        }
-       r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))
-       n = int(r0)
-       if e1 != 0 {
-               err = e1
-       }
-       return
+       return getfsstat(bufptr, bufsize, flags)
 }
 
 /*
@@ -212,4 +207,5 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
 //sys  writev(fd int, iovecs []Iovec) (n uintptr, err error)
 //sys  mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
 //sys  munmap(addr uintptr, length uintptr) (err error)
+//sys  getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error)
 //sys  utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error)
index 40daa69d8b4f77cfb039325777e45a445a02e95a..987dd4dd4c50c6dc5aa2016d5ec367ef42547537 100644 (file)
@@ -1660,6 +1660,21 @@ func libc_munmap_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {
+       r0, _, e1 := syscall(abi.FuncPCABI0(libc_getfsstat_trampoline), uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func libc_getfsstat_trampoline()
+
+//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {
        var _p0 *byte
        _p0, err = BytePtrFromString(path)
index a77d931e8a768cb12aaadf432a75a45caac02349..1496e129b2bd3564dbbdbdef5db297a163913c48 100644 (file)
@@ -207,6 +207,8 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_mmap(SB)
 TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_munmap(SB)
+TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
+       JMP     libc_getfsstat(SB)
 TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_utimensat(SB)
 TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
index f1ac6b547ab715c2b25aff021361fbc74ea7ab7a..61bd3e15ebac658661dd9b9b8d6bcaab02e6efde 100644 (file)
@@ -1660,6 +1660,21 @@ func libc_munmap_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {
+       r0, _, e1 := syscall(abi.FuncPCABI0(libc_getfsstat_trampoline), uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func libc_getfsstat_trampoline()
+
+//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {
        var _p0 *byte
        _p0, err = BytePtrFromString(path)
index d13e9c0782fb057aed5859d9576a9f674eceb87e..06b7ffb3a5506b4188ca01e20a463effec1af047 100644 (file)
@@ -207,6 +207,8 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_mmap(SB)
 TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_munmap(SB)
+TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
+       JMP     libc_getfsstat(SB)
 TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_utimensat(SB)
 TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
index 5d6d9d38ec1eedde569f73505834433010ef58ee..2ec5bde85186dbe45db2b0e2a3d2d3e1a6f74058 100644 (file)
@@ -1660,6 +1660,21 @@ func libc_munmap_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {
+       r0, _, e1 := syscall(abi.FuncPCABI0(libc_getfsstat_trampoline), uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func libc_getfsstat_trampoline()
+
+//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {
        var _p0 *byte
        _p0, err = BytePtrFromString(path)
index 34ae794ee1fc3e27ead7b2041a4f3675af38f0b6..0aad09023106dcf0c786176ece0086ce4ea0cf76 100644 (file)
@@ -207,6 +207,8 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_mmap(SB)
 TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_munmap(SB)
+TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
+       JMP     libc_getfsstat(SB)
 TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_utimensat(SB)
 TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
index 9f8815adfd5a4fcae9cc406dcb2fd4831e352f20..f3158d1fd185b2a7aec41040482bad5765438fb5 100644 (file)
@@ -1660,6 +1660,21 @@ func libc_munmap_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {
+       r0, _, e1 := syscall(abi.FuncPCABI0(libc_getfsstat_trampoline), uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func libc_getfsstat_trampoline()
+
+//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {
        var _p0 *byte
        _p0, err = BytePtrFromString(path)
index 20a79e433b25b3c6a46cc9105cefc436c220df35..fdced166628f0d5d7b293a589d2f22e46492f8d7 100644 (file)
@@ -207,6 +207,8 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_mmap(SB)
 TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_munmap(SB)
+TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
+       JMP     libc_getfsstat(SB)
 TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_utimensat(SB)
 TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
index cd99f159d78f908ac406a6e12827c9d7e50eccbe..ba295fc8c2b2f0ef2046bc693d1fa82a03138afa 100644 (file)
@@ -1660,6 +1660,21 @@ func libc_munmap_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {
+       r0, _, e1 := syscall(abi.FuncPCABI0(libc_getfsstat_trampoline), uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func libc_getfsstat_trampoline()
+
+//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {
        var _p0 *byte
        _p0, err = BytePtrFromString(path)
index c74455e8d6438a5d08d93dee5d3b393c3211fd42..7da17ac53184cf9c5907c6dffc787d7abc1694d3 100644 (file)
@@ -310,6 +310,9 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
 TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
        CALL    libc_munmap(SB)
        RET
+TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
+       CALL    libc_getfsstat(SB)
+       RET
 TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
        CALL    libc_utimensat(SB)
        RET
index 67b048a9738860489d1f1524488a0ca3155e06a8..f80b03a5de1374522c8c90bf97324ac7ea30c190 100644 (file)
@@ -1660,6 +1660,21 @@ func libc_munmap_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {
+       r0, _, e1 := syscall(abi.FuncPCABI0(libc_getfsstat_trampoline), uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func libc_getfsstat_trampoline()
+
+//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {
        var _p0 *byte
        _p0, err = BytePtrFromString(path)
index d2ce336e3f3d7f1db42261b6408f7e3b32048fa2..ab6f6fed7fc80c0bc84c127da21d981fcdc4286e 100644 (file)
@@ -207,6 +207,8 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_mmap(SB)
 TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_munmap(SB)
+TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
+       JMP     libc_getfsstat(SB)
 TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_utimensat(SB)
 TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0