1*6777b538SAndroid Build Coastguard Worker // Copyright 2020 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "base/tracing/trace_time.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include "base/trace_event/trace_event.h" 8*6777b538SAndroid Build Coastguard Worker #include "build/build_config.h" 9*6777b538SAndroid Build Coastguard Worker #include "third_party/perfetto/include/perfetto/base/time.h" 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Worker namespace base { 12*6777b538SAndroid Build Coastguard Worker namespace tracing { 13*6777b538SAndroid Build Coastguard Worker TraceBootTicksNow()14*6777b538SAndroid Build Coastguard Workerint64_t TraceBootTicksNow() { 15*6777b538SAndroid Build Coastguard Worker // On Windows and Mac, TRACE_TIME_TICKS_NOW() behaves like boottime already. 16*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ 17*6777b538SAndroid Build Coastguard Worker BUILDFLAG(IS_FUCHSIA) 18*6777b538SAndroid Build Coastguard Worker struct timespec ts; 19*6777b538SAndroid Build Coastguard Worker int res = clock_gettime(CLOCK_BOOTTIME, &ts); 20*6777b538SAndroid Build Coastguard Worker if (res != -1) 21*6777b538SAndroid Build Coastguard Worker return static_cast<int64_t>(perfetto::base::FromPosixTimespec(ts).count()); 22*6777b538SAndroid Build Coastguard Worker #endif 23*6777b538SAndroid Build Coastguard Worker return TRACE_TIME_TICKS_NOW().since_origin().InNanoseconds(); 24*6777b538SAndroid Build Coastguard Worker } 25*6777b538SAndroid Build Coastguard Worker 26*6777b538SAndroid Build Coastguard Worker } // namespace tracing 27*6777b538SAndroid Build Coastguard Worker } // namespace base