1 diff -urN monit-4.0.org/process/sysdep_LINUX.c monit-4.0/process/sysdep_LINUX.c
2 --- monit-4.0.org/process/sysdep_LINUX.c 2003-09-08 19:20:44.000000000 +0200
3 +++ monit-4.0/process/sysdep_LINUX.c 2003-09-08 19:26:46.000000000 +0200
8 -#define PAGE_TO_KBYTE_SHIFT PAGE_SHIFT-10
9 +#define PAGE_TO_KBYTE_SHIFT PAGE_SHIFT-10
10 +#define FREEMEM "MemFree:"
11 +#define FREESWAP "SwapFree:"
13 int init_process_info_sysdep(void) {
18 + char buf[1024], *ptr1, *ptr2;
20 - /* I hope this is okay hack to get the total memsize. (-: */
21 + if ((memfd = open("/proc/meminfo", O_RDONLY)) == -1) {
25 - if ( stat("/proc/kcore", &buf) != 0 ) {
27 + if (read(memfd, buf, sizeof(buf)) < 0) {
35 + ptr1 = strstr(buf, FREEMEM);
36 + ptr2 = strstr(buf, FREESWAP);
38 + if (!ptr1 || !ptr2) {
42 - num_cpus= sysconf(_SC_NPROCESSORS_CONF);
43 + /* we only care about integer values */
44 + mem_kbyte_max = atoi(ptr1+strlen(FREEMEM)) /* + atoi(ptr2+strlen(FREESWAP)) */ ;
46 - mem_kbyte_max = buf.st_size>>10;
47 + num_cpus= sysconf(_SC_NPROCESSORS_CONF);