aboutsummaryrefslogtreecommitdiff
path: root/zencore
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2022-04-26 10:46:38 +0200
committerDan Engelbrecht <[email protected]>2022-04-26 10:46:38 +0200
commitbd5b1a15f65f2fde3721acd16ce3a316c03583ea (patch)
treedfa0acea7237697cbdf14a1fa2bc121a060f6ec7 /zencore
parentMerge branch 'main' into de/cache-with-block-store (diff)
parentCompute tweaks (#78) (diff)
downloadzen-bd5b1a15f65f2fde3721acd16ce3a316c03583ea.tar.xz
zen-bd5b1a15f65f2fde3721acd16ce3a316c03583ea.zip
Merge remote-tracking branch 'origin/main' into de/cache-with-block-store
Diffstat (limited to 'zencore')
-rw-r--r--zencore/compactbinary.cpp19
-rw-r--r--zencore/filesystem.cpp17
-rw-r--r--zencore/include/zencore/compactbinary.h1
3 files changed, 26 insertions, 11 deletions
diff --git a/zencore/compactbinary.cpp b/zencore/compactbinary.cpp
index 31d449c41..ffc1da10c 100644
--- a/zencore/compactbinary.cpp
+++ b/zencore/compactbinary.cpp
@@ -60,22 +60,27 @@ GetPlatformToDateTimeBiasInSeconds()
return uint64_t(double(PlatformEpochYear - DateTimeEpochYear) * 365.2425) * 86400;
}
-DateTime
-DateTime::Now()
+uint64_t
+DateTime::NowTicks()
{
- static const uint64_t EpochBias = GetPlatformToDateTimeBiasInSeconds();
- static const uint64_t SecsTo100nsTicks = int64_t(10e9 / 100);
+ static constexpr uint64_t EpochBias = GetPlatformToDateTimeBiasInSeconds();
#if ZEN_PLATFORM_WINDOWS
FILETIME SysTime;
- GetSystemTimeAsFileTime(&SysTime);
- return DateTime{(EpochBias * SecsTo100nsTicks) + (uint64_t(SysTime.dwHighDateTime) << 32) | SysTime.dwLowDateTime};
+ GetSystemTimePreciseAsFileTime(&SysTime);
+ return (EpochBias * TimeSpan::TicksPerSecond) + ((uint64_t(SysTime.dwHighDateTime) << 32) | SysTime.dwLowDateTime);
#else
int64_t SecondsSinceUnixEpoch = time(nullptr);
- return DateTime{(EpochBias + SecondsSinceUnixEpoch) * SecsTo100nsTicks};
+ return (EpochBias + SecondsSinceUnixEpoch) * TimeSpan::TicksPerSecond;
#endif
}
+DateTime
+DateTime::Now()
+{
+ return DateTime{NowTicks()};
+}
+
void
DateTime::Set(int Year, int Month, int Day, int Hour, int Minute, int Second, int MilliSecond)
{
diff --git a/zencore/filesystem.cpp b/zencore/filesystem.cpp
index 7ff0dc45c..437741161 100644
--- a/zencore/filesystem.cpp
+++ b/zencore/filesystem.cpp
@@ -993,7 +993,7 @@ MaximizeOpenFileCount()
{
#if ZEN_PLATFORM_LINUX || ZEN_PLATFORM_MAC
struct rlimit Limit;
- int Error = getrlimit(RLIMIT_NOFILE, &Limit);
+ int Error = getrlimit(RLIMIT_NOFILE, &Limit);
if (Error)
{
ZEN_WARN("failed getting rlimit RLIMIT_NOFILE, reason '{}'", zen::MakeErrorCode(Error).message());
@@ -1001,13 +1001,22 @@ MaximizeOpenFileCount()
else
{
struct rlimit NewLimit = Limit;
- NewLimit.rlim_cur = NewLimit.rlim_max;
- ZEN_INFO("changing RLIMIT_NOFILE from rlim_cur = {}, rlim_max {} to rlim_cur = {}, rlim_max {}", Limit.rlim_cur, Limit.rlim_max, NewLimit.rlim_cur, NewLimit.rlim_max);
+ NewLimit.rlim_cur = NewLimit.rlim_max;
+ ZEN_INFO("changing RLIMIT_NOFILE from rlim_cur = {}, rlim_max {} to rlim_cur = {}, rlim_max {}",
+ Limit.rlim_cur,
+ Limit.rlim_max,
+ NewLimit.rlim_cur,
+ NewLimit.rlim_max);
Error = setrlimit(RLIMIT_NOFILE, &NewLimit);
if (Error != 0)
{
- ZEN_WARN("failed to set RLIMIT_NOFILE limits from rlim_cur = {}, rlim_max {} to rlim_cur = {}, rlim_max {}, reason '{}'", Limit.rlim_cur, Limit.rlim_max, NewLimit.rlim_cur, NewLimit.rlim_max, zen::MakeErrorCode(Error).message());
+ ZEN_WARN("failed to set RLIMIT_NOFILE limits from rlim_cur = {}, rlim_max {} to rlim_cur = {}, rlim_max {}, reason '{}'",
+ Limit.rlim_cur,
+ Limit.rlim_max,
+ NewLimit.rlim_cur,
+ NewLimit.rlim_max,
+ zen::MakeErrorCode(Error).message());
}
}
#endif
diff --git a/zencore/include/zencore/compactbinary.h b/zencore/include/zencore/compactbinary.h
index 25fd4a7b2..19f1597dc 100644
--- a/zencore/include/zencore/compactbinary.h
+++ b/zencore/include/zencore/compactbinary.h
@@ -43,6 +43,7 @@ public:
inline uint64_t GetTicks() const { return Ticks; }
+ static uint64_t NowTicks();
static DateTime Now();
int GetYear() const;