115 lines
3.4 KiB
C
115 lines
3.4 KiB
C
#ifndef CSR_TIME_H__
|
|
#define CSR_TIME_H__
|
|
/*****************************************************************************
|
|
|
|
(c) Cambridge Silicon Radio Limited 2010
|
|
All rights reserved and confidential information of CSR
|
|
|
|
Refer to LICENSE.txt included with this source for details
|
|
on the license terms.
|
|
|
|
*****************************************************************************/
|
|
|
|
#include <linux/types.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*******************************************************************************
|
|
|
|
NAME
|
|
CsrTime
|
|
|
|
DESCRIPTION
|
|
Type to hold a value describing the current system time, which is a
|
|
measure of time elapsed since some arbitrarily defined fixed time
|
|
reference, usually associated with system startup.
|
|
|
|
*******************************************************************************/
|
|
typedef u32 CsrTime;
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
NAME
|
|
CsrTimeUtc
|
|
|
|
DESCRIPTION
|
|
Type to hold a value describing a UTC wallclock time expressed in
|
|
seconds and milliseconds elapsed since midnight January 1st 1970.
|
|
|
|
*******************************************************************************/
|
|
typedef struct
|
|
{
|
|
u32 sec;
|
|
u16 msec;
|
|
} CsrTimeUtc;
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
NAME
|
|
CsrTimeGet
|
|
|
|
DESCRIPTION
|
|
Returns the current system time in a low and a high part. The low part
|
|
is expressed in microseconds. The high part is incremented when the low
|
|
part wraps to provide an extended range.
|
|
|
|
The caller may provide a NULL pointer as the high parameter. In this case
|
|
the function just returns the low part and ignores the high parameter.
|
|
|
|
Although the time is expressed in microseconds the actual resolution is
|
|
platform dependent and can be less. It is recommended that the
|
|
resolution is at least 10 milliseconds.
|
|
|
|
PARAMETERS
|
|
high - Pointer to variable that will receive the high part of the
|
|
current system time. Passing NULL is valid.
|
|
|
|
RETURNS
|
|
Low part of current system time in microseconds.
|
|
|
|
*******************************************************************************/
|
|
CsrTime CsrTimeGet(CsrTime *high);
|
|
|
|
|
|
/*------------------------------------------------------------------*/
|
|
/* CsrTime Macros */
|
|
/*------------------------------------------------------------------*/
|
|
|
|
/*----------------------------------------------------------------------------*
|
|
* NAME
|
|
* CsrTimeAdd
|
|
*
|
|
* DESCRIPTION
|
|
* Add two time values. Adding the numbers can overflow the range of a
|
|
* CsrTime, so the user must be cautious.
|
|
*
|
|
* RETURNS
|
|
* CsrTime - the sum of "t1" and "t2".
|
|
*
|
|
*----------------------------------------------------------------------------*/
|
|
#define CsrTimeAdd(t1, t2) ((t1) + (t2))
|
|
|
|
/*----------------------------------------------------------------------------*
|
|
* NAME
|
|
* CsrTimeSub
|
|
*
|
|
* DESCRIPTION
|
|
* Subtract two time values. Subtracting the numbers can provoke an
|
|
* underflow, so the user must be cautious.
|
|
*
|
|
* RETURNS
|
|
* CsrTime - "t1" - "t2".
|
|
*
|
|
*----------------------------------------------------------------------------*/
|
|
#define CsrTimeSub(t1, t2) ((s32) (t1) - (s32) (t2))
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|