| Server IP : 82.208.35.60 / Your IP : 216.73.216.238 Web Server : Apache/2.4.55 (FreeBSD) OpenSSL/1.1.1q-freebsd PHP/7.3.31 System : FreeBSD server7.d2m.cz 12.4-RELEASE-p9 FreeBSD 12.4-RELEASE-p9 GENERIC amd64 User : studiokobylisy_cz ( 1008) PHP Version : 7.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /usr/ports/sysutils/asmem/files/ |
Upload File : |
--- read_mem.c.orig 2007-04-12 20:38:40 UTC
+++ read_mem.c
@@ -56,6 +56,8 @@ char buf[BUFFER_LENGTH];
// Machine dependent headers
// FreeBSD
#if defined(__FreeBSD__)
+#define _WANT_VMMETER
+#include <sys/param.h>
#include <sys/conf.h>
#include <osreldate.h>
#include <kvm.h>
@@ -336,6 +338,14 @@ void error_handle( int place, const char * message )
int read_meminfo() {
int pagesize, pageshift;
#if __FreeBSD_version > 400000
+
+ /* setup pageshift */
+ pagesize = getpagesize();
+ pageshift = 0;
+ while (pagesize > 1) {
+ pageshift++;
+ pagesize >>= 1;
+ }
struct kvm_swap kswap[SWAP_DEVICES];
int i, swaps;
@@ -347,10 +357,6 @@ int read_meminfo() {
time_t current_time;
#define GETSWAP_DELAY 60 /* 1 min */
- /* get the info */
- if (kvm_read(kd, cnt_offset, (int *)(&sum), sizeof(sum)) != sizeof(sum))
- return (-1);
-
/* we obtain swap info every GETSWAP_DELAY seconds because of
* kvm_getswapinfo CPU load
*/
@@ -406,9 +412,19 @@ int read_meminfo() {
#endif /* if __FreeBSD_version > 400000 */
- state.fresh.total = pagetok(sum.v_page_count);
- state.fresh.used = pagetok(sum.v_page_count-sum.v_free_count);
- state.fresh.free = pagetok(sum.v_free_count);
+ unsigned long physmem, freemem, inacmem;
+ size_t sz = sizeof(unsigned long);
+
+ physmem = 0;
+ freemem = 0;
+ inacmem = 0;
+ sysctlbyname("hw.physmem", &physmem, &sz, NULL, 0);
+ sysctlbyname("vm.stats.vm.v_free_count", &freemem, &sz, NULL, 0);
+ sysctlbyname("vm.stats.vm.v_inactive_count", &inacmem, &sz, NULL, 0);
+
+ state.fresh.total = physmem;
+ state.fresh.free = pagetok(freemem + inacmem);
+ state.fresh.used = physmem - pagetok(freemem + inacmem);
state.fresh.shared = 0; /* dont know how to get these */
state.fresh.buffers = 0;