summaryrefslogtreecommitdiff
path: root/devel/libgtop2/files/patch-sysdeps::freebsd::proctime.c
diff options
context:
space:
mode:
Diffstat (limited to 'devel/libgtop2/files/patch-sysdeps::freebsd::proctime.c')
-rw-r--r--devel/libgtop2/files/patch-sysdeps::freebsd::proctime.c131
1 files changed, 13 insertions, 118 deletions
diff --git a/devel/libgtop2/files/patch-sysdeps::freebsd::proctime.c b/devel/libgtop2/files/patch-sysdeps::freebsd::proctime.c
index 8905fd21ba83..37b5b56df49a 100644
--- a/devel/libgtop2/files/patch-sysdeps::freebsd::proctime.c
+++ b/devel/libgtop2/files/patch-sysdeps::freebsd::proctime.c
@@ -1,30 +1,20 @@
---- sysdeps/freebsd/proctime.c.orig Thu Feb 15 06:36:42 2001
-+++ sysdeps/freebsd/proctime.c Tue Sep 9 11:17:56 2003
-@@ -57,6 +57,7 @@
- * system, and interrupt time usage.
- */
+--- sysdeps/freebsd/proctime.c.orig Wed Mar 10 21:23:52 2004
++++ sysdeps/freebsd/proctime.c Thu Mar 11 15:47:35 2004
+@@ -59,6 +59,7 @@
+
+ #ifndef __FreeBSD__
+#ifndef __FreeBSD__
static void
calcru(p, up, sp, ip)
struct proc *p;
-@@ -66,9 +67,6 @@
- {
- quad_t totusec;
- u_quad_t u, st, ut, it, tot;
--#if (__FreeBSD_version < 300003)
-- long sec, usec;
--#endif
- struct timeval tv;
-
- st = p->p_sticks;
-@@ -81,19 +79,10 @@
+@@ -81,19 +82,10 @@
tot = 1;
}
-#if (defined __FreeBSD__) && (__FreeBSD_version >= 300003)
-
-- /* This was changed from a `struct timeval' into a `u_int64_t'
+- /* This was changed from a `struct timeval' into a `guint64'
- * on FreeBSD 3.0 and renamed p_rtime -> p_runtime.
- */
-
@@ -38,116 +28,21 @@
if (totusec < 0) {
/* XXX no %qd in kernel. Truncate. */
-@@ -116,6 +105,7 @@
+@@ -116,6 +108,7 @@
ip->tv_usec = it % 1000000;
}
}
+#endif
- /* Provides detailed information about a process. */
+ #endif /* !__FreeBSD__ */
-@@ -132,9 +122,6 @@
+@@ -133,9 +126,6 @@
+ #endif
struct pstats pstats;
int count;
-
+-
- char filename [BUFSIZ];
- struct stat statb;
--
+
glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROC_TIME), 0);
- memset (buf, 0, sizeof (glibtop_proc_time));
-@@ -142,25 +129,23 @@
- /* It does not work for the swapper task. */
- if (pid == 0) return;
-
--#if !(defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000))
-+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000))
- if (server->sysdeps.proc_time == 0)
- return;
-
--#ifndef __bsdi__
-- sprintf (filename, "/proc/%d/mem", (int) pid);
-- if (stat (filename, &statb)) return;
--#endif
- #endif
-
- /* Get the process information */
- pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
-- if ((pinfo == NULL) || (count != 1))
-- glibtop_error_io_r (server, "kvm_getprocs (%d)", pid);
-+ if ((pinfo == NULL) || (count != 1)) {
-+ glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
-+ return;
-+ }
-
--#if (defined __FreeBSD__) && (__FreeBSD_version >= 300003)
-- buf->rtime = pinfo [0].kp_proc.p_runtime;
-+#if (defined __FreeBSD__) && (__FreeBSD_version >= 500013)
-+ buf->rtime = pinfo [0].ki_runtime;
- #else
-- buf->rtime = tv2sec (pinfo [0].kp_proc.p_rtime);
-+ buf->rtime = pinfo [0].kp_proc.p_runtime;
- #endif
-
- buf->frequency = 1000000;
-@@ -192,6 +177,21 @@
-
- buf->flags |= _glibtop_sysdeps_proc_time_user;
- #else
-+#if __FreeBSD_version >= 500013
-+#if __FreeBSD_version >= 500016
-+ if ((pinfo [0].ki_sflag & PS_INMEM)) {
-+#else
-+ if ((pinfo [0].ki_flag & P_INMEM)) {
-+#endif
-+ buf->utime = pinfo [0].ki_runtime;
-+ buf->stime = 0; /* XXX */
-+ buf->cutime = tv2sec (pinfo [0].ki_childtime);
-+ buf->cstime = 0; /* XXX */
-+ buf->start_time = tv2sec (pinfo [0].ki_start);
-+ buf->flags |= _glibtop_sysdeps_proc_time_user;
-+ }
-+
-+#else
- glibtop_suid_enter (server);
-
- if ((pinfo [0].kp_proc.p_flag & P_INMEM) &&
-@@ -199,31 +199,17 @@
- (unsigned long) &u_addr->u_stats,
- (char *) &pstats, sizeof (pstats)) == sizeof (pstats))
- {
-- /* This is taken form the kernel source code of
-- * FreeBSD 2.2.6. */
--
-- /* Well, we just do the same getrusage () does ... */
--
-- register struct rusage *rup;
-
-+ buf->utime = tv2sec (pinfo[0].kp_eproc.e_stats.p_ru.ru_utime);
-+ buf->stime = tv2sec (pinfo[0].kp_eproc.e_stats.p_ru.ru_stime);
-+ buf->cutime = tv2sec (pinfo[0].kp_eproc.e_stats.p_cru.ru_utime);
-+ buf->cstime = tv2sec (pinfo[0].kp_eproc.e_stats.p_cru.ru_stime);
-+ buf->start_time = tv2sec (pinfo[0].kp_eproc.e_stats.p_start);
-+ buf->flags |= _glibtop_sysdeps_proc_time_user;
- glibtop_suid_leave (server);
--
-- rup = &pstats.p_ru;
-- calcru(&(pinfo [0]).kp_proc,
-- &rup->ru_utime, &rup->ru_stime, NULL);
--
-- buf->utime = tv2sec (pstats.p_ru.ru_utime);
-- buf->stime = tv2sec (pstats.p_ru.ru_stime);
--
-- buf->cutime = tv2sec (pstats.p_cru.ru_utime);
-- buf->cstime = tv2sec (pstats.p_cru.ru_stime);
--
-- buf->start_time = tv2sec (pstats.p_start);
--
-- buf->flags = _glibtop_sysdeps_proc_time_user;
- }
--
- glibtop_suid_leave (server);
-+#endif
- #endif
- }
-