github.com/gidoBOSSftw5731/go/src@v0.0.0-20210226122457-d24b0edbf019/syscall/timestruct.go (about) 1 // Copyright 2016 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 //go:build aix || darwin || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris 6 // +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris 7 8 package syscall 9 10 // TimespecToNSec returns the time stored in ts as nanoseconds. 11 func TimespecToNsec(ts Timespec) int64 { return ts.Nano() } 12 13 // NsecToTimespec converts a number of nanoseconds into a Timespec. 14 func NsecToTimespec(nsec int64) Timespec { 15 sec := nsec / 1e9 16 nsec = nsec % 1e9 17 if nsec < 0 { 18 nsec += 1e9 19 sec-- 20 } 21 return setTimespec(sec, nsec) 22 } 23 24 // TimevalToNsec returns the time stored in tv as nanoseconds. 25 func TimevalToNsec(tv Timeval) int64 { return tv.Nano() } 26 27 // NsecToTimeval converts a number of nanoseconds into a Timeval. 28 func NsecToTimeval(nsec int64) Timeval { 29 nsec += 999 // round up to microsecond 30 usec := nsec % 1e9 / 1e3 31 sec := nsec / 1e9 32 if usec < 0 { 33 usec += 1e6 34 sec-- 35 } 36 return setTimeval(sec, usec) 37 }