pkgsrc/sysutils/libgtop/patches/patch-ae
jmmv 3f222a4d4a Finish move of libgtop from devel to sysutils, incomplete due to conflicts...
So I now see the package was previously here; the reason for the move is to
lighten a bit the devel category, which has lots of packages.
2004-04-02 12:13:57 +00:00

81 lines
1.8 KiB
Text

$NetBSD: patch-ae,v 1.3 2004/04/02 12:13:57 jmmv Exp $
--- sysdeps/freebsd/cpu.c.orig Sun Feb 13 16:47:58 2000
+++ sysdeps/freebsd/cpu.c
@@ -27,11 +27,16 @@
#include <glibtop_suid.h>
+#ifdef __NetBSD__
+#include <sys/sched.h>
+#endif
+
static const unsigned long _glibtop_sysdeps_cpu =
(1L << GLIBTOP_CPU_TOTAL) + (1L << GLIBTOP_CPU_USER) +
(1L << GLIBTOP_CPU_NICE) + (1L << GLIBTOP_CPU_SYS) +
(1L << GLIBTOP_CPU_IDLE) + (1L << GLIBTOP_CPU_FREQUENCY);
+#ifndef KERN_CP_TIME
/* nlist structure for kernel access */
static struct nlist nlst [] = {
#ifdef __bsdi__
@@ -41,21 +46,27 @@
#endif
{ 0 }
};
+#endif
/* MIB array for sysctl */
static int mib_length=2;
static int mib [] = { CTL_KERN, KERN_CLOCKRATE };
+#ifdef KERN_CP_TIME
+static int mib2 [] = { CTL_KERN, KERN_CP_TIME };
+#endif
/* Init function. */
void
glibtop_init_cpu_p (glibtop *server)
{
+#ifndef KERN_CP_TIME
if (kvm_nlist (server->machine.kd, nlst) < 0) {
glibtop_warn_io_r (server, "kvm_nlist (cpu)");
return;
}
+#endif
/* Set this only if kvm_nlist () succeeded. */
server->sysdeps.cpu = _glibtop_sysdeps_cpu;
}
@@ -65,7 +76,11 @@
void
glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf)
{
+#ifdef KERN_CP_TIME
+ u_int64_t cpts [CPUSTATES];
+#else
long cpts [CPUSTATES];
+#endif
/* sysctl vars*/
struct clockinfo ci;
size_t length;
@@ -78,11 +93,19 @@
if (server->sysdeps.cpu == 0)
return;
+#ifdef KERN_CP_TIME
+ length = sizeof (cpts);
+ if (sysctl (mib2, mib_length, cpts, &length, NULL, 0)) {
+ glibtop_warn_io_r (server, "sysctl");
+ return;
+ }
+#else
if (kvm_read (server->machine.kd, nlst [0].n_value,
&cpts, sizeof (cpts)) != sizeof (cpts)) {
glibtop_warn_io_r (server, "kvm_read (cp_time)");
return;
}
+#endif
/* Get the clockrate data */
length = sizeof (struct clockinfo);