New patch for libgtop2 on -CURRENT
Joe Marcus Clarke
marcus at FreeBSD.org
Mon Nov 22 12:49:53 PST 2004
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Attached is a patch that attempts to fix the recent vnode/inode problems
in libgtop2 while still preserving functionality. If you have a recent
6-CURRENT, please try this patch, and let me know how it goes. Thanks.
Joe
- --
Joe Marcus Clarke
FreeBSD GNOME Team :: gnome at FreeBSD.org
FreeNode / #freebsd-gnome
http://www.FreeBSD.org/gnome
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (Darwin)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQFBolD9b2iPiv4Uz4cRAqbWAJ9A/sNY2HFx+XPyWrMGgjrwsP9KiwCfbR1s
97EIy3XRLAsEq4nNIEksFHA=
=s+3y
-----END PGP SIGNATURE-----
-------------- next part --------------
--- sysdeps/freebsd/procmap.c.orig Fri Sep 24 18:49:06 2004
+++ sysdeps/freebsd/procmap.c Mon Nov 22 15:46:38 2004
@@ -47,7 +47,13 @@
#endif
#endif
+#ifdef __FreeBSD__
+#define _KVM_VNODE
+#endif
#include <sys/vnode.h>
+#ifdef __FreeBSD__
+#undef _KVM_VNODE
+#endif
#include <sys/mount.h>
#include <ufs/ufs/quota.h>
#include <ufs/ufs/inode.h>
@@ -104,7 +110,7 @@
glibtop_map_entry *maps;
#if defined __FreeBSD__
struct vnode vnode;
-#if __FreeBSD_version >= 500039
+#if __FreeBSD_version < 500039
struct inode inode;
#endif
#endif
@@ -122,8 +128,10 @@
/* Get the process data */
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
- if ((pinfo == NULL) || (count < 1))
+ if ((pinfo == NULL) || (count < 1)) {
glibtop_error_io_r (server, "kvm_getprocs (%d)", pid);
+ return NULL;
+ }
/* Now we get the memory maps. */
@@ -261,7 +269,7 @@
&vnode, sizeof (vnode)) != sizeof (vnode))
glibtop_error_io_r (server, "kvm_read (vnode)");
-#if defined(__FreeBSD__) && (__FreeBSD_version >= 500039)
+#if defined(__FreeBSD__) && (__FreeBSD_version >= 500039 && __FreeBSD_version < 600006)
switch (vnode.v_type) {
case VREG:
maps [i-1].inode = vnode.v_cachedid;
@@ -278,13 +286,9 @@
&inode, sizeof (inode)) != sizeof (inode))
glibtop_error_io_r (server, "kvm_read (inode)");
- if (kvm_read (server->machine.kd,
- (unsigned long) vnode.v_mount,
- &mount, sizeof (mount)) != sizeof (mount))
- glibtop_error_io_r (server, "kvm_read (mount)");
-#endif
maps [i-1].inode = inode.i_number;
maps [i-1].device = inode.i_dev;
+#endif
#endif
} while (entry.next != first);
More information about the freebsd-gnome
mailing list