mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2025-01-19 13:18:32 +00:00
u/time: Add helper comparising functions
This commit is contained in:
parent
5c15b60cf2
commit
c876087ee7
|
@ -93,6 +93,91 @@ time_s_to_ns(double duration)
|
||||||
return (time_duration_ns)(duration * (double)U_TIME_1S_IN_NS);
|
return (time_duration_ns)(duration * (double)U_TIME_1S_IN_NS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Convert nanoseconds to double float milliseconds, useful for printing.
|
||||||
|
*
|
||||||
|
* @see timepoint_ns
|
||||||
|
* @ingroup aux_util
|
||||||
|
*/
|
||||||
|
static inline double
|
||||||
|
time_ns_to_ms_f(time_duration_ns ns)
|
||||||
|
{
|
||||||
|
return (double)(ns) / (double)U_TIME_1MS_IN_NS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Checks if two timepoints are with a certain range of each other.
|
||||||
|
*
|
||||||
|
* @see timepoint_ns
|
||||||
|
* @ingroup aux_util
|
||||||
|
*/
|
||||||
|
static inline bool
|
||||||
|
time_is_within_range_of_each_other(timepoint_ns a, timepoint_ns b, uint64_t range)
|
||||||
|
{
|
||||||
|
int64_t t = (int64_t)a - (int64_t)b;
|
||||||
|
return (-(int64_t)range < t) && (t < (int64_t)range);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Checks if two timepoints are with half a millisecond of each other.
|
||||||
|
*
|
||||||
|
* @see timepoint_ns
|
||||||
|
* @ingroup aux_util
|
||||||
|
*/
|
||||||
|
static inline bool
|
||||||
|
time_is_within_half_ms(timepoint_ns a, timepoint_ns b)
|
||||||
|
{
|
||||||
|
return time_is_within_range_of_each_other(a, b, U_TIME_HALF_MS_IN_NS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Fuzzy comparisons.
|
||||||
|
*
|
||||||
|
* @see timepoint_ns
|
||||||
|
* @ingroup aux_util
|
||||||
|
*/
|
||||||
|
static inline bool
|
||||||
|
time_is_less_then_or_within_range(timepoint_ns a, timepoint_ns b, uint64_t range)
|
||||||
|
{
|
||||||
|
return a < b || time_is_within_range_of_each_other(a, b, range);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Fuzzy comparisons.
|
||||||
|
*
|
||||||
|
* @see timepoint_ns
|
||||||
|
* @ingroup aux_util
|
||||||
|
*/
|
||||||
|
static inline bool
|
||||||
|
time_is_less_then_or_within_half_ms(timepoint_ns a, timepoint_ns b)
|
||||||
|
{
|
||||||
|
return time_is_less_then_or_within_range(a, b, U_TIME_HALF_MS_IN_NS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Fuzzy comparisons.
|
||||||
|
*
|
||||||
|
* @see timepoint_ns
|
||||||
|
* @ingroup aux_util
|
||||||
|
*/
|
||||||
|
static inline bool
|
||||||
|
time_is_greater_then_or_within_range(timepoint_ns a, timepoint_ns b, uint64_t range)
|
||||||
|
{
|
||||||
|
return a > b || time_is_within_range_of_each_other(a, b, range);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Fuzzy comparisons.
|
||||||
|
*
|
||||||
|
* @see timepoint_ns
|
||||||
|
* @ingroup aux_util
|
||||||
|
*/
|
||||||
|
static inline bool
|
||||||
|
time_is_greater_then_or_within_half_ms(timepoint_ns a, timepoint_ns b)
|
||||||
|
{
|
||||||
|
return time_is_greater_then_or_within_range(a, b, U_TIME_HALF_MS_IN_NS);
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @struct time_state util/u_time.h
|
* @struct time_state util/u_time.h
|
||||||
* @brief Time-keeping state structure.
|
* @brief Time-keeping state structure.
|
||||||
|
|
Loading…
Reference in a new issue