From eedd1a64d75d196adc7ccb9251a2e757a05af61d Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Wed, 2 May 2012 20:05:07 +0200 Subject: [PATCH] Make log.c figure out the physical amount of memory on Mac OS X (Thanks Marcus) --- src/log.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/log.c b/src/log.c index fd98081b..768ce92b 100644 --- a/src/log.c +++ b/src/log.c @@ -18,6 +18,10 @@ #include #include #include +#if defined(__APPLE__) +#include +#include +#endif #include "util.h" #include "log.h" @@ -93,8 +97,15 @@ void init_logging(void) { * For 512 MiB of RAM this will lead to a 5 MiB log buffer. * At the moment (2011-12-10), no testcase leads to an i3 log * of more than ~ 600 KiB. */ - long long physical_mem_bytes = (long long)sysconf(_SC_PHYS_PAGES) * - sysconf(_SC_PAGESIZE); + long long physical_mem_bytes; +#if defined(__APPLE__) + int mib[2] = { CTL_HW, HW_MEMSIZE }; + size_t length = sizeof(long long); + sysctl(mib, 2, &physical_mem_bytes, &length, NULL, 0); +#else + physical_mem_bytes = (long long)sysconf(_SC_PHYS_PAGES) * + sysconf(_SC_PAGESIZE); +#endif logbuffer_size = min(physical_mem_bytes * 0.01, shmlog_size); sasprintf(&shmlogname, "/i3-log-%d", getpid()); logbuffer_shm = shm_open(shmlogname, O_RDWR | O_CREAT | O_TRUNC, S_IREAD | S_IWRITE); -- 2.39.5