util: Add os_get_page_size query

No Apple/BSD implementation yet, I have no idea how to do that

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7680>
This commit is contained in:
Jesse Natalie
2020-11-18 18:15:22 -08:00
parent 852d91edcd
commit cdf3a6a83b
2 changed files with 37 additions and 0 deletions

View File

@@ -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
}

View File

@@ -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
}