| 1 | /************************************************* |
| 2 | * Exim - an Internet mail transport agent * |
| 3 | *************************************************/ |
| 4 | |
| 5 | /* Copyright (c) University of Cambridge 2001 */ |
| 6 | /* See the file NOTICE for conditions of use and distribution. */ |
| 7 | |
| 8 | /* OSF1-specific code. This is concatenated onto the generic src/os.c file. |
| 9 | OSF1 has an apparently unique way of getting the load average, so we provide a |
| 10 | unique function here, and define OS_LOAD_AVERAGE to stop src/os.c trying to |
| 11 | provide the function. The macro may be set initially anyway, when compiling os. |
| 12 | for utilities that don't want this function. */ |
| 13 | |
| 14 | #ifndef OS_LOAD_AVERAGE |
| 15 | #define OS_LOAD_AVERAGE |
| 16 | |
| 17 | #include <sys/table.h> |
| 18 | |
| 19 | int |
| 20 | os_getloadavg(void) |
| 21 | { |
| 22 | double avg; |
| 23 | struct tbl_loadavg load_avg; |
| 24 | |
| 25 | table (TBL_LOADAVG, 0, &load_avg, 1, sizeof (load_avg)); |
| 26 | |
| 27 | avg = (load_avg.tl_lscale == 0)? |
| 28 | load_avg.tl_avenrun.d[0] : |
| 29 | (load_avg.tl_avenrun.l[0] / (double)load_avg.tl_lscale); |
| 30 | |
| 31 | return (int)(avg * 1000.0); |
| 32 | } |
| 33 | |
| 34 | #endif /* OS_LOAD_AVERAGE */ |
| 35 | |
| 36 | /* End of os.c-OSF1 */ |