Timespec Helpers.
More...
|
uint64_t | _Timespec_Get_as_nanoseconds (const struct timespec *time) |
| Gets the timestamp as nanoseconds. More...
|
|
bool | _Timespec_Is_valid (const struct timespec *time) |
| Checks if timespec is valid. More...
|
|
bool | _Timespec_Less_than (const struct timespec *lhs, const struct timespec *rhs) |
| Checks if the left hand side timespec is less than the right one. More...
|
|
uint32_t | _Timespec_Add_to (struct timespec *time, const struct timespec *add) |
| Adds two timespecs. More...
|
|
uint32_t | _Timespec_To_ticks (const struct timespec *time) |
| Converts timespec to number of ticks. More...
|
|
void | _Timespec_From_ticks (uint32_t ticks, struct timespec *time) |
| Converts ticks to timespec. More...
|
|
void | _Timespec_Subtract (const struct timespec *start, const struct timespec *end, struct timespec *result) |
| Subtracts two timespec. More...
|
|
void | _Timespec_Divide_by_integer (const struct timespec *time, uint32_t iterations, struct timespec *result) |
| Divides timespec by an integer. More...
|
|
void | _Timespec_Divide (const struct timespec *lhs, const struct timespec *rhs, uint32_t *ival_percentage, uint32_t *fval_percentage) |
| Divides a timespec by another timespec. More...
|
|
Timespec Helpers.
This handler encapsulates functionality related to manipulating POSIX struct timespecs.
◆ _Timespec_Equal_to
#define _Timespec_Equal_to |
( |
|
lhs, |
|
|
|
rhs |
|
) |
| |
Value:( ((lhs)->tv_sec == (rhs)->tv_sec) && \
((lhs)->tv_nsec == (rhs)->tv_nsec) \
)
The Timespec "equal to" operator.
This method is the is equal to than operator for timespecs.
- Parameters
-
[in] | lhs | is the left hand side timespec |
[in] | rhs | is the right hand side timespec |
- Return values
-
This | method returns true if lhs is equal to rhs and false otherwise. |
◆ _Timespec_Get_nanoseconds
#define _Timespec_Get_nanoseconds |
( |
|
_time | ) |
((_time)->tv_nsec) |
Get nanoseconds portion of timespec.
This method returns the nanoseconds portion of the specified timespec
- Parameters
-
[in] | _time | points to the timespec |
- Return values
-
The | nanoseconds portion of _time. |
◆ _Timespec_Get_seconds
#define _Timespec_Get_seconds |
( |
|
_time | ) |
((_time)->tv_sec) |
Get seconds portion of timespec.
This method returns the seconds portion of the specified timespec
- Parameters
-
[in] | _time | points to the timespec |
- Return values
-
The | seconds portion of _time. |
◆ _Timespec_Greater_than
The Timespec "greater than" operator.
This method is the greater than operator for timespecs.
- Parameters
-
[in] | _lhs | is the left hand side timespec |
[in] | _rhs | is the right hand side timespec |
- Return values
-
This | method returns true if lhs is greater than the rhs and false otherwise. |
◆ _Timespec_Set
#define _Timespec_Set |
( |
|
_time, |
|
|
|
_seconds, |
|
|
|
_nanoseconds |
|
) |
| |
Value:do { \
(_time)->tv_sec = (_seconds); \
(_time)->tv_nsec = (_nanoseconds); \
} while (0)
Set timespec to seconds nanosecond.
This method sets the timespec to the specified seconds and nanoseconds value.
- Parameters
-
[in] | _time | points to the timespec instance to validate. |
[in] | _seconds | is the seconds portion of the timespec |
[in] | _nanoseconds | is the nanoseconds portion of the timespec |
◆ _Timespec_Set_to_zero
#define _Timespec_Set_to_zero |
( |
|
_time | ) |
|
Value:do { \
(_time)->tv_sec = 0; \
(_time)->tv_nsec = 0; \
} while (0)
Sets the Timespec to Zero.
This method sets the timespec to zero. value.
- Parameters
-
[in] | _time | points to the timespec instance to zero. |
◆ _Timespec_Add_to()
uint32_t _Timespec_Add_to |
( |
struct timespec * |
time, |
|
|
const struct timespec * |
add |
|
) |
| |
Adds two timespecs.
This routine adds two timespecs. The second argument is added to the first.
- Parameters
-
time | The base time to be added to. |
add | The timespec to add to the first argument. |
- Returns
- The number of seconds time increased by.
◆ _Timespec_Divide()
void _Timespec_Divide |
( |
const struct timespec * |
lhs, |
|
|
const struct timespec * |
rhs, |
|
|
uint32_t * |
ival_percentage, |
|
|
uint32_t * |
fval_percentage |
|
) |
| |
Divides a timespec by another timespec.
This routine divides a timespec by another timespec. The intended use is for calculating percentages to three decimal points.
- Parameters
-
| lhs | The left hand timespec. |
| rhs | The right hand timespec. |
[out] | ival_percentage | The integer portion of the average. |
[out] | fval_percentage | The thousandths of percentage. |
◆ _Timespec_Divide_by_integer()
void _Timespec_Divide_by_integer |
( |
const struct timespec * |
time, |
|
|
uint32_t |
iterations, |
|
|
struct timespec * |
result |
|
) |
| |
Divides timespec by an integer.
This routine divides a timespec by an integer value. The expected use is to assist in benchmark calculations where you typically divide a duration by a number of iterations.
- Parameters
-
| time | The total. |
| iterations | The number of iterations. |
[out] | result | The average time. |
◆ _Timespec_From_ticks()
void _Timespec_From_ticks |
( |
uint32_t |
ticks, |
|
|
struct timespec * |
time |
|
) |
| |
Converts ticks to timespec.
This routine converts the ticks value to the corresponding timespec format time.
- Parameters
-
| ticks | The number of ticks to convert. |
[out] | time | The timespec format time result. |
◆ _Timespec_Get_as_nanoseconds()
uint64_t _Timespec_Get_as_nanoseconds |
( |
const struct timespec * |
time | ) |
|
Gets the timestamp as nanoseconds.
This method returns the timestamp as nanoseconds.
- Parameters
-
time | points to the timestamp. |
- Returns
- The time in nanoseconds.
◆ _Timespec_Is_valid()
bool _Timespec_Is_valid |
( |
const struct timespec * |
time | ) |
|
Checks if timespec is valid.
This method determines the validity of a timespec.
- Parameters
-
time | is the timespec instance to validate. |
- Return values
-
true | The timespec is valid. |
false | The timespec is invalid. |
◆ _Timespec_Less_than()
bool _Timespec_Less_than |
( |
const struct timespec * |
lhs, |
|
|
const struct timespec * |
rhs |
|
) |
| |
Checks if the left hand side timespec is less than the right one.
This method is the less than operator for timespecs.
- Parameters
-
lhs | is the left hand side timespec. |
rhs | is the right hand side timespec. |
- Return values
-
true | lhs is less than rhs. |
false | lhs is greater than rhs. |
◆ _Timespec_Subtract()
void _Timespec_Subtract |
( |
const struct timespec * |
start, |
|
|
const struct timespec * |
end, |
|
|
struct timespec * |
result |
|
) |
| |
Subtracts two timespec.
This routine subtracts two timespecs. result is set to end - start.
- Parameters
-
| start | The starting time |
| end | The ending time |
[out] | result | The difference between starting and ending time. |
◆ _Timespec_To_ticks()
uint32_t _Timespec_To_ticks |
( |
const struct timespec * |
time | ) |
|
Converts timespec to number of ticks.
This routine convert the time timespec to the corresponding number of clock ticks.
- Parameters
-
time | The time to be converted. |
- Returns
- The number of ticks computed.
This routines converts a timespec to the corresponding number of ticks.
We should ensure the ticks not be truncated by integer division. We need to have it be greater than or equal to the requested time. It should not be shorter.