mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
libutil: Introduce util_time
Introduce util_time as a place for time related macros, definitions, and functions that are commonly used. Add NSEC_PER_USEC, NSEC_PER_MSEC, USEC_PER_SEC and NSEC_PER_SEC definitions that are used for time conversion calculations as a start. Add time conversion helper functions. Reviewed-by: Jan Höppner <hoeppner@linux.ibm.com> Signed-off-by: Mete Durlu <meted@linux.ibm.com> Signed-off-by: Steffen Eiden <seiden@linux.ibm.com>
This commit is contained in:
committed by
Steffen Eiden
parent
0d6e63abdc
commit
44fdf586e1
202
include/lib/util_time.h
Normal file
202
include/lib/util_time.h
Normal file
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
* util_time - Time related helper functions and definitions
|
||||
*
|
||||
* Copyright IBM Corp. 2025
|
||||
*
|
||||
* s390-tools is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the MIT license. See LICENSE for details.
|
||||
*/
|
||||
|
||||
#ifndef LIB_UTIL_TIME_H
|
||||
#define LIB_UTIL_TIME_H
|
||||
|
||||
#define NSEC_PER_USEC 1000L
|
||||
#define NSEC_PER_MSEC 1000000L
|
||||
#define NSEC_PER_SEC 1000000000L
|
||||
|
||||
#define USEC_PER_MSEC 1000L
|
||||
#define USEC_PER_SEC 1000000L
|
||||
|
||||
#define MSEC_PER_SEC 1000L
|
||||
|
||||
/**
|
||||
* Convert nanoseconds to microseconds
|
||||
*
|
||||
* Convert value from nanoseconds to microseconds by dividing the
|
||||
* value to NSEC_PER_USEC constant.
|
||||
*
|
||||
* @param[in] val Time value in nanoseconds
|
||||
*
|
||||
* @returns Time value in microseconds
|
||||
*/
|
||||
static inline double util_nsecs_to_usecs(double val)
|
||||
{
|
||||
return val / NSEC_PER_USEC;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert nanoseconds to milliseconds
|
||||
*
|
||||
* Convert value from nanoseconds to milliseconds by dividing the
|
||||
* value to NSEC_PER_MSEC constant.
|
||||
*
|
||||
* @param[in] val Time value in nanoseconds
|
||||
*
|
||||
* @returns Time value in milliseconds
|
||||
*/
|
||||
static inline double util_nsecs_to_msecs(double val)
|
||||
{
|
||||
return val / NSEC_PER_MSEC;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert nanoseconds to seconds
|
||||
*
|
||||
* Convert value from nanoseconds to seconds by dividing the
|
||||
* value to NSEC_PER_SEC constant.
|
||||
*
|
||||
* @param[in] val Time value in nanoseconds
|
||||
*
|
||||
* @returns Time value in seconds
|
||||
*/
|
||||
static inline double util_nsecs_to_secs(double val)
|
||||
{
|
||||
return val / NSEC_PER_SEC;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert microseconds to nanoseconds
|
||||
*
|
||||
* Convert value from microseconds to nanoseconds by multiplying the
|
||||
* value with NSEC_PER_USEC constant.
|
||||
*
|
||||
* @param[in] val Time value in microseconds
|
||||
*
|
||||
* @returns Time value in nanoseconds
|
||||
*/
|
||||
static inline double util_usecs_to_nsecs(double val)
|
||||
{
|
||||
return val * NSEC_PER_USEC;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert microseconds to milliseconds
|
||||
*
|
||||
* Convert value from microseconds to milliseconds by dividing the
|
||||
* value to USEC_PER_MSEC constant.
|
||||
*
|
||||
* @param[in] val Time value in microseconds
|
||||
*
|
||||
* @returns Time value in milliseconds
|
||||
*/
|
||||
static inline double util_usecs_to_msecs(double val)
|
||||
{
|
||||
return val / USEC_PER_MSEC;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert microseconds to seconds
|
||||
*
|
||||
* Convert value from microseconds to seconds by dividing the
|
||||
* value to USEC_PER_SEC constant.
|
||||
*
|
||||
* @param[in] val Time value in nanoseconds
|
||||
*
|
||||
* @returns Time value in seconds
|
||||
*/
|
||||
static inline double util_usecs_to_secs(double val)
|
||||
{
|
||||
return val / USEC_PER_SEC;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert milliseconds to nanoseconds
|
||||
*
|
||||
* Convert value from milliseconds to nanoseconds by multiplying the
|
||||
* value with NSEC_PER_MSEC constant.
|
||||
*
|
||||
* @param[in] val Time value in milliseconds
|
||||
*
|
||||
* @returns Time value in nanoseconds
|
||||
*/
|
||||
static inline double util_msecs_to_nsecs(double val)
|
||||
{
|
||||
return val * NSEC_PER_MSEC;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert milliseconds to microseconds
|
||||
*
|
||||
* Convert value from milliseconds to microseconds by multiplying the
|
||||
* value with USEC_PER_MSEC constant.
|
||||
*
|
||||
* @param[in] val Time value in milliseconds
|
||||
*
|
||||
* @returns Time value in microseconds
|
||||
*/
|
||||
static inline double util_msecs_to_usecs(double val)
|
||||
{
|
||||
return val * USEC_PER_MSEC;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert milliseconds to seconds
|
||||
*
|
||||
* Convert value from milliseconds to seconds by dividing the
|
||||
* value to MSEC_PER_SEC constant.
|
||||
*
|
||||
* @param[in] val Time value in milliseconds
|
||||
*
|
||||
* @returns Time value in seconds
|
||||
*/
|
||||
static inline double util_msecs_to_secs(double val)
|
||||
{
|
||||
return val / MSEC_PER_SEC;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert seconds to nanoseconds
|
||||
*
|
||||
* Convert value from seconds to nanoseconds by multiplying the
|
||||
* value with NSEC_PER_SEC constant.
|
||||
*
|
||||
* @param[in] val Time value in seconds
|
||||
*
|
||||
* @returns Time value in nanoseconds
|
||||
*/
|
||||
static inline double util_secs_to_nsecs(double val)
|
||||
{
|
||||
return val * NSEC_PER_SEC;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert seconds to microseconds
|
||||
*
|
||||
* Convert value from seconds to microseconds by multiplying the
|
||||
* value with USEC_PER_SEC constant.
|
||||
*
|
||||
* @param[in] val Time value in seconds
|
||||
*
|
||||
* @returns Time value in microseconds
|
||||
*/
|
||||
static inline double util_secs_to_usecs(double val)
|
||||
{
|
||||
return val * USEC_PER_SEC;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert seconds to milliseconds
|
||||
*
|
||||
* Convert value from seconds to milliseconds by multiplying the
|
||||
* value with MSEC_PER_SEC constant.
|
||||
*
|
||||
* @param[in] val Time value in seconds
|
||||
*
|
||||
* @returns Time value in milliseconds
|
||||
*/
|
||||
static inline double util_secs_to_msecs(double val)
|
||||
{
|
||||
return val * MSEC_PER_SEC;
|
||||
}
|
||||
|
||||
#endif /* LIB_UTIL_TIME_H */
|
||||
Reference in New Issue
Block a user