diff options
author | Roland McGrath <roland@redhat.com> | 1993-10-03 19:33:04 +0000 |
---|---|---|
committer | Roland McGrath <roland@redhat.com> | 1993-10-03 19:33:04 +0000 |
commit | 492f92b9ec1178dd0e078106114ac0ed29940eba (patch) | |
tree | 8575cbb10e600cc9a2d30e70d18f7790b6afefd2 | |
parent | cc5be7c0cd7f22b96f6b75ed2edd05ede457a7cc (diff) | |
download | gunmake-492f92b9ec1178dd0e078106114ac0ed29940eba.tar.gz |
*** empty log message ***
-rw-r--r-- | getloadavg.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/getloadavg.c b/getloadavg.c index ad79231..d94d589 100644 --- a/getloadavg.c +++ b/getloadavg.c @@ -51,6 +51,7 @@ VMS __linux__ Linux: assumes /proc filesystem mounted. Support from Michael K. Johnson. + __NetBSD__ NetBSD: assumes /kern filesystem mounted. In addition, to avoid nesting many #ifdefs, we internally set LDAV_DONE to indicate that the load average has been computed. @@ -511,6 +512,35 @@ getloadavg (loadavg, nelem) #endif /* __linux__ */ +#if !defined (LDAV_DONE) && defined (__NetBSD__) +#define LDAV_DONE +#undef LOAD_AVE_TYPE + +#ifndef NETBSD_LDAV_FILE +#define NETBSD_LDAV_FILE "/kern/loadavg" +#endif + + unsigned long int load_ave[3], scale; + int count; + FILE *fp; + + fp = fopen (LINUX_LDAV_FILE, "r"); + if (fp == NULL) + return -1; + count = fscanf (fp, "%lu %lu %lu %lu\n", + &load_ave[0], &load_ave[1], &load_ave[2], + &scale); + (void) fclose (fp); + if (count != 4) + return -1; + + for (elem = 0; elem < nelem; elem++) + loadavg[elem] = (double) load_ave[elem] / (double) scale; + + return elem; + +#endif /* __NetBSD__ */ + #if !defined (LDAV_DONE) && defined (NeXT) #define LDAV_DONE /* The NeXT code was adapted from iscreen 3.2. */ |