From 4aed2c8219774f5d797760606b8489a92ddc5163 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kcontrol/info/memory_sgi.cpp | 75 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 kcontrol/info/memory_sgi.cpp (limited to 'kcontrol/info/memory_sgi.cpp') diff --git a/kcontrol/info/memory_sgi.cpp b/kcontrol/info/memory_sgi.cpp new file mode 100644 index 000000000..2bc0d0c65 --- /dev/null +++ b/kcontrol/info/memory_sgi.cpp @@ -0,0 +1,75 @@ + +#include +#include +#include +#include + +// The following define is needed for SGI IRIX 6.2 +#define _KMEMUSER +#include + +#include +#include + +#ifndef UBSIZE +#define UBSIZE 512 +#endif + + +void KMemoryWidget::update() +{ + int pagesize = getpagesize(); + + struct rminfo rmi; + if( sysmp(MP_SAGET, MPSA_RMINFO, &rmi, sizeof(rmi)) == -1 ) + return; + Memory_Info[TOTAL_MEM] = MEMORY(rmi.physmem) * pagesize; // total physical memory (without swaps) + Memory_Info[FREE_MEM] = MEMORY(rmi.freemem) * pagesize; // total free physical memory (without swaps) + Memory_Info[BUFFER_MEM] = MEMORY(rmi.bufmem) * pagesize; + + + //FIXME: Memory_Info[CACHED_MEM]" + Memory_Info[CACHED_MEM] = NO_MEMORY_INFO; // cached memory in ram + + long val; + swapctl(SC_GETSWAPTOT, &val); + Memory_Info[SWAP_MEM] = MEMORY(val) * UBSIZE; // total size of all swap-partitions + + swapctl(SC_GETFREESWAP, &val); + Memory_Info[FREESWAP_MEM] = MEMORY(val) * UBSIZE; // free memory in swap-partitions + +#ifndef MPKA_SHMINFO + /* Irix 6.5 (also 6.4?) */ + Memory_Info[SHARED_MEM] = NO_MEMORY_INFO; +#else + FILE *kmem = fopen("/dev/kmem", "r"); + if( kmem == 0 ) { + Memory_Info[SHARED_MEM] = NO_MEMORY_INFO; + return; + } + + long shmip = sysmp(MP_KERNADDR, MPKA_SHMINFO); + fseek( kmem, shmip, 0 ); + struct shminfo shmi; + fread( &shmi, sizeof(shmi), 1, kmem ); + + long shmem = sysmp(MP_KERNADDR, MPKA_SHM); + + val = 0; + long pos; + struct shmid_ds shmid; + for( int i=0 ; i