Fix numerous bigs in the FreeBSD backend
* Correct calculation of CPU time. * Fix a bug on newer versions of FreeBSD where computing the process map leads to a tight error loop. * Add support for the new procstat API to obtain the list of open files and cwd. * Use kvm_openfiles instead of kvm_open to better handle error messages. * Split some modules out into non-suid modules. * Properly determine the number of CPUs. https://bugzilla.gnome.org/show_bug.cgi?id=605431
This commit is contained in:
committed by
Jasper Lievisse Adriaanse
parent
aa1a6766f2
commit
08fd95d253
@@ -85,7 +85,9 @@ _glibtop_sysdeps_freebsd_dev_inode (glibtop *server, struct vnode *vnode,
|
||||
char tagstr[12];
|
||||
struct inode inode;
|
||||
struct cdev_priv priv;
|
||||
#if __FreeBSD_version < 800039
|
||||
struct cdev si;
|
||||
#endif
|
||||
|
||||
*inum = 0;
|
||||
*dev = 0;
|
||||
@@ -111,18 +113,18 @@ _glibtop_sysdeps_freebsd_dev_inode (glibtop *server, struct vnode *vnode,
|
||||
return;
|
||||
}
|
||||
|
||||
if (kvm_read (server->machine.kd, (gulong) inode.i_dev, (char *) &si,
|
||||
sizeof (si)) != sizeof (si) ||
|
||||
#if __FreeBSD_version >= 800039
|
||||
kvm_read (server->machine.kd, (gulong) cdev2priv(&si), (char *) &priv,
|
||||
if (kvm_read (server->machine.kd, (gulong) cdev2priv(inode.i_dev), (char *) &priv,
|
||||
sizeof (priv))
|
||||
#else
|
||||
if (kvm_read (server->machine.kd, (gulong) inode.i_dev, (char *) &si,
|
||||
sizeof (si)) != sizeof (si) ||
|
||||
kvm_read (server->machine.kd, (gulong) si.si_priv, (char *) &priv,
|
||||
sizeof (priv))
|
||||
#endif
|
||||
!= sizeof (priv))
|
||||
{
|
||||
glibtop_warn_io_r (server, "kvm_read (si)");
|
||||
glibtop_warn_io_r (server, "kvm_read (priv)");
|
||||
return;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user