From: Michael Stapelberg Date: Wed, 2 May 2012 18:05:07 +0000 (+0200) Subject: Make log.c figure out the physical amount of memory on Mac OS X (Thanks Marcus) X-Git-Tag: 4.3~236^2~2 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=eedd1a64d75d196adc7ccb9251a2e757a05af61d;p=i3%2Fi3 Make log.c figure out the physical amount of memory on Mac OS X (Thanks Marcus) --- 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);