From cdf3a6a83b5013dad78a3d95817cd772a146ca40 Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Wed, 18 Nov 2020 18:15:22 -0800 Subject: [PATCH] util: Add os_get_page_size query No Apple/BSD implementation yet, I have no idea how to do that Reviewed-by: Francisco Jerez Reviewed-by: Karol Herbst Part-of: --- src/util/os_misc.c | 31 +++++++++++++++++++++++++++++++ src/util/os_misc.h | 6 ++++++ 2 files changed, 37 insertions(+) diff --git a/src/util/os_misc.c b/src/util/os_misc.c index 7eb6ba48a7e..79a8b6b8850 100644 --- a/src/util/os_misc.c +++ b/src/util/os_misc.c @@ -322,3 +322,34 @@ os_get_available_system_memory(uint64_t *size) return false; #endif } + +/** + * Return the size of a page + * \param size returns the size of a page + * \return true for success, or false on failure + */ +bool +os_get_page_size(uint64_t *size) +{ +#if DETECT_OS_LINUX || DETECT_OS_CYGWIN || DETECT_OS_SOLARIS || DETECT_OS_HURD + const long page_size = sysconf(_SC_PAGE_SIZE); + + if (page_size <= 0) + return false; + + *size = (uint64_t)page_size; + return true; +#elif DETECT_OS_HAIKU + *size = (uint64_t)B_PAGE_SIZE; + return true; +#elif DETECT_OS_WINDOWS + SYSTEM_INFO SysInfo; + + GetSystemInfo(&SysInfo); + *size = SysInfo.dwPageSize; + return true; +#else +#error unexpected platform in os_sysinfo.c + return false; +#endif +} diff --git a/src/util/os_misc.h b/src/util/os_misc.h index ef474c6ee0b..432bfe1abf5 100644 --- a/src/util/os_misc.h +++ b/src/util/os_misc.h @@ -101,6 +101,12 @@ os_get_total_physical_memory(uint64_t *size); bool os_get_available_system_memory(uint64_t *size); +/* + * Size of a page + */ +bool +os_get_page_size(uint64_t *size); + #ifdef __cplusplus } -- 2.34.1