Initial commit

This commit is contained in:
2026-04-03 00:22:39 -05:00
commit eca1e8c458
945 changed files with 218160 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
/*
SST_Time_POSIX.c
Author: Patrick Baggett <ptbaggett@762studios.com>
Created: 5/29/2013
Purpose:
libsst-os timing functions for POSIX systems
License:
This program is free software. It comes without any warranty, to
the extent permitted by applicable law. You can redistribute it
and/or modify it under the terms of the Do What The Fuck You Want
To Public License, Version 2, as published by Sam Hocevar. See
http://sam.zoy.org/wtfpl/COPYING for more details.
*/
/*
Sadly, MacOS X does not implement clock_gettime(), so it has its own file
*/
#include <SST/SST_Time.h>
#include <time.h>
struct timespec freq;
static clockid_t timeSource =
#if defined(CLOCK_MONOTONIC_RAW) /* Linux >= 2.6.28 */
CLOCK_MONOTONIC_RAW;
#else
CLOCK_MONOTONIC;
#endif
int __libsst_init_time()
{
struct timespec v;
int clkOk = (clock_gettime(timeSource, &v) > 0);
if(!clkOk)
{
#if defined(CLOCK_MONOTONIC_RAW)
timeSource = CLOCK_MONOTONIC;
clkOk = (clock_gettime(timeSource, &v) > 0);
if(!clkOk)
#else
timeSource = CLOCK_REALTIME;
#endif
if(clock_gettime(timeSource, &v) < 0)
return 0;
}
return 1;
}
uint64_t SST_OS_GetMicroTime()
{
struct timespec v;
clock_gettime(timeSource, &v);
return (uint64_t)((v.tv_sec * 1000000) + (v.tv_nsec / 1000));
}
uint64_t SST_OS_GetMilliTime() /* Not be confused with Miller Time (TM) :D */
{
struct timespec v;
clock_gettime(timeSource, &v);
return (uint64_t)((v.tv_sec * 1000) + (v.tv_nsec / 1000000));
}
double SST_OS_GetFloatingTime()
{
struct timespec v;
clock_gettime(timeSource, &v);
return (double)v.tv_sec + (v.tv_nsec / 1000000000.0);
}