tag 665999 + patch
quit
Michael Biebl writes:
> Source: gnome-system-monitor
> procproperties.cpp:27:23: fatal error: asm/param.h: No such file or directory
Needed for the HZ macro.
Reading why this would be needed, diving into libgtop. This is basically
for reading the rtime field of glibtop_proc_time which is filled on
linux by reading from /proc/stat
/* clock_t (1/100 s) */
buf->utime = strtoull (p, &p, 0);
buf->stime = strtoull (p, &p, 0);
buf->rtime = buf->utime + buf->stime;
So seemingly non-normalized values
but on freebsd with
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
if ((pinfo == NULL) || (count != 1)) {
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
glibtop_suid_leave (server);
return;
}
glibtop_suid_leave (server);
buf->rtime = pinfo [0].ki_runtime * 1e-6;
len = sizeof (ci);
if (sysctlbyname ("kern.clockrate", &ci, &len, NULL, 0)) {
glibtop_warn_io_r (server, "sysctl (kern.clockrate) (%d)", pid);
glibtop_suid_leave (server);
return;
}
buf->frequency = (ci.stathz ? ci.stathz : ci.hz);
buf->flags = _glibtop_sysdeps_proc_time;
buf->rtime *= buf->frequency;
where kvm_getprocs is, according to [0], returning the value in
microsecs which is then normalized away with * 1e-6 and then again
multiplied by sysctl kernel.clockrate field stathz
kern.clockrate: { hz = 1000, tick = 1000, profhz = 8128, stathz = 127 }
so 127.
Please everyone recheck my math here, it's nearly 1 am in the morning
here ;-)
[0] http://bintree.net/freebsd/d8/ddb/user_8h_source.html#l00139
--- gnome-system-monitor-3.4.0.orig/src/procproperties.cpp
+++ gnome-system-monitor-3.4.0/src/procproperties.cpp
@@ -24,7 +24,14 @@
#include
#include
#include
+#ifdef __linux__
#include
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#include
+#include
+#include
+#include
+#endif
#include "procman.h"
#include "procproperties.h"
@@ -106,6 +113,21 @@ fill_proc_properties (GtkWidget *tree, P
{
guint i;
GtkListStore *store;
+guint hz;
+
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+struct clockinfo ci;
+size_t len;
+
+len = sizeof (ci);
+if (sysctlbyname ("kern.clockrate", &ci, &len, NULL, 0)) {
+assert(false);
+}
+
+hz = (ci.stathz ? ci.stathz : ci.hz);
+#elif defined (__linux__)
+hz = HZ;
+#endif
get_process_memory_info(info);
@@ -120,7 +142,7 @@ fill_proc_properties (GtkWidget *tree, P
{ N_("Shared Memory"), format_memsize(info->memshared)},
{ N_("X Server Memory"), format_memsize(info->memxserver)},
{ N_("CPU"), g_strdup_printf("%d%%", info->pcpu)},
-{ N_("CPU Time"), g_strdup_printf(ngettext("%lld second", "%lld
seconds", info->cpu_time/HZ), (unsigned long long)info->cpu_time/HZ) },
+{ N_("CPU Time"), g_strdup_printf(ngettext("%lld second", "%lld
seconds", info->cpu_time/hz), (unsigned long long)info->cpu_time/hz) },
{ N_("Started"), g_strdup_printf("%s", ctime((const
time_t*)(&info->start_time)))},
{ N_("Nice"), g_strdup_printf("%d", info->nice)},
{ N_("Priority"), g_strdup_printf("%s",
procman::get_nice_level(info->nice)) },
--
9FED 5C6C E206 B70A 5857 70CA 9655 22B9 D49A E731
Debian Developer | Lisp Hacker | CaCert Assurer
--
To UNSUBSCRIBE, email to debian-bsd-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/87d37w2w7l@hepworth.siccegge.de