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