|
|
|
@ -23,9 +23,12 @@ |
|
|
|
|
#include <stdlib.h> |
|
|
|
|
#include <termios.h> |
|
|
|
|
#include <unistd.h> |
|
|
|
|
#include <time.h> |
|
|
|
|
#include <errno.h> |
|
|
|
|
#include <sys/types.h> |
|
|
|
|
#include <sys/stat.h> |
|
|
|
|
#include <sys/mman.h> |
|
|
|
|
#include <linux/types.h> |
|
|
|
|
|
|
|
|
|
#include <os.h> |
|
|
|
|
|
|
|
|
@ -94,3 +97,27 @@ void *os_malloc(size_t length) |
|
|
|
|
return mmap(NULL, length, PROT_READ | PROT_WRITE, |
|
|
|
|
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void os_usleep(unsigned long usec) |
|
|
|
|
{ |
|
|
|
|
usleep(usec); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
u64 os_get_nsec(void) |
|
|
|
|
{ |
|
|
|
|
#if defined(CLOCK_MONOTONIC) && defined(_POSIX_MONOTONIC_CLOCK) |
|
|
|
|
struct timespec tp; |
|
|
|
|
if (EINVAL == clock_gettime(CLOCK_MONOTONIC, &tp)) { |
|
|
|
|
struct timeval tv; |
|
|
|
|
|
|
|
|
|
gettimeofday(&tv, NULL); |
|
|
|
|
tp.tv_sec = tv.tv_sec; |
|
|
|
|
tp.tv_nsec = tv.tv_usec * 1000; |
|
|
|
|
} |
|
|
|
|
return tp.tv_sec * 1000000000ULL + tp.tv_nsec; |
|
|
|
|
#else |
|
|
|
|
struct timeval tv; |
|
|
|
|
gettimeofday(&tv, NULL); |
|
|
|
|
return tv.tv_sec * 1000000000ULL + tv.tv_usec * 1000; |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|