mirror of
https://git.savannah.gnu.org/git/make.git
synced 2025-02-06 22:45:27 +00:00
(getloadavg): Add new code for SUNOS_5 to use -lkstat.
This commit is contained in:
parent
e2da48ca55
commit
5206d3f2bc
1 changed files with 45 additions and 0 deletions
45
getloadavg.c
45
getloadavg.c
|
@ -391,6 +391,7 @@ extern int errno;
|
||||||
#ifdef SUNOS_5
|
#ifdef SUNOS_5
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <kvm.h>
|
#include <kvm.h>
|
||||||
|
#include <kstat.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef KERNEL_FILE
|
#ifndef KERNEL_FILE
|
||||||
|
@ -516,6 +517,50 @@ getloadavg (loadavg, nelem)
|
||||||
elem = -1;
|
elem = -1;
|
||||||
#endif
|
#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__)
|
#if !defined (LDAV_DONE) && defined (__linux__)
|
||||||
#define LDAV_DONE
|
#define LDAV_DONE
|
||||||
#undef LOAD_AVE_TYPE
|
#undef LOAD_AVE_TYPE
|
||||||
|
|
Loading…
Reference in a new issue