Serenity Operating System
at master 44 lines 806 B view raw
1/* 2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#include <AK/Assertions.h> 8#include <AK/Time.h> 9#include <LibCore/ElapsedTimer.h> 10 11namespace Core { 12 13ElapsedTimer ElapsedTimer::start_new() 14{ 15 ElapsedTimer timer; 16 timer.start(); 17 return timer; 18} 19 20void ElapsedTimer::start() 21{ 22 m_valid = true; 23 m_origin_time = m_precise ? Time::now_monotonic() : Time::now_monotonic_coarse(); 24} 25 26void ElapsedTimer::reset() 27{ 28 m_valid = false; 29 m_origin_time = {}; 30} 31 32i64 ElapsedTimer::elapsed() const 33{ 34 return elapsed_time().to_milliseconds(); 35} 36 37Time ElapsedTimer::elapsed_time() const 38{ 39 VERIFY(is_valid()); 40 auto now = m_precise ? Time::now_monotonic() : Time::now_monotonic_coarse(); 41 return now - m_origin_time; 42} 43 44}