$NetBSD: patch-al,v 1.7 2017/06/23 16:42:05 kamil Exp $ --- sysdeps/bsd/procmem.c.orig 2011-06-01 15:40:47.000000000 +0000 +++ sysdeps/bsd/procmem.c @@ -42,7 +42,7 @@ #include #include -#if (!defined __OpenBSD__) && (!defined __bsdi__) +#if (!defined __OpenBSD__) && (!defined __bsdi__) && (!defined __NetBSD__) #include #endif #include @@ -116,6 +116,9 @@ void glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf, pid_t pid) { +#if defined (__NetBSD__) + struct kinfo_proc2 *pinfo; +#else struct kinfo_proc *pinfo; struct vm_map_entry entry, *first; struct vmspace *vms, vmspace; @@ -127,6 +130,7 @@ glibtop_get_proc_mem_p (glibtop *server, #if (!defined(__FreeBSD__) || (__FreeBSD_version < 500013)) && !defined(__FreeBSD_kernel__) struct plimit plimit; #endif +#endif /* NetBSD */ int count; glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROC_MEM), 0); @@ -140,7 +144,12 @@ glibtop_get_proc_mem_p (glibtop *server, if (pid == 0) return; /* Get the process data */ +#if defined(__NetBSD__) + pinfo = kvm_getproc2 (server->machine.kd, KERN_PROC_PID, pid, + sizeof (*pinfo), &count); +#else pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count); +#endif if ((pinfo == NULL) || (count < 1)) { glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid); return; @@ -157,6 +166,15 @@ glibtop_get_proc_mem_p (glibtop *server, buf->resident = buf->rss = (guint64) pagetok (pinfo [0].ki_rssize) << LOG1024; +#elif defined(__NetBSD__) + + buf->rss_rlim = pinfo[0].p_uru_maxrss; + buf->vsize = buf->size = (guint64)pagetok + (pinfo[0].p_vm_tsize + pinfo[0].p_vm_dsize + pinfo[0].p_vm_ssize) + << LOG1024; + buf->resident = buf->rss = (guint64)pagetok + (pinfo[0].p_vm_rssize) << LOG1024; + #else #define PROC_VMSPACE kp_proc.p_vmspace @@ -182,6 +200,9 @@ glibtop_get_proc_mem_p (glibtop *server, /* Now we get the shared memory. */ +#if defined(__NetBSD__) + buf->share = pinfo[0].p_uru_ixrss; +#else if (kvm_read (server->machine.kd, (unsigned long) pinfo [0].PROC_VMSPACE, (char *) &vmspace, sizeof (vmspace)) != sizeof (vmspace)) { @@ -287,6 +308,7 @@ glibtop_get_proc_mem_p (glibtop *server, buf->share += object.un_pager.vnp.vnp_size; #endif } +#endif /* NetBSD */ buf->flags = _glibtop_sysdeps_proc_mem | _glibtop_sysdeps_proc_mem_share;