1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-02-01 20:06:00 +00:00

(getloadavg): Add new code for SUNOS_5 to use -lkstat.

This commit is contained in:
Richard M. Stallman 1996-09-10 19:50:17 +00:00
parent fe42a9200c
commit 4e98d4faa2

View File

@ -391,6 +391,7 @@ extern int errno;
#ifdef SUNOS_5
#include <fcntl.h>
#include <kvm.h>
#include <kstat.h>
#endif
#ifndef KERNEL_FILE
@ -516,6 +517,50 @@ getloadavg (loadavg, nelem)
elem = -1;
#endif
#if !defined (LDAV_DONE) && defined (SUNOS_5)
/* Use libkstat because we don't have to be root. */
#define LDAV_DONE
kstat_ctl_t *kc;
kstat_t *ksp;
kstat_named_t *kn;
kc = kstat_open ();
if (kc == 0) return -1;
ksp = kstat_lookup (kc, "unix", 0, "system_misc");
if (ksp == 0 ) return -1;
if (kstat_read (kc, ksp, 0) == -1) return -1;
kn = kstat_data_lookup (ksp, "avenrun_1min");
if (kn == 0)
{
/* Return -1 if no load average information is available. */
nelem = 0;
elem = -1;
}
if (nelem >= 1)
loadavg[elem++] = (double) kn->value.ul/FSCALE;
if (nelem >= 2)
{
kn = kstat_data_lookup (ksp, "avenrun_5min");
if (kn != 0)
{
loadavg[elem++] = (double) kn->value.ul/FSCALE;
if (nelem >= 3)
{
kn = kstat_data_lookup (ksp, "avenrun_15min");
if (kn != 0)
loadavg[elem++] = (double) kn->value.ul/FSCALE;
}
}
}
kstat_close (kc);
#endif /* SUNOS_5 */
#if !defined (LDAV_DONE) && defined (__linux__)
#define LDAV_DONE
#undef LOAD_AVE_TYPE