home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.mayn.de
/
ftp.mayn.de-pub.zip
/
ftp.mayn.de-pub
/
apple
/
apple_unix
/
Daemons
/
INN.loadave.c.-cc
< prev
next >
Wrap
Text File
|
2017-03-06
|
1KB
|
66 lines
/* $Revision: 1.3 $
**
*/
#include "nnrpd.h"
#if NNRP_LOADLIMIT > 0
#include <nlist.h>
#if 0
STATIC struct nlist NameList[] = {
{ "_avenrun" },
#define X_AVENRUN 0
{ NULL }
};
#endif
STATIC struct nlist NameList[2];
#define X_AVENRUN 0
/*
** Get the current load average as an integer.
*/
int
GetLoadAverage()
{
int fd;
int oerrno;
#if defined(FSCALE)
long avenrun[3];
#else
double avenrun[3];
#endif /* defined(FSCALE) */
fd = open("/dev/kmem", 0, 0);
if (fd < 0)
return -1;
strcpy(NameList[0]._n._n_name, "_avenrun");
NameList[0]._n._n_name[0] = NULL;
#if defined(HPUX)
(void)nlist("/hp-ux", NameList);
#else
#if defined(SUNOS5)
(void)nlist("/dev/ksyms", NameList);
#else
(void)nlist("/vmunix", NameList);
#endif /* defined(SUNOS5) */
#endif /* !defined(HPUX) */
if (NameList[0].n_type == 0
|| lseek(fd, (off_t) NameList[X_AVENRUN].n_value, SEEK_SET) == -1
|| read(fd, (char *)avenrun, sizeof avenrun) != sizeof avenrun) {
oerrno = errno;
(void)close(fd);
errno = oerrno;
return -1;
}
(void)close(fd);
#if defined(FSCALE)
return (int)(avenrun[0] + FSCALE / 2) >> FSHIFT;
#else
return (int)(avenrun[0] + 0.5);
#endif /* defined(FSCALE) */
}
#endif /* NNRP_LOADLIMIT > 0 */