RTEMS  5.0.0
Files | Macros | Functions

Files

file  timespecaddto.c
 Add to a Timespec.
 
file  timespecdivide.c
 Divide Timespec By Integer.
 
file  timespecdividebyinteger.c
 Divide Timespec By Integer.
 
file  timespecfromticks.c
 Convert Ticks to Timespec.
 
file  timespecgetasnanoseconds.c
 Get As Nanoseconds.
 
file  timespecisvalid.c
 Is Timespec Valid.
 
file  timespeclessthan.c
 Timespec Less Than Operator.
 
file  timespecsubtract.c
 Subtract Two Timespec.
 

Macros

#define _Timespec_Set(_time, _seconds, _nanoseconds)
 Set timespec to seconds nanosecond. More...
 
#define _Timespec_Set_to_zero(_time)
 Sets the Timespec to Zero. More...
 
#define _Timespec_Get_seconds(_time)   ((_time)->tv_sec)
 Get seconds portion of timespec. More...
 
#define _Timespec_Get_nanoseconds(_time)   ((_time)->tv_nsec)
 Get nanoseconds portion of timespec. More...
 
#define _Timespec_Greater_than(_lhs, _rhs)   _Timespec_Less_than( _rhs, _lhs )
 The Timespec "greater than" operator. More...
 
#define _Timespec_Equal_to(lhs, rhs)
 The Timespec "equal to" operator. More...
 

Functions

uint64_t _Timespec_Get_as_nanoseconds (const struct timespec *time)
 Get the timestamp as nanoseconds. More...
 
bool _Timespec_Is_valid (const struct timespec *time)
 Check if timespec is valid. More...
 
bool _Timespec_Less_than (const struct timespec *lhs, const struct timespec *rhs)
 The Timespec "less than" operator. More...
 
uint32_t _Timespec_Add_to (struct timespec *time, const struct timespec *add)
 Add two timespecs. More...
 
uint32_t _Timespec_To_ticks (const struct timespec *time)
 Convert timespec to number of ticks. More...
 
void _Timespec_From_ticks (uint32_t ticks, struct timespec *time)
 Convert ticks to timespec. More...
 
void _Timespec_Subtract (const struct timespec *start, const struct timespec *end, struct timespec *result)
 Subtract two timespec. More...
 
void _Timespec_Divide_by_integer (const struct timespec *time, uint32_t iterations, struct timespec *result)
 Divide timespec by an integer. More...
 
void _Timespec_Divide (const struct timespec *lhs, const struct timespec *rhs, uint32_t *ival_percentage, uint32_t *fval_percentage)
 Divide a timespec by anonther timespec. More...
 

Detailed Description

This handler encapsulates functionality related to manipulating POSIX struct timespecs.

Macro Definition Documentation

◆ _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]lhsis the left hand side timespec
[in]rhsis the right hand side timespec
Return values
Thismethod 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]_timepoints to the timespec
Return values
Thenanoseconds 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]_timepoints to the timespec
Return values
Theseconds portion of _time.

◆ _Timespec_Greater_than

#define _Timespec_Greater_than (   _lhs,
  _rhs 
)    _Timespec_Less_than( _rhs, _lhs )

The Timespec "greater than" operator.

This method is the greater than operator for timespecs.

Parameters
[in]_lhsis the left hand side timespec
[in]_rhsis the right hand side timespec
Return values
Thismethod 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]_timepoints to the timespec instance to validate.
[in]_secondsis the seconds portion of the timespec
[in]_nanosecondsis 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]_timepoints to the timespec instance to zero.

Function Documentation

◆ _Timespec_Add_to()

uint32_t _Timespec_Add_to ( struct timespec *  time,
const struct timespec *  add 
)

Add two timespecs.

This routine adds two timespecs. The second argument is added to the first.

Parameters
[in]timeis the base time to be added to
[in]addis the timespec to add to the first argument
Return values
Thismethod 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 
)

Divide a timespec by anonther timespec.

This routine divides a timespec by another timespec. The intended use is for calculating percentages to three decimal points.

Parameters
[in]lhsis the left hand number
[in]rhsis the right hand number
[in]ival_percentageis the integer portion of the average
[in]fval_percentageis the thousandths of percentage
Return values
Thismethod fills in result.

◆ _Timespec_Divide_by_integer()

void _Timespec_Divide_by_integer ( const struct timespec *  time,
uint32_t  iterations,
struct timespec *  result 
)

Divide 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
[in]timeis the total
[in]iterationsis the number of iterations
[in]resultis the average time.
Return values
Thismethod fills in result.

◆ _Timespec_From_ticks()

void _Timespec_From_ticks ( uint32_t  ticks,
struct timespec *  time 
)

Convert ticks to timespec.

This routine converts the ticks value to the corresponding timespec format time.

Parameters
[in]timeis the timespec format time result
[in]ticksis the number of ticks to convert

◆ _Timespec_Get_as_nanoseconds()

uint64_t _Timespec_Get_as_nanoseconds ( const struct timespec *  time)

Get the timestamp as nanoseconds.

This method returns the timestamp as nanoseconds.

Parameters
[in]timepoints to the timestamp.
Return values
Thetime in nanoseconds.

◆ _Timespec_Is_valid()

bool _Timespec_Is_valid ( const struct timespec *  time)

Check if timespec is valid.

This method determines the validity of a timespec.

Parameters
[in]timeis the timespec instance to validate.
Return values
Thismethod returns true if time is valid and false otherwise.

◆ _Timespec_Less_than()

bool _Timespec_Less_than ( const struct timespec *  lhs,
const struct timespec *  rhs 
)

The Timespec "less than" operator.

This method is the less than operator for timespecs.

Parameters
[in]lhsis the left hand side timespec
[in]rhsis the right hand side timespec
Return values
Thismethod returns true if lhs is less than the rhs and false otherwise.

◆ _Timespec_Subtract()

void _Timespec_Subtract ( const struct timespec *  start,
const struct timespec *  end,
struct timespec *  result 
)

Subtract two timespec.

This routine subtracts two timespecs. result is set to end - start.

Parameters
[in]startis the starting time
[in]endis the ending time
[in]resultis the difference between starting and ending time.
Return values
Thismethod fills in result.

◆ _Timespec_To_ticks()

uint32_t _Timespec_To_ticks ( const struct timespec *  time)

Convert timespec to number of ticks.

This routine convert the time timespec to the corresponding number of clock ticks.

Parameters
[in]timeis the time to be converted
Return values
Thismethod 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.