master
c 38 lines 764 Bytes
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #include "get_system_pagesize.h"
4
5 #if defined(OS_WINDOWS)
6 #include <windows.h>
7
8 size_t os_get_system_page_size(void) {
9 static size_t page_size = 0;
10
11 if (!page_size) {
12 SYSTEM_INFO sys_info;
13 GetSystemInfo(&sys_info);
14
15 // Set the page size, default to 4096 if for some reason it's invalid
16 page_size = (sys_info.dwPageSize >= 4096) ? sys_info.dwPageSize : 4096;
17 }
18
19 return page_size;
20 }
21
22 #else
23
24 #include <unistd.h>
25
26 size_t os_get_system_page_size(void) {
27 static long int page_size = 0;
28
29 if(unlikely(!page_size)) {
30 page_size = sysconf(_SC_PAGE_SIZE);
31 if (unlikely(page_size <= 4096))
32 page_size = 4096;
33 }
34
35 return page_size;
36 }
37
38 #endif