Phasor 2.2.0
Stack VM based Programming Language
Loading...
Searching...
No Matches
system.c
Go to the documentation of this file.
1#include "system.h"
2
4{
5#ifdef _WIN32
6 MEMORYSTATUSEX statex;
7 statex.dwLength = sizeof(statex);
8 if (!GlobalMemoryStatusEx(&statex))
9 return 0;
10 return (size_t)statex.ullAvailPhys;
11#elif defined(__APPLE__)
12 mach_msg_type_number_t count = HOST_VM_INFO_COUNT;
13 vm_statistics_data_t vmstat;
14 if (host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vmstat, &count) != KERN_SUCCESS)
15 return 0;
16
17 natural_t available_pages = vmstat.free_count + vmstat.inactive_count;
18 vm_size_t page_size;
19 host_page_size(mach_host_self(), &page_size);
20
21 return (size_t)available_pages * (size_t)page_size;
22#else
23 long pages = sysconf(_SC_AVPHYS_PAGES);
24 long page_size = sysconf(_SC_PAGESIZE);
25 if (pages == -1 || page_size == -1)
26 return 0;
27 return (size_t)pages * (size_t)page_size;
28#endif
29}
size_t getAvailableMemory()
Definition system.c:3