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
11namespace fzl {
12
13zx::ticks NsToTicks(zx::duration ns) {
14    return zx::ticks(ns_to_ticks(ns.get()));
15}
16
17zx::duration TicksToNs(zx::ticks ticks) {
18    return zx::duration(ticks_to_ns(ticks.get()));
19}
20
21} // namespace fzl
22
23zx_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
28zx_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