POSIX Clock 的实现:
int clock_settime
(
clockid_t clock_id, /* clock ID */
const struct timespec * tp /* time to set */
)
{
if (clock_id == CLOCK_REALTIME)
{
SPIN_LOCK_ISR_TAKE (&clockLock);
_clockRealtime.tickBase = AbsTicksGet ();
_clockRealtime.timeBase = *tp;
SPIN_LOCK_ISR_GIVE (&clockLock);
}
...
}
int clock_gettime
(
clockid_t clock_id, /* clock ID */
struct timespec * tp /* where to store current time */
)
{
if (clock_id == CLOCK_REALTIME)
{
SPIN_LOCK_ISR_TAKE (&clockLock);
diffTicks = TicksGet () - _clockRealtime.tickBase;
timeBase = _clockRealtime.timeBase;
SPIN_LOCK_ISR_GIVE (&clockLock);
}
...
}
int clock_settime
(
clockid_t clock_id, /* clock ID */
const struct timespec * tp /* time to set */
)
{
if (clock_id == CLOCK_REALTIME)
{
SPIN_LOCK_ISR_TAKE (&clockLock);
_clockRealtime.tickBase = AbsTicksGet ();
_clockRealtime.timeBase = *tp;
SPIN_LOCK_ISR_GIVE (&clockLock);
}
...
}
int clock_gettime
(
clockid_t clock_id, /* clock ID */
struct timespec * tp /* where to store current time */
)
{
if (clock_id == CLOCK_REALTIME)
{
SPIN_LOCK_ISR_TAKE (&clockLock);
diffTicks = TicksGet () - _clockRealtime.tickBase;
timeBase = _clockRealtime.timeBase;
SPIN_LOCK_ISR_GIVE (&clockLock);
}
...
}