diff options
| author | Richard M. Stallman | 1996-09-10 19:50:17 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1996-09-10 19:50:17 +0000 |
| commit | 4e98d4faa2002c6a574f7fab038ccea1ea9947e8 (patch) | |
| tree | ede60ce836230bb542b4c226fc7621dac7d70a4e | |
| parent | fe42a9200c0a8c7f627ef7520611715eae822562 (diff) | |
| download | emacs-4e98d4faa2002c6a574f7fab038ccea1ea9947e8.tar.gz emacs-4e98d4faa2002c6a574f7fab038ccea1ea9947e8.zip | |
(getloadavg): Add new code for SUNOS_5 to use -lkstat.
| -rw-r--r-- | src/getloadavg.c | 45 |
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 |