aboutsummaryrefslogtreecommitdiffstats
path: root/src/getloadavg.c
diff options
context:
space:
mode:
authorRichard M. Stallman1996-09-10 19:50:17 +0000
committerRichard M. Stallman1996-09-10 19:50:17 +0000
commit4e98d4faa2002c6a574f7fab038ccea1ea9947e8 (patch)
treeede60ce836230bb542b4c226fc7621dac7d70a4e /src/getloadavg.c
parentfe42a9200c0a8c7f627ef7520611715eae822562 (diff)
downloademacs-4e98d4faa2002c6a574f7fab038ccea1ea9947e8.tar.gz
emacs-4e98d4faa2002c6a574f7fab038ccea1ea9947e8.zip
(getloadavg): Add new code for SUNOS_5 to use -lkstat.
Diffstat (limited to 'src/getloadavg.c')
-rw-r--r--src/getloadavg.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/getloadavg.c b/src/getloadavg.c
index 1285408b875..2411e6a9225 100644
--- a/src/getloadavg.c
+++ b/src/getloadavg.c
@@ -391,6 +391,7 @@ extern int errno;
391#ifdef SUNOS_5 391#ifdef SUNOS_5
392#include <fcntl.h> 392#include <fcntl.h>
393#include <kvm.h> 393#include <kvm.h>
394#include <kstat.h>
394#endif 395#endif
395 396
396#ifndef KERNEL_FILE 397#ifndef KERNEL_FILE
@@ -516,6 +517,50 @@ getloadavg (loadavg, nelem)
516 elem = -1; 517 elem = -1;
517#endif 518#endif
518 519
520#if !defined (LDAV_DONE) && defined (SUNOS_5)
521/* Use libkstat because we don't have to be root. */
522#define LDAV_DONE
523 kstat_ctl_t *kc;
524 kstat_t *ksp;
525 kstat_named_t *kn;
526
527 kc = kstat_open ();
528 if (kc == 0) return -1;
529 ksp = kstat_lookup (kc, "unix", 0, "system_misc");
530 if (ksp == 0 ) return -1;
531 if (kstat_read (kc, ksp, 0) == -1) return -1;
532
533
534 kn = kstat_data_lookup (ksp, "avenrun_1min");
535 if (kn == 0)
536 {
537 /* Return -1 if no load average information is available. */
538 nelem = 0;
539 elem = -1;
540 }
541
542 if (nelem >= 1)
543 loadavg[elem++] = (double) kn->value.ul/FSCALE;
544
545 if (nelem >= 2)
546 {
547 kn = kstat_data_lookup (ksp, "avenrun_5min");
548 if (kn != 0)
549 {
550 loadavg[elem++] = (double) kn->value.ul/FSCALE;
551
552 if (nelem >= 3)
553 {
554 kn = kstat_data_lookup (ksp, "avenrun_15min");
555 if (kn != 0)
556 loadavg[elem++] = (double) kn->value.ul/FSCALE;
557 }
558 }
559 }
560
561 kstat_close (kc);
562#endif /* SUNOS_5 */
563
519#if !defined (LDAV_DONE) && defined (__linux__) 564#if !defined (LDAV_DONE) && defined (__linux__)
520#define LDAV_DONE 565#define LDAV_DONE
521#undef LOAD_AVE_TYPE 566#undef LOAD_AVE_TYPE