1 // Copyright 2018 The Fuchsia Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include <zircon/compiler.h>
6 #include <zircon/syscalls.h>
7 #include <zircon/types.h>
8 #include <lib/fzl/time.h>
9 #include <lib/zx/time.h>
10 
11 namespace fzl {
12 
NsToTicks(zx::duration ns)13 zx::ticks NsToTicks(zx::duration ns) {
14     return zx::ticks(ns_to_ticks(ns.get()));
15 }
16 
TicksToNs(zx::ticks ticks)17 zx::duration TicksToNs(zx::ticks ticks) {
18     return zx::duration(ticks_to_ns(ticks.get()));
19 }
20 
21 } // namespace fzl
22 
ns_to_ticks(zx_duration_t ns)23 zx_ticks_t ns_to_ticks(zx_duration_t ns) {
24     return static_cast<zx_ticks_t>(static_cast<__uint128_t>(ns) * zx_ticks_per_second() /
25                                    ZX_SEC(1));
26 }
27 
ticks_to_ns(zx_ticks_t ticks)28 zx_duration_t ticks_to_ns(zx_ticks_t ticks) {
29     return static_cast<zx_duration_t>(static_cast<__uint128_t>(ticks) * ZX_SEC(1) /
30                                       zx_ticks_per_second());
31 }
32