mirror of
https://github.com/pocketpy/pocketpy
synced 2025-12-06 18:20:17 +00:00
Update time.c
This commit is contained in:
parent
1d30103f6a
commit
d03610071a
@ -16,7 +16,20 @@
|
|||||||
#define NANOS_PER_SEC 1000000000
|
#define NANOS_PER_SEC 1000000000
|
||||||
|
|
||||||
#ifndef __circle__
|
#ifndef __circle__
|
||||||
|
|
||||||
int64_t time_ns() {
|
int64_t time_ns() {
|
||||||
|
#ifdef _WIN32
|
||||||
|
FILETIME system_time;
|
||||||
|
ULARGE_INTEGER large;
|
||||||
|
|
||||||
|
GetSystemTimePreciseAsFileTime(&system_time);
|
||||||
|
large.u.LowPart = system_time.dwLowDateTime;
|
||||||
|
large.u.HighPart = system_time.dwHighDateTime;
|
||||||
|
/* 11,644,473,600,000,000,000: number of nanoseconds between
|
||||||
|
the 1st january 1601 and the 1st january 1970 (369 years + 89 leap
|
||||||
|
days). */
|
||||||
|
return (large.QuadPart - 116444736000000000) * 100;
|
||||||
|
#else
|
||||||
struct timespec tms;
|
struct timespec tms;
|
||||||
#ifdef CLOCK_REALTIME
|
#ifdef CLOCK_REALTIME
|
||||||
clock_gettime(CLOCK_REALTIME, &tms);
|
clock_gettime(CLOCK_REALTIME, &tms);
|
||||||
@ -29,6 +42,7 @@ int64_t time_ns() {
|
|||||||
/* Add full nanoseconds */
|
/* Add full nanoseconds */
|
||||||
nanos += tms.tv_nsec;
|
nanos += tms.tv_nsec;
|
||||||
return nanos;
|
return nanos;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t time_monotonic_ns() {
|
int64_t time_monotonic_ns() {
|
||||||
@ -40,8 +54,7 @@ int64_t time_monotonic_ns() {
|
|||||||
if(freq.QuadPart == 0) QueryPerformanceFrequency(&freq);
|
if(freq.QuadPart == 0) QueryPerformanceFrequency(&freq);
|
||||||
/* Convert ticks to nanoseconds */
|
/* Convert ticks to nanoseconds */
|
||||||
return (ticksll * NANOS_PER_SEC) / freq.QuadPart;
|
return (ticksll * NANOS_PER_SEC) / freq.QuadPart;
|
||||||
#endif
|
#else
|
||||||
|
|
||||||
struct timespec tms;
|
struct timespec tms;
|
||||||
#ifdef CLOCK_MONOTONIC
|
#ifdef CLOCK_MONOTONIC
|
||||||
clock_gettime(CLOCK_MONOTONIC, &tms);
|
clock_gettime(CLOCK_MONOTONIC, &tms);
|
||||||
@ -54,6 +67,7 @@ int64_t time_monotonic_ns() {
|
|||||||
/* Add full nanoseconds */
|
/* Add full nanoseconds */
|
||||||
nanos += tms.tv_nsec;
|
nanos += tms.tv_nsec;
|
||||||
return nanos;
|
return nanos;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
int64_t time_ns() { return 0; }
|
int64_t time_ns() { return 0; }
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user