aboutsummaryrefslogtreecommitdiffstats
path: root/sysutils/htop
diff options
context:
space:
mode:
authorpawel <pawel@FreeBSD.org>2012-05-30 05:22:56 +0800
committerpawel <pawel@FreeBSD.org>2012-05-30 05:22:56 +0800
commitbd0cda1f818bf1261352e83649f3243e97e03c83 (patch)
tree4050bfc2cfc1217204a69379675e0f157630e35e /sysutils/htop
parent6804af9f680e06df84db9eec472c776b42164150 (diff)
downloadfreebsd-ports-gnome-bd0cda1f818bf1261352e83649f3243e97e03c83.tar.gz
freebsd-ports-gnome-bd0cda1f818bf1261352e83649f3243e97e03c83.tar.zst
freebsd-ports-gnome-bd0cda1f818bf1261352e83649f3243e97e03c83.zip
Add patches to show correct memory usage on FreeBSD
PR: ports/167970 Submitted by: Sayetsky Anton <vsjcfm@gmail.com> Approved by: maintainer
Diffstat (limited to 'sysutils/htop')
-rw-r--r--sysutils/htop/Makefile1
-rw-r--r--sysutils/htop/files/patch-ProcessList.c73
-rw-r--r--sysutils/htop/files/patch-configure.ac16
3 files changed, 90 insertions, 0 deletions
diff --git a/sysutils/htop/Makefile b/sysutils/htop/Makefile
index a0c88c622163..3b3da745f111 100644
--- a/sysutils/htop/Makefile
+++ b/sysutils/htop/Makefile
@@ -7,6 +7,7 @@
PORTNAME= htop
PORTVERSION= 1.0.1
+PORTREVISION= 1
CATEGORIES= sysutils
MASTER_SITES= SF
diff --git a/sysutils/htop/files/patch-ProcessList.c b/sysutils/htop/files/patch-ProcessList.c
new file mode 100644
index 000000000000..bbc51abb4561
--- /dev/null
+++ b/sysutils/htop/files/patch-ProcessList.c
@@ -0,0 +1,73 @@
+--- ProcessList.c.orig 2012-02-03 01:45:11.000000000 +0200
++++ ProcessList.c 2012-05-16 17:39:50.000000000 +0300
+@@ -25,6 +25,19 @@
+ #include <time.h>
+ #include <assert.h>
+
++#ifndef PAGE_SIZE
++#define PAGE_SIZE sysconf(_SC_PAGESIZE)
++#endif
++
++#ifdef __FreeBSD__
++#define KB 1024
++#define SYSCTLBYNAME(name, var, len) sysctlbyname(name, &(var), &(len), NULL, 0)
++#include <kvm.h>
++#include <paths.h>
++#include <fcntl.h>
++#include <sys/sysctl.h>
++#endif
++
+ /*{
+ #include "Vector.h"
+ #include "Hashtable.h"
+@@ -749,11 +762,13 @@
+
+ void ProcessList_scan(ProcessList* this) {
+ unsigned long long int usertime, nicetime, systemtime, systemalltime, idlealltime, idletime, totaltime, virtalltime;
+- unsigned long long int swapFree = 0;
++ int cpus = this->cpuCount;
++ FILE* file = NULL;
+
+- FILE* file = fopen(PROCMEMINFOFILE, "r");
++ #ifndef __FreeBSD__
++ unsigned long long int swapFree = 0;
++ file = fopen(PROCMEMINFOFILE, "r");
+ assert(file != NULL);
+- int cpus = this->cpuCount;
+ {
+ char buffer[128];
+ while (fgets(buffer, 128, file)) {
+@@ -788,6 +803,33 @@
+ this->usedMem = this->totalMem - this->freeMem;
+ this->usedSwap = this->totalSwap - swapFree;
+ fclose(file);
++ #endif
++
++ #ifdef __FreeBSD__
++ kvm_t *kd = NULL;
++ struct kvm_swap kvmswapinfo[1];
++ size_t len = 0;
++
++ kd = kvm_open(NULL, _PATH_DEVNULL, NULL, O_RDONLY, NULL);
++ assert(kd != NULL);
++ kvm_getswapinfo(kd, kvmswapinfo, 1, 0);
++ this->totalSwap = kvmswapinfo[0].ksw_total * PAGE_SIZE / KB;
++ this->usedSwap = kvmswapinfo[0].ksw_used * PAGE_SIZE / KB;
++ kvm_close(kd);
++ len = sizeof(this->totalMem);
++ SYSCTLBYNAME("vm.stats.vm.v_page_count", this->totalMem, len);
++ this->totalMem *= PAGE_SIZE / KB;
++ len = sizeof(this->cachedMem);
++ SYSCTLBYNAME("vm.stats.vm.v_cache_count", this->cachedMem, len);
++ this->cachedMem *= PAGE_SIZE / KB;
++ len = sizeof(this->buffersMem);
++ SYSCTLBYNAME("vfs.bufspace", this->buffersMem, len);
++ this->buffersMem /= KB;
++ len = sizeof(this->usedMem);
++ SYSCTLBYNAME("vm.stats.vm.v_active_count", this->usedMem, len);
++ this->usedMem = this->usedMem * PAGE_SIZE / KB + this->cachedMem + this->buffersMem;
++ this->freeMem = this->totalMem - this->usedMem;
++ #endif
+
+ file = fopen(PROCSTATFILE, "r");
+ assert(file != NULL);
diff --git a/sysutils/htop/files/patch-configure.ac b/sysutils/htop/files/patch-configure.ac
new file mode 100644
index 000000000000..4f42b6153c4b
--- /dev/null
+++ b/sysutils/htop/files/patch-configure.ac
@@ -0,0 +1,16 @@
+--- configure.ac.orig 2011-12-26 23:46:57.000000000 +0200
++++ configure.ac 2012-05-16 17:39:50.000000000 +0300
+@@ -23,11 +23,12 @@
+
+ # Checks for libraries.
+ AC_CHECK_LIB([m], [ceil], [], [missing_libraries="$missing_libraries libm"])
++AC_CHECK_LIB([kvm], [kvm_open], [], [missing_libraries="$missing_libraries libkvm"])
+
+ # Checks for header files.
+ AC_HEADER_DIRENT
+ AC_HEADER_STDC
+-AC_CHECK_HEADERS([stdlib.h string.h strings.h sys/param.h sys/time.h unistd.h curses.h],[:],[
++AC_CHECK_HEADERS([stdlib.h string.h strings.h sys/param.h sys/time.h unistd.h curses.h kvm.h paths.h fcntl.h sys/sysctl.h],[:],[
+ missing_headers="$missing_headers $ac_header"
+ ])
+ AC_CHECK_HEADERS([execinfo.h],[:],[:])