blob: f96289eabcd1ded5c21a92d4819f9f352b256621 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "util.h"
#include <lib/zx/clock.h>
#include <lib/zx/time.h>
#include <cstdio>
#include <string>
namespace hwstress {
zx::duration SecsToDuration(double secs) {
return zx::nsec(static_cast<int64_t>(secs * 1'000'000'000.0));
double DurationToSecs(zx::duration d) { return d.to_nsecs() / 1'000'000'000.0; }
std::string DoubleAsHex(double v) {
// Standards-compliant way to convert a double to a long. The compiler will
// just turn this into a register move.
uint64_t n;
static_assert(sizeof(uint64_t) == sizeof(double));
memcpy(&n, &v, sizeof(double));
// Print out the long as a string.
char buffer[19]; // len("0x") + 16 digits + len("\0")
snprintf(buffer, sizeof(buffer), "0x%016lx", n);
return std::string(buffer);
} // namespace hwstress