head 1.3; access; symbols pkgsrc-2013Q2:1.3.0.24 pkgsrc-2013Q2-base:1.3 pkgsrc-2012Q4:1.3.0.22 pkgsrc-2012Q4-base:1.3 pkgsrc-2011Q4:1.3.0.20 pkgsrc-2011Q4-base:1.3 pkgsrc-2011Q2:1.3.0.18 pkgsrc-2011Q2-base:1.3 pkgsrc-2009Q4:1.3.0.16 pkgsrc-2009Q4-base:1.3 pkgsrc-2008Q4:1.3.0.14 pkgsrc-2008Q4-base:1.3 pkgsrc-2008Q3:1.3.0.12 pkgsrc-2008Q3-base:1.3 cube-native-xorg:1.3.0.10 cube-native-xorg-base:1.3 pkgsrc-2008Q2:1.3.0.8 pkgsrc-2008Q2-base:1.3 pkgsrc-2008Q1:1.3.0.6 pkgsrc-2008Q1-base:1.3 pkgsrc-2007Q4:1.3.0.4 pkgsrc-2007Q4-base:1.3 pkgsrc-2007Q3:1.3.0.2 pkgsrc-2007Q3-base:1.3 pkgsrc-2007Q2:1.2.0.8 pkgsrc-2007Q2-base:1.2 pkgsrc-2007Q1:1.2.0.6 pkgsrc-2007Q1-base:1.2 pkgsrc-2006Q4:1.2.0.4 pkgsrc-2006Q4-base:1.2 pkgsrc-2006Q3:1.2.0.2 pkgsrc-2006Q3-base:1.2 pkgsrc-2006Q2:1.1.0.4 pkgsrc-2006Q2-base:1.1 pkgsrc-2006Q1:1.1.0.2 pkgsrc-2006Q1-base:1.1; locks; strict; comment @# @; 1.3 date 2007.09.20.21.12.21; author wiz; state dead; branches; next 1.2; 1.2 date 2006.09.22.15.57.47; author drochner; state Exp; branches; next 1.1; 1.1 date 2006.02.28.23.48.11; author joerg; state Exp; branches; next ; desc @@ 1.3 log @Rename libgtop2 to libgtop, to match upstream name. @ text @$NetBSD: patch-ag,v 1.2 2006/09/22 15:57:47 drochner Exp $ --- sysdeps/freebsd/mem.c.orig 2005-12-12 11:09:39.000000000 +0100 +++ sysdeps/freebsd/mem.c @@@@ -28,6 +28,10 @@@@ #include +#if defined(__DragonFly__) +#include +#endif + #include #include #if defined(__NetBSD__) && (__NetBSD_Version__ < 105020000) @@@@ -58,6 +62,7 @@@@ static int pageshift; /* log base 2 of /* define pagetok in terms of pageshift */ #define pagetok(size) ((size) << pageshift) +#if !defined(__DragonFly__) /* nlist structure for kernel access */ static struct nlist nlst [] = { #if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000) || defined(__OpenBSD__) @@@@ -75,6 +80,7 @@@@ static struct nlist nlst [] = { { 0 } #endif }; +#endif /* MIB array for sysctl */ #ifdef __bsdi__ @@@@ -83,7 +89,9 @@@@ static int mib [] = { CTL_VM, VM_TOTAL } static int mib [] = { CTL_VM, VM_METER }; #endif -#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000) || defined(__OpenBSD__) +#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000) +static int mib_uvmexp [] = { CTL_VM, VM_UVMEXP2 }; +#elif defined(__OpenBSD__) static int mib_uvmexp [] = { CTL_VM, VM_UVMEXP }; #endif @@@@ -94,10 +102,12 @@@@ glibtop_init_mem_p (glibtop *server) { register int pagesize; +#if !defined(__DragonFly__) if (kvm_nlist (server->machine.kd, nlst) < 0) { glibtop_warn_io_r (server, "kvm_nlist (mem)"); return; } +#endif /* get the page size with "getpagesize" and calculate pageshift * from it */ @@@@ -119,9 +129,15 @@@@ glibtop_get_mem_p (glibtop *server, glib { struct vmtotal vmt; size_t length_vmt; -#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000) || defined(__OpenBSD__) +#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000) + struct uvmexp_sysctl uvmexp; + size_t length_uvmexp; +#elif defined(__OpenBSD__) struct uvmexp uvmexp; size_t length_uvmexp; +#elif defined(__DragonFly__) + struct vmstats vms; + size_t vms_size; #else struct vmmeter vmm; #endif @@@@ -142,11 +158,19 @@@@ glibtop_get_mem_p (glibtop *server, glib * here.] */ /* Get the data from sysctl */ +#if defined(__DragonFly__) + length_vmt = sizeof (vmt); + if (sysctlbyname ("vm.vmtotal", &vmt, &length_vmt, NULL, 0)) { + glibtop_warn_io_r (server, "sysctl (vmt)"); + return; + } +#else length_vmt = sizeof (vmt); if (sysctl (mib, 2, &vmt, &length_vmt, NULL, 0)) { glibtop_warn_io_r (server, "sysctl (vmt)"); return; } +#endif #if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000) || defined(__OpenBSD__) length_uvmexp = sizeof (uvmexp); @@@@ -154,6 +178,12 @@@@ glibtop_get_mem_p (glibtop *server, glib glibtop_warn_io_r (server, "sysctl (uvmexp)"); return; } +#elif defined(__DragonFly__) + vms_size = sizeof(vms); + if (sysctlbyname("vm.vmstats", &vms, &vms_size, NULL, 0)) { + glibtop_warn_io_r (server, "kvm_read (vms)"); + return; + } #else /* Get the data from kvm_* */ if (kvm_read (server->machine.kd, nlst[1].n_value, @@@@ -163,15 +193,24 @@@@ glibtop_get_mem_p (glibtop *server, glib } #endif +#if defined(__DragonFly__) + if (kinfo_get_vfs_bufspace(&bufspace)) { + glibtop_warn_io_r (server, "kinfo_get_vfs_bufspace"); + return; + } +#else if (kvm_read (server->machine.kd, nlst[0].n_value, &bufspace, sizeof (bufspace)) != sizeof (bufspace)) { glibtop_warn_io_r (server, "kvm_read (bufspace)"); return; } +#endif /* convert memory stats to Kbytes */ -#if defined(__FreeBSD__) +#if defined(__DragonFly__) + v_total_count = vms.v_page_count; +#elif defined(__FreeBSD__) v_total_count = vmm.v_page_count; #else #if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000) || defined(__OpenBSD__) @@@@ -189,6 +228,9 @@@@ glibtop_get_mem_p (glibtop *server, glib #if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000) || defined(__OpenBSD__) v_used_count = uvmexp.active + uvmexp.inactive; v_free_count = uvmexp.free; +#elif defined(__DragonFly__) + v_used_count = vms.v_active_count + vms.v_inactive_count; + v_free_count = vms.v_free_count; #else v_used_count = vmm.v_active_count + vmm.v_inactive_count; v_free_count = vmm.v_free_count; @@@@ -198,12 +240,16 @@@@ glibtop_get_mem_p (glibtop *server, glib buf->used = (guint64) pagetok (v_used_count) << LOG1024; buf->free = (guint64) pagetok (v_free_count) << LOG1024; -#ifdef __FreeBSD__ +#if defined(__DragonFly__) + buf->cached = (guint64) pagetok (vms.v_cache_count) << LOG1024; +#elif defined(__FreeBSD__) buf->cached = (guint64) pagetok (vmm.v_cache_count) << LOG1024; #endif #if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000) || defined(__OpenBSD__) buf->locked = (guint64) pagetok (uvmexp.wired) << LOG1024; +#elif defined(__DragonFly__) + buf->locked = (guint64) pagetok (vms.v_wire_count) << LOG1024; #else buf->locked = (guint64) pagetok (vmm.v_wire_count) << LOG1024; #endif @ 1.2 log @-make this build on -current where some fields were removed from struct uvmexp -- use uvmexp_sysctl on NetBSD instead -correct filesystem size calculation: the unit is vfsstat.f_frsize -bump PKGREVISION with jmmv's blessing @ text @d1 1 a1 1 $NetBSD$ @ 1.1 log @Add support for DragonFly. There are some minor issues left, e.g. installing of the backend daemon as kmem, but I don't want to make it the default, since almost all operations work without it. @ text @d3 1 a3 1 --- sysdeps/freebsd/mem.c.orig 2004-08-28 20:55:37.000000000 +0000 d5 1 a5 1 @@@@ -27,6 +27,10 @@@@ d16 1 a16 1 @@@@ -57,6 +61,7 @@@@ static int pageshift; /* log base 2 of d24 1 a24 1 @@@@ -74,6 +79,7 @@@@ static struct nlist nlst [] = { d32 12 a43 1 @@@@ -93,10 +99,12 @@@@ glibtop_init_mem_p (glibtop *server) d56 9 a64 2 @@@@ -121,6 +129,9 @@@@ glibtop_get_mem_p (glibtop *server, glib #if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000) || defined(__OpenBSD__) d73 1 a73 1 @@@@ -141,11 +152,19 @@@@ glibtop_get_mem_p (glibtop *server, glib d93 1 a93 1 @@@@ -153,6 +172,12 @@@@ glibtop_get_mem_p (glibtop *server, glib d106 1 a106 1 @@@@ -162,15 +187,24 @@@@ glibtop_get_mem_p (glibtop *server, glib d132 1 a132 1 @@@@ -188,6 +222,9 @@@@ glibtop_get_mem_p (glibtop *server, glib d142 1 a142 1 @@@@ -197,12 +234,16 @@@@ glibtop_get_mem_p (glibtop *server, glib @