1*523fa7a6SAndroid Build Coastguard Worker /* 2*523fa7a6SAndroid Build Coastguard Worker * Copyright (c) Meta Platforms, Inc. and affiliates. 3*523fa7a6SAndroid Build Coastguard Worker * All rights reserved. 4*523fa7a6SAndroid Build Coastguard Worker * 5*523fa7a6SAndroid Build Coastguard Worker * This source code is licensed under the BSD-style license found in the 6*523fa7a6SAndroid Build Coastguard Worker * LICENSE file in the root directory of this source tree. 7*523fa7a6SAndroid Build Coastguard Worker */ 8*523fa7a6SAndroid Build Coastguard Worker 9*523fa7a6SAndroid Build Coastguard Worker /** 10*523fa7a6SAndroid Build Coastguard Worker * @file 11*523fa7a6SAndroid Build Coastguard Worker * Clock and timing related methods. 12*523fa7a6SAndroid Build Coastguard Worker */ 13*523fa7a6SAndroid Build Coastguard Worker 14*523fa7a6SAndroid Build Coastguard Worker #pragma once 15*523fa7a6SAndroid Build Coastguard Worker 16*523fa7a6SAndroid Build Coastguard Worker #include <executorch/runtime/platform/platform.h> 17*523fa7a6SAndroid Build Coastguard Worker 18*523fa7a6SAndroid Build Coastguard Worker namespace executorch { 19*523fa7a6SAndroid Build Coastguard Worker namespace runtime { 20*523fa7a6SAndroid Build Coastguard Worker 21*523fa7a6SAndroid Build Coastguard Worker /** 22*523fa7a6SAndroid Build Coastguard Worker * Convert an interval from units of system ticks to nanoseconds. 23*523fa7a6SAndroid Build Coastguard Worker * The conversion ratio is platform-dependent, and thus depends on 24*523fa7a6SAndroid Build Coastguard Worker * the platform implementation of et_pal_ticks_to_ns_multiplier(). 25*523fa7a6SAndroid Build Coastguard Worker * 26*523fa7a6SAndroid Build Coastguard Worker * @param[in] ticks The interval length in system ticks. 27*523fa7a6SAndroid Build Coastguard Worker * @retval The interval length in nanoseconds. 28*523fa7a6SAndroid Build Coastguard Worker */ ticks_to_ns(et_timestamp_t ticks)29*523fa7a6SAndroid Build Coastguard Workerinline uint64_t ticks_to_ns(et_timestamp_t ticks) { 30*523fa7a6SAndroid Build Coastguard Worker et_tick_ratio_t ratio = et_pal_ticks_to_ns_multiplier(); 31*523fa7a6SAndroid Build Coastguard Worker return static_cast<uint64_t>(ticks) * ratio.numerator / ratio.denominator; 32*523fa7a6SAndroid Build Coastguard Worker } 33*523fa7a6SAndroid Build Coastguard Worker 34*523fa7a6SAndroid Build Coastguard Worker } // namespace runtime 35*523fa7a6SAndroid Build Coastguard Worker } // namespace executorch 36*523fa7a6SAndroid Build Coastguard Worker 37*523fa7a6SAndroid Build Coastguard Worker namespace torch { 38*523fa7a6SAndroid Build Coastguard Worker namespace executor { 39*523fa7a6SAndroid Build Coastguard Worker // TODO(T197294990): Remove these deprecated aliases once all users have moved 40*523fa7a6SAndroid Build Coastguard Worker // to the new `::executorch` namespaces. 41*523fa7a6SAndroid Build Coastguard Worker using ::executorch::runtime::ticks_to_ns; 42*523fa7a6SAndroid Build Coastguard Worker } // namespace executor 43*523fa7a6SAndroid Build Coastguard Worker } // namespace torch 44