1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #include <pte_osal.h>
- #include "pthread.h"
- #include "implement.h"
- unsigned int
- pte_relmillisecs (const struct timespec * abstime)
- {
- const long long NANOSEC_PER_MILLISEC = 1000000;
- const long long MILLISEC_PER_SEC = 1000;
- unsigned int milliseconds;
- long long tmpAbsMilliseconds;
- long tmpCurrMilliseconds;
- struct timeb currSysTime;
-
-
- tmpAbsMilliseconds = (int64_t)abstime->tv_sec * MILLISEC_PER_SEC;
- tmpAbsMilliseconds += ((int64_t)abstime->tv_nsec + (NANOSEC_PER_MILLISEC/2)) / NANOSEC_PER_MILLISEC;
-
- _ftime(&currSysTime);
- tmpCurrMilliseconds = (int64_t) currSysTime.time * MILLISEC_PER_SEC;
- tmpCurrMilliseconds += (int64_t) currSysTime.millitm;
- if (tmpAbsMilliseconds > tmpCurrMilliseconds)
- {
- milliseconds = (unsigned int) (tmpAbsMilliseconds - tmpCurrMilliseconds);
- if (milliseconds == 0xFFFFFFFF)
- {
-
- milliseconds--;
- }
- }
- else
- {
-
- milliseconds = 0;
- }
- return milliseconds;
- }
|