implement NetBSD support, and some build problems on FreeBSD (Closes:

2004-03-09  Bastien Nocera  <hadess@hadess.net>

	* Makefile.am:
	* cpu.c: (glibtop_init_cpu_p), (glibtop_get_cpu_p):
	* glibtop_machine.h:
	* mem.c:
	* netload.c: (glibtop_get_netload_p):
	* prockernel.c: (glibtop_get_proc_kernel_p):
	* proclist.c: (glibtop_get_proclist_p):
	* procmap.c: (glibtop_get_proc_map_p):
	* procmem.c: (glibtop_get_proc_mem_p):
	* procsignal.c: (glibtop_get_proc_signal_p):
	* procstate.c: (glibtop_get_proc_state_p):
	* proctime.c:
	* procuid.c: (glibtop_get_proc_uid_p):
	* uptime.c: (glibtop_get_uptime_p): implement NetBSD support, and
	some build problems on FreeBSD (Closes: #135674)
This commit is contained in:
Bastien Nocera
2004-03-09 23:13:31 +00:00
committed by Bastien Nocera
parent a795ff4847
commit 4bd9752d52
15 changed files with 420 additions and 83 deletions

View File

@@ -31,8 +31,12 @@
#include <sys/param.h>
#include <sys/proc.h>
#include <sys/resource.h>
#ifdef __NetBSD__ && (__NetBSD_Version__ >= 105020000)
#include <uvm/uvm_extern.h>
#else
#include <vm/vm_object.h>
#include <vm/vm_map.h>
#endif
#include <sys/vnode.h>
#include <ufs/ufs/quota.h>
@@ -43,9 +47,14 @@
#include <sys/user.h>
#endif
#include <sys/sysctl.h>
#ifdef __NetBSD__ && (__NetBSD_Version__ >= 105020000)
#include <uvm/uvm.h>
#else
#include <vm/vm.h>
#endif
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
#if defined(__NetBSD__) && \
(__NetBSD_Version__ >= 104000000) && (__NetBSD_Version__ < 105020000)
/* Fixme ... */
#undef _KERNEL
#define _UVM_UVM_AMAP_I_H_ 1
@@ -113,7 +122,6 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
struct vmspace *vms, vmspace;
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
struct vnode vnode;
struct inode inode;
#else
struct vm_object object;
#endif
@@ -136,9 +144,24 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
return;
}
#if defined(__FreeBSD__) && (__FreeBSD_version >= 500013)
#define PROC_VMSPACE ki_vmspace
buf->rss_rlim = pinfo [0].ki_rssize;
buf->vsize = buf->size = (u_int64_t) pagetok
(pinfo [0].ki_tsize + pinfo [0].ki_dsize + pinfo[0].ki_ssize)
<< LOG1024;
buf->resident = buf->rss = (u_int64_t) pagetok
(pinfo [0].ki_rssize) << LOG1024;
#else
#define PROC_VMSPACE kp_proc.p_vmspace
if (kvm_read (server->machine.kd,
(unsigned long) pinfo [0].kp_proc.p_limit,
(unsigned long) pinfo [0].PROC_VMSPACE,
(char *) &plimit, sizeof (plimit)) != sizeof (plimit)) {
glibtop_warn_io_r (server, "kvm_read (plimit)");
return;
@@ -154,11 +177,12 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
buf->resident = buf->rss = (guint64) pagetok
(vms->vm_rssize) << LOG1024;
#endif
/* Now we get the shared memory. */
if (kvm_read (server->machine.kd,
(unsigned long) pinfo [0].kp_proc.p_vmspace,
(unsigned long) pinfo [0].PROC_VMSPACE,
(char *) &vmspace, sizeof (vmspace)) != sizeof (vmspace)) {
glibtop_warn_io_r (server, "kvm_read (vmspace)");
return;
@@ -233,17 +257,26 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
/* If the object is of type vnode, add its size */
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
#if defined(UVM_VNODE_VALID)
if (!vnode.v_uvm.u_flags & UVM_VNODE_VALID)
continue;
#endif
if ((vnode.v_type != VREG) || (vnode.v_tag != VT_UFS) ||
!vnode.v_data) continue;
#if defined(__NetBSD__) && (__NetBSD_Version__ >= 105250000)
/* Reference count must be at least two. */
if (vnode.v_usecount <= 1)
continue;
buf->share += pagetok (vnode.v_uobj.uo_npages) << LOG1024;
#else
/* Reference count must be at least two. */
if (vnode.v_uvm.u_obj.uo_refs <= 1)
continue;
buf->share += pagetok (vnode.v_uvm.u_obj.uo_npages) << LOG1024;
#endif /* __NetBSD_Version__ >= 105250000 */
#endif
#ifdef __FreeBSD__