mirror of
https://github.com/idris-lang/Idris2.git
synced 2024-12-22 11:13:36 +03:00
53 lines
863 B
C
53 lines
863 B
C
|
#include "clock.h"
|
||
|
|
||
|
#define NSEC_PER_SEC 1000000000
|
||
|
#define CLOCKS_PER_NSEC ((float)(CLOCKS_PER_SEC / NSEC_PER_SEC))
|
||
|
|
||
|
Value *clockTimeMonotonic()
|
||
|
{
|
||
|
return clockTimeUtc();
|
||
|
}
|
||
|
|
||
|
Value *clockTimeUtc()
|
||
|
{
|
||
|
return (Value *)makeInt64(time(NULL) * NSEC_PER_SEC);
|
||
|
}
|
||
|
|
||
|
Value *clockTimeProcess()
|
||
|
{
|
||
|
uint64_t time_ns = clock() / CLOCKS_PER_NSEC;
|
||
|
return (Value *)makeInt64(time_ns);
|
||
|
}
|
||
|
|
||
|
Value *clockTimeThread()
|
||
|
{
|
||
|
return clockTimeProcess();
|
||
|
}
|
||
|
|
||
|
Value *clockTimeGcCpu()
|
||
|
{
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
Value *clockTimeGcReal()
|
||
|
{
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
int clockValid(Value *clock)
|
||
|
{
|
||
|
return clock != NULL;
|
||
|
}
|
||
|
|
||
|
uint64_t clockSecond(Value *clock)
|
||
|
{
|
||
|
uint64_t totalNano = ((Value_Int64 *)clock)->i64;
|
||
|
return totalNano / NSEC_PER_SEC;
|
||
|
}
|
||
|
|
||
|
uint64_t clockNanosecond(Value *clock)
|
||
|
{
|
||
|
uint64_t totalNano = ((Value_Int64 *)clock)->i64;
|
||
|
return totalNano % NSEC_PER_SEC;
|
||
|
}
|