From owner-svn-ports-all@FreeBSD.ORG Thu Oct 2 20:39:16 2014 Return-Path: Delivered-To: svn-ports-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AB18FA63; Thu, 2 Oct 2014 20:39:16 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8C63FDB9; Thu, 2 Oct 2014 20:39:16 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s92KdG6O091930; Thu, 2 Oct 2014 20:39:16 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s92KdGRZ091928; Thu, 2 Oct 2014 20:39:16 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201410022039.s92KdGRZ091928@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Thu, 2 Oct 2014 20:39:16 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r369861 - in head/sysutils/xosview: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Oct 2014 20:39:16 -0000 Author: glebius (src committer) Date: Thu Oct 2 20:39:15 2014 New Revision: 369861 URL: https://svnweb.freebsd.org/changeset/ports/369861 QAT: https://qat.redports.org/buildarchive/r369861/ Log: - Get interface stats via getifaddrs(3) instead of kvm(3). - Get vmstat via sysctl(3) instead of kvm(3). Approved by: bapt (blanket) Added: head/sysutils/xosview/files/ head/sysutils/xosview/files/patch-bsd-kernel.cc (contents, props changed) Modified: head/sysutils/xosview/Makefile Modified: head/sysutils/xosview/Makefile ============================================================================== --- head/sysutils/xosview/Makefile Thu Oct 2 20:07:11 2014 (r369860) +++ head/sysutils/xosview/Makefile Thu Oct 2 20:39:15 2014 (r369861) @@ -3,7 +3,7 @@ PORTNAME= xosview PORTVERSION= 1.16 -PORTREVISION= 0 +PORTREVISION= 1 CATEGORIES= sysutils MASTER_SITES= http://www.pogo.org.uk/~mark/xosview/releases/ Added: head/sysutils/xosview/files/patch-bsd-kernel.cc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sysutils/xosview/files/patch-bsd-kernel.cc Thu Oct 2 20:39:15 2014 (r369861) @@ -0,0 +1,222 @@ +--- bsd/kernel.cc.orig 2013-08-23 13:40:35.000000000 +0400 ++++ bsd/kernel.cc 2014-10-03 00:35:05.000000000 +0400 +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -43,7 +44,6 @@ + #if defined(XOSVIEW_FREEBSD) || defined(XOSVIEW_DFBSD) + static const char ACPIDEV[] = "/dev/acpi"; + static const char APMDEV[] = "/dev/apm"; +-#include + #include + #include + #include +@@ -115,56 +115,41 @@ + // this later on. This keeps the indices within the nlist constant. + #define DUMMY_SYM "dummy_sym" + +-#if defined(XOSVIEW_FREEBSD) +-{ "_cnt" }, +-#define VMMETER_SYM_INDEX 0 +-#else +-{ DUMMY_SYM }, +-#define DUMMY_0 +-#endif +-#if !defined(XOSVIEW_OPENBSD) +-{ "_ifnet" }, +-#define IFNET_SYM_INDEX 1 +-#else +-{ DUMMY_SYM }, +-#define DUMMY_1 +-#endif +- + #if defined(XOSVIEW_OPENBSD) + { "_disklist" }, +-#define DISKLIST_SYM_INDEX 2 ++#define DISKLIST_SYM_INDEX 0 + #else + { DUMMY_SYM }, +-#define DUMMY_2 ++#define DUMMY_0 + #endif + #if defined(XOSVIEW_NETBSD) + { "_allevents" }, +-#define ALLEVENTS_SYM_INDEX 3 ++#define ALLEVENTS_SYM_INDEX 1 + { "_bufmem" }, +-#define BUFMEM_SYM_INDEX 4 ++#define BUFMEM_SYM_INDEX 2 + #else + { DUMMY_SYM }, +-#define DUMMY_3 ++#define DUMMY_1 + { DUMMY_SYM }, +-#define DUMMY_4 ++#define DUMMY_2 + #endif + #if defined(XOSVIEW_FREEBSD) + { "_intrnames" }, +-#define INTRNAMES_SYM_INDEX 5 ++#define INTRNAMES_SYM_INDEX 3 + # if __FreeBSD_version >= 900040 + { "_sintrnames" }, + # else + { "_eintrnames" }, + # endif +-#define EINTRNAMES_SYM_INDEX 6 ++#define EINTRNAMES_SYM_INDEX 4 + { "_intrcnt" }, +-#define INTRCNT_SYM_INDEX 7 ++#define INTRCNT_SYM_INDEX 5 + # if __FreeBSD_version >= 900040 + { "_sintrcnt" }, + # else + { "_eintrcnt" }, + # endif +-#define EINTRCNT_SYM_INDEX 8 ++#define EINTRCNT_SYM_INDEX 6 + #endif + { NULL } + }; +@@ -337,7 +322,21 @@ + #else /* HAVE_UVM */ + struct vmmeter vm; + #if defined(XOSVIEW_FREEBSD) +- safe_kvm_read_symbol(VMMETER_SYM_INDEX, &vm, sizeof(vm)); ++ size_t size = sizeof(unsigned int); ++ ++#define GET_VM_STATS(name) \ ++ sysctlbyname("vm.stats.vm." #name, &vm.name, &size, NULL, 0) ++ GET_VM_STATS(v_active_count); ++ GET_VM_STATS(v_inactive_count); ++ GET_VM_STATS(v_wire_count); ++ GET_VM_STATS(v_cache_count); ++ GET_VM_STATS(v_free_count); ++ GET_VM_STATS(v_page_size); ++ GET_VM_STATS(v_vnodepgsin); ++ GET_VM_STATS(v_vnodepgsout); ++ GET_VM_STATS(v_swappgsin); ++ GET_VM_STATS(v_swappgsout); ++#undef GET_VM_STATS + #else /* XOSVIEW_DFBSD */ + struct vmstats vms; + size_t size = sizeof(vms); +@@ -421,99 +420,37 @@ + int + BSDNetInit() { + OpenKDIfNeeded(); +-#if defined(XOSVIEW_NETBSD) +- return ValidSymbol(IFNET_SYM_INDEX); +-#else + return 1; +-#endif + } + + void + BSDGetNetInOut(unsigned long long *inbytes, unsigned long long *outbytes, const char *netIface, bool ignored) { +- char ifname[IFNAMSIZ]; ++ struct ifaddrs *ifap, *ifa; + *inbytes = 0; + *outbytes = 0; +-#if defined(XOSVIEW_OPENBSD) +- size_t size; +- char *buf, *next; +- struct if_msghdr *ifm; +- struct if_data ifd; +- struct sockaddr_dl *sdl; +- +- if ( sysctl(mib_ifl, 6, NULL, &size, NULL, 0) < 0 ) +- err(EX_OSERR, "BSDGetNetInOut(): sysctl 1 failed"); +- if ( (buf = (char *)malloc(size)) == NULL) +- err(EX_OSERR, "BSDGetNetInOut(): malloc failed"); +- if ( sysctl(mib_ifl, 6, buf, &size, NULL, 0) < 0 ) +- err(EX_OSERR, "BSDGetNetInOut(): sysctl 2 failed"); + +- for (next = buf; next < buf + size; next += ifm->ifm_msglen) { +- bool skipif = false; +- ifm = (struct if_msghdr *)next; +- if (ifm->ifm_type != RTM_IFINFO || ifm->ifm_addrs & RTAX_IFP == 0) +- continue; +- ifd = ifm->ifm_data; +- sdl = (struct sockaddr_dl *)(ifm + 1); +- if (sdl->sdl_family != AF_LINK) +- continue; +- if ( strncmp(netIface, "False", 5) != 0 ) { +- memcpy(ifname, sdl->sdl_data, (sdl->sdl_nlen >= IFNAMSIZ ? IFNAMSIZ - 1 : sdl->sdl_nlen)); +- if ( (!ignored && strncmp(sdl->sdl_data, netIface, sdl->sdl_nlen) != 0) || +- ( ignored && strncmp(sdl->sdl_data, netIface, sdl->sdl_nlen) == 0) ) +- skipif = true; +- } +- if (!skipif) { +- *inbytes += ifd.ifi_ibytes; +- *outbytes += ifd.ifi_obytes; +- } +- } +- free(buf); +-#else /* XOSVIEW_OPENBSD */ +- struct ifnet *ifnetp; +- struct ifnet ifnet; +-#if defined (XOSVIEW_NETBSD) +- struct ifnet_head ifnethd; +-#else +- struct ifnethead ifnethd; +-#endif +- safe_kvm_read(nlst[IFNET_SYM_INDEX].n_value, &ifnethd, sizeof(ifnethd)); +- ifnetp = TAILQ_FIRST(&ifnethd); ++ if (getifaddrs(&ifap) != 0) ++ return; + +- while (ifnetp) { ++ for (ifa = ifap; ifa; ifa = ifa->ifa_next) { + bool skipif = false; +- // Now, dereference the pointer to get the ifnet struct. +- safe_kvm_read((u_long)ifnetp, &ifnet, sizeof(ifnet)); +- strlcpy(ifname, ifnet.if_xname, sizeof(ifname)); +-#if defined(XOSVIEW_NETBSD) +- ifnetp = TAILQ_NEXT(&ifnet, if_list); +-#else +- ifnetp = TAILQ_NEXT(&ifnet, if_link); +-#endif +- if (!(ifnet.if_flags & IFF_UP)) ++ ++ if (ifa->ifa_addr->sa_family != AF_LINK) + continue; ++ + if ( strncmp(netIface, "False", 5) != 0 ) { +- if ( (!ignored && strncmp(ifname, netIface, 256) != 0) || +- ( ignored && strncmp(ifname, netIface, 256) == 0) ) ++ if ( (!ignored && strncmp(ifa->ifa_name, netIface, 256) != 0) || ++ ( ignored && strncmp(ifa->ifa_name, netIface, 256) == 0) ) + skipif = true; + } ++#define IFA_STAT(s) (((struct if_data *)ifa->ifa_data)->ifi_ ## s) + if (!skipif) { +-#if defined(XOSVIEW_DFBSD) && __DragonFly_version > 300304 +- struct ifdata_pcpu *ifdatap = ifnet.if_data_pcpu; +- struct ifdata_pcpu ifdata; +- int ncpus = BSDCountCpus(); +- for (int cpu = 0; cpu < ncpus; cpu++) { +- safe_kvm_read((u_long)ifdatap + cpu * sizeof(ifdata), +- &ifdata, sizeof(ifdata)); +- *inbytes += ifdata.ifd_ibytes; +- *outbytes += ifdata.ifd_obytes; +- } +-#else +- *inbytes += ifnet.if_ibytes; +- *outbytes += ifnet.if_obytes; +-#endif ++ *inbytes += IFA_STAT(ibytes); ++ *outbytes += IFA_STAT(obytes); + } ++#undef IFA_STAT + } +-#endif /* XOSVIEW_OPENBSD */ ++ freeifaddrs(ifap); + } + +