]> Cypherpunks.ru repositories - gostls13.git/commitdiff
syscall: add utimensat and use it for UtimesNano on BSD and Solaris
authorTobias Klauser <tklauser@distanz.ch>
Fri, 11 Aug 2017 14:49:01 +0000 (16:49 +0200)
committerIan Lance Taylor <iant@golang.org>
Mon, 14 Aug 2017 04:14:41 +0000 (04:14 +0000)
All the BSDs and Solaris support the utimensat syscall, but Darwin
doesn't. Account for that by adding the //sys lines not to
syscall_bsd.go but the individual OS's syscall_*.go files and implement
utimensat on Darwin as just returning ENOSYS, such that UtimesNano will
fall back to use utimes as it currently does unconditionally.

This also adds the previously missing utimensat syscall number for
FreeBSD and Dragonfly.

Fixes #16480

Change-Id: I367454c6168eb1f7150b988fa16cf02abff42f34
Reviewed-on: https://go-review.googlesource.com/55130
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>

43 files changed:
src/syscall/syscall_bsd.go
src/syscall/syscall_darwin.go
src/syscall/syscall_dragonfly.go
src/syscall/syscall_freebsd.go
src/syscall/syscall_netbsd.go
src/syscall/syscall_openbsd.go
src/syscall/syscall_solaris.go
src/syscall/types_darwin.go
src/syscall/types_dragonfly.go
src/syscall/types_freebsd.go
src/syscall/types_netbsd.go
src/syscall/types_openbsd.go
src/syscall/types_solaris.go
src/syscall/zsyscall_dragonfly_amd64.go
src/syscall/zsyscall_freebsd_386.go
src/syscall/zsyscall_freebsd_amd64.go
src/syscall/zsyscall_freebsd_arm.go
src/syscall/zsyscall_netbsd_386.go
src/syscall/zsyscall_netbsd_amd64.go
src/syscall/zsyscall_netbsd_arm.go
src/syscall/zsyscall_openbsd_386.go
src/syscall/zsyscall_openbsd_amd64.go
src/syscall/zsyscall_openbsd_arm.go
src/syscall/zsyscall_solaris_amd64.go
src/syscall/zsysnum_dragonfly_amd64.go
src/syscall/zsysnum_freebsd_386.go
src/syscall/zsysnum_freebsd_amd64.go
src/syscall/zsysnum_freebsd_arm.go
src/syscall/ztypes_darwin_386.go
src/syscall/ztypes_darwin_amd64.go
src/syscall/ztypes_darwin_arm.go
src/syscall/ztypes_darwin_arm64.go
src/syscall/ztypes_dragonfly_amd64.go
src/syscall/ztypes_freebsd_386.go
src/syscall/ztypes_freebsd_amd64.go
src/syscall/ztypes_freebsd_arm.go
src/syscall/ztypes_netbsd_386.go
src/syscall/ztypes_netbsd_amd64.go
src/syscall/ztypes_netbsd_arm.go
src/syscall/ztypes_openbsd_386.go
src/syscall/ztypes_openbsd_amd64.go
src/syscall/ztypes_openbsd_arm.go
src/syscall/ztypes_solaris_amd64.go

index 9370dd487ef358793aa233b399617e48670c0f19..1d0efe37e1355bb0093d7396b350d230533fd043 100644 (file)
@@ -507,11 +507,13 @@ func Utimes(path string, tv []Timeval) (err error) {
 }
 
 func UtimesNano(path string, ts []Timespec) error {
-       // TODO: The BSDs can do utimensat with SYS_UTIMENSAT but it
-       // isn't supported by darwin so this uses utimes instead
        if len(ts) != 2 {
                return EINVAL
        }
+       err := utimensat(_AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])))
+       if err != ENOSYS {
+               return err
+       }
        // Not as efficient as it could be because Timespec and
        // Timeval have different types in the different OSes
        tv := [2]Timeval{
index a1c360d4f48f6ee3c281b625f10c093b028e0697..4d17b157bdb08dccf1a53a960234abbe8641d012 100644 (file)
@@ -186,6 +186,11 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
        return
 }
 
+func utimensat(dirfd int, path string, times *[2]Timespec) error {
+       // Darwin doesn't support SYS_UTIMENSAT
+       return ENOSYS
+}
+
 /*
  * Wrapped
  */
index 7d4fa4dd5c5fb33031e99d687aa9a3b302dfa213..27f1f585bed45363f367e6b590ee514c660cc674 100644 (file)
@@ -211,6 +211,7 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
 //sys  readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
 //sys  writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
 //sys  accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)
+//sys  utimensat(dirfd int, path string, times *[2]Timespec) (err error)
 
 /*
  * Unimplemented
index 64c881ad8e9aca630d292f4081cc163da0287d07..ee90e8739997ae4a46aa3af41c84a6bab8c56b71 100644 (file)
@@ -222,6 +222,7 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
 //sys  readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
 //sys  writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
 //sys  accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)
+//sys  utimensat(dirfd int, path string, times *[2]Timespec) (err error)
 
 /*
  * Unimplemented
index f2e169446f9062f242025b3b5c66272914c63ca1..da80f2b9d663b8c367dc6fea42247913aec1a4f4 100644 (file)
@@ -202,6 +202,7 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
 //sys  munmap(addr uintptr, length uintptr) (err error)
 //sys  readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
 //sys  writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
+//sys  utimensat(dirfd int, path string, times *[2]Timespec) (err error)
 
 /*
  * Unimplemented
index bd25fbf87a13c93a4565548be68b5df02a70c531..f904f37017345514bc74da7f9e2c708f6676d8eb 100644 (file)
@@ -183,6 +183,7 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
 //sys  munmap(addr uintptr, length uintptr) (err error)
 //sys  readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
 //sys  writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
+//sys  utimensat(dirfd int, path string, times *[2]Timespec) (err error)
 
 /*
  * Unimplemented
@@ -278,6 +279,5 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
 // thrsleep
 // thrwakeup
 // unlinkat
-// utimensat
 // vfork
 // writev
index 636de924cc8dbbc1d083004eb6f91c5b1819b6a9..9555bf8bc8b4d60476d966282c9f78ec0b1a1eaa 100644 (file)
@@ -510,6 +510,7 @@ func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error)
 //sys  recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom
 //sys  recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_recvmsg
 //sys  getexecname() (path unsafe.Pointer, err error) = libc.getexecname
+//sys  utimensat(dirfd int, path string, times *[2]Timespec) (err error)
 
 func Getexecname() (path string, err error) {
        ptr, err := getexecname()
index a043071f261aaf3db751904f49242f3b5ed4553a..d8218d6aea168411cad700084de61ea6552b2040 100644 (file)
@@ -238,6 +238,12 @@ type BpfInsn C.struct_bpf_insn
 
 type BpfHdr C.struct_bpf_hdr
 
+// Misc
+
+const (
+       _AT_FDCWD = C.AT_FDCWD
+)
+
 // Terminal handling
 
 type Termios C.struct_termios
index fb7fd1bb4fd9ce506ec215d56d3ce1150a6e6a04..5728d6762ffe5f5da1c1e2f0cb5d3ec101e92e69 100644 (file)
@@ -237,6 +237,12 @@ type BpfInsn C.struct_bpf_insn
 
 type BpfHdr C.struct_bpf_hdr
 
+// Misc
+
+const (
+       _AT_FDCWD = C.AT_FDCWD
+)
+
 // Terminal handling
 
 type Termios C.struct_termios
index 68a69312b207982ca988ef9226587f05b7719bfe..6f8670a4299d1b2ac8602fe9c97fcc38226357dc 100644 (file)
@@ -337,6 +337,12 @@ type BpfHdr C.struct_bpf_hdr
 
 type BpfZbufHeader C.struct_bpf_zbuf_header
 
+// Misc
+
+const (
+       _AT_FDCWD = C.AT_FDCWD
+)
+
 // Terminal handling
 
 type Termios C.struct_termios
index 04354a32a964aa049ecca9f6fe35134330ba9819..37c5fa983415467a95532ec38b82e2475cc06010 100644 (file)
@@ -223,6 +223,12 @@ type BpfHdr C.struct_bpf_hdr
 
 type BpfTimeval C.struct_bpf_timeval
 
+// Misc
+
+const (
+       _AT_FDCWD = C.AT_FDCWD
+)
+
 // Terminal handling
 
 type Termios C.struct_termios
index e6d1ea70448cea8b4b77b761aab8817d006b1db4..29d6feb006449aae0bc83473776f3efd7425c103 100644 (file)
@@ -239,6 +239,12 @@ type BpfHdr C.struct_bpf_hdr
 
 type BpfTimeval C.struct_bpf_timeval
 
+// Misc
+
+const (
+       _AT_FDCWD = C.AT_FDCWD
+)
+
 // Terminal handling
 
 type Termios C.struct_termios
index 7246434223f0888ae0b3ccc3552f4bb873180fc6..a219a437d534aeb0bbdc41e4daea9e2c3487d7c3 100644 (file)
@@ -224,6 +224,12 @@ type BpfTimeval C.struct_bpf_timeval
 
 type BpfHdr C.struct_bpf_hdr
 
+// Misc
+
+const (
+       _AT_FDCWD = C.AT_FDCWD
+)
+
 // Terminal handling
 
 type Termios C.struct_termios
index 7a215104077b72ff3aa63d094c6553bad6fa1b59..28bc679c4c27c9ba064dd0af8d8279502a32b88a 100644 (file)
@@ -1298,3 +1298,18 @@ func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int
        }
        return
 }
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
index 63061b27946cafe0fd8c4ba7a1b020548fbce938..55fead990a15e9bb4a9c3ebd8388dba350fdb0a6 100644 (file)
@@ -1308,3 +1308,18 @@ func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int
        }
        return
 }
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
index 8120980332865da0ee3936986154df94abcfe8aa..edc29f32f8cb93836abda3078f50bd7210ea8795 100644 (file)
@@ -1308,3 +1308,18 @@ func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int
        }
        return
 }
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
index f6c44c793d625c1e0ba9938244442ed632c6e799..80f520ef48e946a6dd5f88d262e0ca0962524b8f 100644 (file)
@@ -1308,3 +1308,18 @@ func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int
        }
        return
 }
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
index ec32d9c616bf1add1aa7d384d3fe7325457e93e7..272a44c7d0f04be8f8396a30236e5165829c8861 100644 (file)
@@ -1224,3 +1224,18 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
        }
        return
 }
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
index 8845202687f761d3231ebb6d8528beb7de38bd8c..4e22cdf7691593318a9ae0c6e91b7b6b9e6772ff 100644 (file)
@@ -1224,3 +1224,18 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
        }
        return
 }
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
index 70df9b43760497a509a48bd70ca424cc99b8ec1a..d9d71aa952e2325bbfa2be97c9646322065c173c 100644 (file)
@@ -1,4 +1,4 @@
-// mksyscall.pl -l32 -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go
+// mksyscall.pl -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go
 // MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
 
 // +build netbsd,arm
@@ -1224,3 +1224,18 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
        }
        return
 }
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
index 2a5542fbc1eda6ce84db7948d9b8560c839e5229..a31b81491f0e98dcb100fa9de7b3b6e5efa66b0c 100644 (file)
@@ -1262,3 +1262,18 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
        }
        return
 }
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
index 9c6a39db52b60e2d571c310bcef8089291927fac..88e6cca79417e8770a0c7d3a9c772ae5de82f034 100644 (file)
@@ -1262,3 +1262,18 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
        }
        return
 }
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
index 1ddd238368935e8234f7ff9d1ddedaa9ba5a8bd7..9e910911c7df2ef5774b1940da2f8d121e111df0 100644 (file)
@@ -1262,3 +1262,18 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
        }
        return
 }
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
index fbc815db30680752f4cd0dd106152bdb97b2f11c..9dbec9ce356eb41c79416baaf1914f4ddeb0ed7c 100644 (file)
@@ -90,6 +90,7 @@ import "unsafe"
 //go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so"
 //go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so"
 //go:cgo_import_dynamic libc_getexecname getexecname "libc.so"
+//go:cgo_import_dynamic libc_utimensat utimensat "libc.so"
 
 //go:linkname libc_Getcwd libc_Getcwd
 //go:linkname libc_getgroups libc_getgroups
@@ -174,6 +175,7 @@ import "unsafe"
 //go:linkname libc_recvfrom libc_recvfrom
 //go:linkname libc___xnet_recvmsg libc___xnet_recvmsg
 //go:linkname libc_getexecname libc_getexecname
+//go:linkname libc_utimensat libc_utimensat
 
 type libcFunc uintptr
 
@@ -260,7 +262,8 @@ var (
        libc_setsockopt,
        libc_recvfrom,
        libc___xnet_recvmsg,
-       libc_getexecname libcFunc
+       libc_getexecname,
+       libc_utimensat libcFunc
 )
 
 func Getcwd(buf []byte) (n int, err error) {
@@ -1084,3 +1087,16 @@ func getexecname() (path unsafe.Pointer, err error) {
        }
        return
 }
+
+func utimensat(dirfd int, path string, times *[2]Timespec) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&libc_utimensat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
index 3c2e342970470e6386d4d27a29b2477e855776bb..bc535f26bf715829e0dd02fd6ddea33f1f36de70 100644 (file)
@@ -301,5 +301,6 @@ const (
        SYS_LPATHCONF              = 533 // { int lpathconf(char *path, int name); }
        SYS_VMM_GUEST_CTL          = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }
        SYS_VMM_GUEST_SYNC_ADDR    = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); }
+       SYS_UTIMENSAT              = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); }
        SYS_ACCEPT4                = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); }
 )
index 5e472179579552ffb285805ff3ef2b0f7ac57480..d0e403aceac9b5489879c6324ce2705dbc925b35 100644 (file)
@@ -347,4 +347,5 @@ const (
        SYS_ACCEPT4                  = 541 // { int accept4(int s, \
        SYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }
        SYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, \
+       SYS_UTIMENSAT                = 547 // { int utimensat(int fd, \
 )
index df8928cc68ab3a4c27f2c537c5301775799cbc0d..2fa4d211d37320b2a94ec234212acd796bc46fea 100644 (file)
@@ -347,4 +347,5 @@ const (
        SYS_ACCEPT4                  = 541 // { int accept4(int s, \
        SYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }
        SYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, \
+       SYS_UTIMENSAT                = 547 // { int utimensat(int fd, \
 )
index f670a59179207355763a54abd2142ba59d6fc8ec..d2caa8f2ad0ac1f4868cd1e19776b64d96d168e8 100644 (file)
@@ -347,4 +347,5 @@ const (
        SYS_ACCEPT4                  = 541 // { int accept4(int s, \
        SYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }
        SYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, \
+       SYS_UTIMENSAT                = 547 // { int utimensat(int fd, \
 )
index 7298d0243d5f361e8658650ebff40c13d4095f6f..e2cf12f17eb91d6a58ba373c150f8e1e51a2ce9d 100644 (file)
@@ -437,6 +437,10 @@ type BpfHdr struct {
        Pad_cgo_0 [2]byte
 }
 
+const (
+       _AT_FDCWD = -0x2
+)
+
 type Termios struct {
        Iflag  uint32
        Oflag  uint32
index ec95d51f9166e9eb31979cd0b64683e31c19111b..bbd5bec38584cd7a14ebbdffab3a516e0caaad76 100644 (file)
@@ -446,6 +446,10 @@ type BpfHdr struct {
        Pad_cgo_0 [2]byte
 }
 
+const (
+       _AT_FDCWD = -0x2
+)
+
 type Termios struct {
        Iflag     uint64
        Oflag     uint64
index 91c4470e7cbf25ce4fb61382410a829a6cfb2cda..ca774793eb449b4b95be63595e87234299f0723e 100644 (file)
@@ -438,6 +438,10 @@ type BpfHdr struct {
        Pad_cgo_0 [2]byte
 }
 
+const (
+       _AT_FDCWD = -0x2
+)
+
 type Termios struct {
        Iflag  uint32
        Oflag  uint32
index 1d65cfde9d2aa43098d012337a0972379441b174..e9c8549fa1a96954505b8e81450d1cbd38bed441 100644 (file)
@@ -446,6 +446,10 @@ type BpfHdr struct {
        Pad_cgo_0 [2]byte
 }
 
+const (
+       _AT_FDCWD = -0x2
+)
+
 type Termios struct {
        Iflag     uint64
        Oflag     uint64
index 00120d0a275a7aa15e5af475d84c88f63d674174..0be4a53ebe7715f837e9a4fbbee4ad89207eb20a 100644 (file)
@@ -432,6 +432,10 @@ type BpfHdr struct {
        Pad_cgo_0 [6]byte
 }
 
+const (
+       _AT_FDCWD = -0x64
+)
+
 type Termios struct {
        Iflag  uint32
        Oflag  uint32
index d972fb6bdf0ca6e62b4ec3dd6096c2f7d4404173..c23bacfe3274c09676a11a6a50a413ee726430c1 100644 (file)
@@ -483,6 +483,10 @@ type BpfZbufHeader struct {
        X_bzh_pad  [5]uint32
 }
 
+const (
+       _AT_FDCWD = -0x64
+)
+
 type Termios struct {
        Iflag  uint32
        Oflag  uint32
index 0a5a10bf7dba010509e4e99ade5c29507ea21ea4..1e5822f66ab4ead0b1c6fab5e7be2f8fbee9b7b1 100644 (file)
@@ -486,6 +486,10 @@ type BpfZbufHeader struct {
        X_bzh_pad  [5]uint32
 }
 
+const (
+       _AT_FDCWD = -0x64
+)
+
 type Termios struct {
        Iflag  uint32
        Oflag  uint32
index 5d7acd547bb473b9d942b45aa2bd5b4cf576e103..f65a92916ca066a0e06e9d529b92ee3176cca48c 100644 (file)
@@ -486,6 +486,10 @@ type BpfZbufHeader struct {
        X_bzh_pad  [5]uint32
 }
 
+const (
+       _AT_FDCWD = -0x64
+)
+
 type Termios struct {
        Iflag  uint32
        Oflag  uint32
index 1752c6c2290603e4bb78bfdf7af5c0603dcce480..c8afb98ea17223576f5ff7cfa911230a0eaa8f72 100644 (file)
@@ -372,6 +372,10 @@ type BpfTimeval struct {
        Usec int32
 }
 
+const (
+       _AT_FDCWD = -0x64
+)
+
 type Termios struct {
        Iflag  uint32
        Oflag  uint32
index b8d4b0b02a8c5a61b5c5c522679745b9619f331b..9336fc107a7d4db9598803f15d5fa8fd368bce54 100644 (file)
@@ -379,6 +379,10 @@ type BpfTimeval struct {
        Usec int64
 }
 
+const (
+       _AT_FDCWD = -0x64
+)
+
 type Termios struct {
        Iflag  uint32
        Oflag  uint32
index c21d875a93fa40c9fb7abf61a9a8ae8f6e49579a..0e4fe4a81229b6bf4b8c5847194cae0514273768 100644 (file)
@@ -377,6 +377,10 @@ type BpfTimeval struct {
        Usec int32
 }
 
+const (
+       _AT_FDCWD = -0x64
+)
+
 type Termios struct {
        Iflag  uint32
        Oflag  uint32
index 0376d3acabe165606e87a3bdcdb4ce064de052fb..05e79d85a4bf178e48629ebe14134cf25ebaeede 100644 (file)
@@ -430,6 +430,10 @@ type BpfTimeval struct {
        Usec uint32
 }
 
+const (
+       _AT_FDCWD = -0x64
+)
+
 type Termios struct {
        Iflag  uint32
        Oflag  uint32
index bf23626ff283419cc6164f2a9e2d91881494bc6e..8bd169c51049d9395f61b6f2da8ff430468933a0 100644 (file)
@@ -437,6 +437,10 @@ type BpfTimeval struct {
        Usec uint32
 }
 
+const (
+       _AT_FDCWD = -0x64
+)
+
 type Termios struct {
        Iflag  uint32
        Oflag  uint32
index e1d8938f0e51a9aa47423e7cae811c2e68fae786..0c30259f49394dce0c290c35590437b86f692456 100644 (file)
@@ -423,6 +423,10 @@ type BpfTimeval struct {
        Usec uint32
 }
 
+const (
+       _AT_FDCWD = -0x64
+)
+
 type Termios struct {
        Iflag  uint32
        Oflag  uint32
index 4cf07ed496d1e62cd19c5c91641eb8c8140adac6..12307abfaa6bf8bbdc686c6fcc12457ded2e1a3b 100644 (file)
@@ -358,6 +358,10 @@ type BpfHdr struct {
        Pad_cgo_0 [2]byte
 }
 
+const (
+       _AT_FDCWD = 0xffd19553
+)
+
 type Termios struct {
        Iflag     uint32
        Oflag     uint32