diff options
author | Péter Szilágyi <peterke@gmail.com> | 2019-02-15 00:14:28 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2019-02-19 16:59:24 +0800 |
commit | d9be33766930b6978629a02643a8c83265a3006b (patch) | |
tree | 1245792f4e7bf63374148586f8c4ee612796a299 /vendor/golang.org/x/sys/unix/timestruct.go | |
parent | 7bd6f39dc3eb174d5869613bc24f431ec96dabff (diff) | |
download | go-tangerine-d9be33766930b6978629a02643a8c83265a3006b.tar go-tangerine-d9be33766930b6978629a02643a8c83265a3006b.tar.gz go-tangerine-d9be33766930b6978629a02643a8c83265a3006b.tar.bz2 go-tangerine-d9be33766930b6978629a02643a8c83265a3006b.tar.lz go-tangerine-d9be33766930b6978629a02643a8c83265a3006b.tar.xz go-tangerine-d9be33766930b6978629a02643a8c83265a3006b.tar.zst go-tangerine-d9be33766930b6978629a02643a8c83265a3006b.zip |
vendor: update syscalls dependency
(cherry picked from commit dcc045f03c7c933dcdc7302f0338cbbfef7398ea)
Diffstat (limited to 'vendor/golang.org/x/sys/unix/timestruct.go')
-rw-r--r-- | vendor/golang.org/x/sys/unix/timestruct.go | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/vendor/golang.org/x/sys/unix/timestruct.go b/vendor/golang.org/x/sys/unix/timestruct.go index 139fbbebb..4a672f569 100644 --- a/vendor/golang.org/x/sys/unix/timestruct.go +++ b/vendor/golang.org/x/sys/unix/timestruct.go @@ -2,10 +2,12 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix +import "time" + // TimespecToNsec converts a Timespec value into a number of // nanoseconds since the Unix epoch. func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } @@ -22,6 +24,24 @@ func NsecToTimespec(nsec int64) Timespec { return setTimespec(sec, nsec) } +// TimeToTimespec converts t into a Timespec. +// On some 32-bit systems the range of valid Timespec values are smaller +// than that of time.Time values. So if t is out of the valid range of +// Timespec, it returns a zero Timespec and ERANGE. +func TimeToTimespec(t time.Time) (Timespec, error) { + sec := t.Unix() + nsec := int64(t.Nanosecond()) + ts := setTimespec(sec, nsec) + + // Currently all targets have either int32 or int64 for Timespec.Sec. + // If there were a new target with floating point type for it, we have + // to consider the rounding error. + if int64(ts.Sec) != sec { + return Timespec{}, ERANGE + } + return ts, nil +} + // TimevalToNsec converts a Timeval value into a number of nanoseconds // since the Unix epoch. func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 } |