diff options
Diffstat (limited to 'sysutils')
-rw-r--r-- | sysutils/htop/Makefile | 1 | ||||
-rw-r--r-- | sysutils/htop/files/patch-ProcessList.c | 73 | ||||
-rw-r--r-- | sysutils/htop/files/patch-configure.ac | 16 |
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],[:],[:]) |