/* $Cambridge: exim/src/OS/os.c-Linux-libc5,v 1.1 2004/10/06 15:07:39 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * *************************************************/ /* Copyright (c) University of Cambridge 2001 */ /* See the file NOTICE for conditions of use and distribution. */ /* Linux-specific code. This is concatenated onto the generic src/os.c file. Linux has an apparently unique way of getting the load average, so we provide a unique function here, and define OS_LOAD_AVERAGE to stop src/os.c trying to provide the function. The macro may be set initially anyway, when compiling os. for utilities that don't want this function. */ #ifndef OS_LOAD_AVERAGE #define OS_LOAD_AVERAGE int os_getloadavg(void) { char buffer[40]; double avg; int count; int fd = open ("/proc/loadavg", O_RDONLY); if (fd == -1) return -1; count = read (fd, buffer, sizeof(buffer)); (void)close (fd); if (count <= 0) return -1; count = sscanf (buffer, "%lf", &avg); if (count < 1) return -1; return (int)(avg * 1000.0); } #endif /* OS_LOAD_AVERAGE */ /* End of os.c-Linux */