in FreeRTOS-Plus-POSIX/source/FreeRTOS_POSIX_utils.c [62:99]
int UTILS_AbsoluteTimespecToDeltaTicks( const struct timespec * const pxAbsoluteTime,
const struct timespec * const pxCurrentTime,
TickType_t * const pxResult )
{
int iStatus = 0;
struct timespec xDifference = { 0 };
/* Check parameters. */
if( ( pxAbsoluteTime == NULL ) || ( pxCurrentTime == NULL ) || ( pxResult == NULL ) )
{
iStatus = EINVAL;
}
/* Calculate the difference between the current time and absolute time. */
if( iStatus == 0 )
{
iStatus = UTILS_TimespecSubtract( pxAbsoluteTime, pxCurrentTime, &xDifference );
if( iStatus == 1 )
{
/* pxAbsoluteTime was in the past. */
iStatus = ETIMEDOUT;
}
else if( iStatus == -1 )
{
/* error */
iStatus = EINVAL;
}
}
/* Convert the time difference to ticks. */
if( iStatus == 0 )
{
iStatus = UTILS_TimespecToTicks( &xDifference, pxResult );
}
return iStatus;
}