diff options
Diffstat (limited to 'x11/kdebase/patches/patch-ao')
-rw-r--r-- | x11/kdebase/patches/patch-ao | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/x11/kdebase/patches/patch-ao b/x11/kdebase/patches/patch-ao new file mode 100644 index 00000000000..e0a0afd25a2 --- /dev/null +++ b/x11/kdebase/patches/patch-ao @@ -0,0 +1,98 @@ +$NetBSD: patch-ao,v 1.3 1999/07/15 08:46:23 tron Exp $ + +--- /dev/null Fri Jan 29 20:07:16 1999 ++++ kcontrol/info/memory_netbsd.cpp Fri Jan 29 20:04:24 1999 +@@ -0,0 +1,93 @@ ++#include <sys/param.h> ++#if __NetBSD_Version__ > 103080000 ++#define UVM ++#endif ++ ++#include <stdlib.h> ++#include <unistd.h> ++#include <sys/types.h> ++#include <sys/sysctl.h> ++#include <vm/vm_swap.h> ++#ifdef UVM ++#include <uvm/uvm_extern.h> ++#endif ++ ++void KMemoryWidget::update() ++{ ++ struct swapent *swaplist; ++ int mib[2], memory, nswap, rnswap, totalswap, freeswap, usedswap; ++ size_t len; ++#ifdef UVM ++ struct uvmexp uvmexp; ++#endif ++ ++ /* memory */ ++ mib[0] = CTL_HW; ++ mib[1] = HW_PHYSMEM; ++ len = sizeof(memory); ++ if( sysctl(mib,2,&memory,&len,NULL,0)< 0 ) ++ totalMem->setText(klocale->translate("Problem in determining")); ++ else ++ totalMem->setText(format(memory)); ++ ++#ifdef UVM ++ mib[0] = CTL_VM; ++ mib[1] = VM_UVMEXP; ++ len = sizeof(uvmexp); ++ if ( sysctl(mib, 2, &uvmexp, &len, NULL, 0) < 0 ) ++ { ++ freeMem->setText(klocale->translate("Problem in determining")); ++ activeMem->setText(klocale->translate("Problem in determining")); ++ inactiveMem->setText(klocale->translate("Problem in determining")); ++ swapMem->setText(klocale->translate("Problem in determining")); ++ freeSwapMem->setText(klocale->translate("Problem in determining")); ++ } ++ else ++ { ++ freeMem->setText(format((long)uvmexp.free * uvmexp.pagesize)); ++ activeMem->setText(format((long)uvmexp.active * uvmexp.pagesize)); ++ inactiveMem->setText(format((long)uvmexp.inactive * uvmexp.pagesize)); ++ swapMem->setText(format((long)uvmexp.swpages * uvmexp.pagesize)); ++ freeSwapMem->setText(format((long)(uvmexp.swpages - uvmexp.swpginuse) * ++ uvmexp.pagesize)); ++ } ++#else ++ freeMem->setText(klocale->translate("Not calculated")); ++ activeMem->setText(klocale->translate("Not calculated")); ++ inactiveMem->setText(klocale->translate("Not calculated")); ++ ++ /* swap */ ++ totalswap = freeswap = usedswap = 0; ++ nswap = swapctl(SWAP_NSWAP,0,0); ++ if ( nswap > 0 ) ++ { ++ if ( (swaplist = (struct swapent *)malloc(nswap * sizeof(*swaplist))) ) ++ { ++ rnswap = swapctl(SWAP_STATS,swaplist,nswap); ++ if ( rnswap < 0 || rnswap > nswap ) ++ totalswap = freeswap = -1; /* Error */ ++ else ++ { ++ while ( rnswap-- > 0 ) ++ { ++ totalswap += swaplist[rnswap].se_nblks; ++ usedswap += swaplist[rnswap].se_inuse; ++ } ++ freeswap = totalswap - usedswap; ++ } ++ } ++ else ++ totalswap = freeswap = -1; /* Error */ ++ if ( totalswap == -1 ) ++ { ++ swapMem->setText(klocale->translate("Problem in determining")); ++ freeSwapMem->setText(klocale->translate("Problem in determining")); ++ } ++ else ++ { /* Cast to long for LP64 hosts */ ++ swapMem->setText(format(dbtob((long)totalswap))); ++ freeSwapMem->setText(format(dbtob((long)freeswap))); ++ } ++ } ++#endif ++} |