Skip to content

Commit

Permalink
AK: Add Time::from_ticks()
Browse files Browse the repository at this point in the history
This helper allows Time to be constructed from a tick count and a ticks
per second value.
  • Loading branch information
LucasChollet authored and awesomekling committed Feb 28, 2022
1 parent 5238e38 commit 39bfc48
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 0 deletions.
9 changes: 9 additions & 0 deletions AK/Time.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,15 @@ unsigned day_of_week(int year, unsigned month, int day)
return (year + year / 4 - year / 100 + year / 400 + seek_table[month - 1] + day) % 7;
}

Time Time::from_ticks(clock_t ticks, time_t ticks_per_second)
{
auto secs = ticks % ticks_per_second;

i32 nsecs = 1'000'000'000 * (ticks - (ticks_per_second * secs)) / ticks_per_second;
i32 extra_secs = sane_mod(nsecs, 1'000'000'000);
return Time::from_half_sanitized(secs, extra_secs, nsecs);
}

Time Time::from_timespec(const struct timespec& ts)
{
i32 nsecs = ts.tv_nsec;
Expand Down
1 change: 1 addition & 0 deletions AK/Time.h
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ class Time {
i64 seconds = sane_mod(milliseconds, 1'000);
return Time(seconds, milliseconds * 1'000'000);
}
[[nodiscard]] static Time from_ticks(clock_t, time_t);
[[nodiscard]] static Time from_timespec(const struct timespec&);
[[nodiscard]] static Time from_timeval(const struct timeval&);
// We don't pull in <stdint.h> for the pretty min/max definitions because this file is also included in the Kernel
Expand Down

0 comments on commit 39bfc48

Please sign in to comment.