From f4ba5e54262ed2d67fdaee803a212bdafa1cf2aa Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Tue, 12 Apr 2022 19:20:51 +0200 Subject: cleanup --- zencore/filesystem.cpp | 25 +++++++++++++++++++++++++ zencore/include/zencore/filesystem.h | 4 ++++ 2 files changed, 29 insertions(+) (limited to 'zencore') diff --git a/zencore/filesystem.cpp b/zencore/filesystem.cpp index e2778089b..8e75ad773 100644 --- a/zencore/filesystem.cpp +++ b/zencore/filesystem.cpp @@ -986,6 +986,31 @@ GetRunningExecutablePath() #endif // ZEN_PLATFORM_WINDOWS } +void +InitializeOpenFileCount() +{ +#if ZEN_PLATFORM_LINUX || ZEN_PLATFORM_MAC + struct rlimit Limit; + int Error = getrlimit(RLIMIT_NOFILE, &Limit); + if (Error) + { + ZEN_WARN("failed getting rlimit RLIMIT_NOFILE, reason '{}'", zen::MakeErrorCode(Error).message()); + } + 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); + + 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()); + } + } +#endif +} + ////////////////////////////////////////////////////////////////////////// // // Testing related code follows... diff --git a/zencore/include/zencore/filesystem.h b/zencore/include/zencore/filesystem.h index d1a5f3e0c..98d2897cf 100644 --- a/zencore/include/zencore/filesystem.h +++ b/zencore/include/zencore/filesystem.h @@ -34,6 +34,10 @@ ZENCORE_API std::filesystem::path PathFromHandle(void* NativeHandle); ZENCORE_API std::filesystem::path GetRunningExecutablePath(); +/** Set the max open file handle count to max allowed for the current process on Linux and MacOS + */ +ZENCORE_API void InitializeOpenFileCount(); + struct FileContents { std::vector Data; -- cgit v1.2.3