|  | // Copyright 2016 The Go Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style | 
|  | // license that can be found in the LICENSE file. | 
|  |  | 
|  | //go:build unix || (js && wasm) || wasip1 | 
|  |  | 
|  | package syscall | 
|  |  | 
|  | // TimespecToNsec returns the time stored in ts as nanoseconds. | 
|  | func TimespecToNsec(ts Timespec) int64 { return ts.Nano() } | 
|  |  | 
|  | // NsecToTimespec converts a number of nanoseconds into a Timespec. | 
|  | func NsecToTimespec(nsec int64) Timespec { | 
|  | sec := nsec / 1e9 | 
|  | nsec = nsec % 1e9 | 
|  | if nsec < 0 { | 
|  | nsec += 1e9 | 
|  | sec-- | 
|  | } | 
|  | return setTimespec(sec, nsec) | 
|  | } | 
|  |  | 
|  | // TimevalToNsec returns the time stored in tv as nanoseconds. | 
|  | func TimevalToNsec(tv Timeval) int64 { return tv.Nano() } | 
|  |  | 
|  | // NsecToTimeval converts a number of nanoseconds into a Timeval. | 
|  | func NsecToTimeval(nsec int64) Timeval { | 
|  | nsec += 999 // round up to microsecond | 
|  | usec := nsec % 1e9 / 1e3 | 
|  | sec := nsec / 1e9 | 
|  | if usec < 0 { | 
|  | usec += 1e6 | 
|  | sec-- | 
|  | } | 
|  | return setTimeval(sec, usec) | 
|  | } |