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 <perftest/perftest.h>
6#include <zircon/syscalls.h>
7
8namespace {
9
10// Performance test for zx_clock_get_monotonic().  This is worth
11// testing because it is a very commonly called syscall.  The kernel's
12// implementation of the syscall is non-trivial and can be rather slow on
13// some machines/VMs.
14bool ClockGetMonotonicTest() {
15    zx_clock_get_monotonic();
16    return true;
17}
18
19bool ClockGetUtcTest() {
20    zx_clock_get(ZX_CLOCK_UTC);
21    return true;
22}
23
24bool ClockGetThreadTest() {
25    zx_clock_get(ZX_CLOCK_THREAD);
26    return true;
27}
28
29bool TicksGetTest() {
30    zx_ticks_get();
31    return true;
32}
33
34void RegisterTests() {
35    perftest::RegisterSimpleTest<ClockGetMonotonicTest>("ClockGetMonotonic");
36    perftest::RegisterSimpleTest<ClockGetUtcTest>("ClockGetUtc");
37    perftest::RegisterSimpleTest<ClockGetThreadTest>("ClockGetThread");
38    perftest::RegisterSimpleTest<TicksGetTest>("TicksGet");
39}
40PERFTEST_CTOR(RegisterTests);
41
42}  // namespace
43