diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 4aed2c8219774f5d797760606b8489a92ddc5163 (patch) | |
tree | 3f8c130f7d269626bf6a9447407ef6c35954426a /kcontrol/info/memory_osx.cpp | |
download | tdebase-4aed2c8219774f5d797760606b8489a92ddc5163.tar.gz tdebase-4aed2c8219774f5d797760606b8489a92ddc5163.zip |
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
Diffstat (limited to 'kcontrol/info/memory_osx.cpp')
-rw-r--r-- | kcontrol/info/memory_osx.cpp | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/kcontrol/info/memory_osx.cpp b/kcontrol/info/memory_osx.cpp new file mode 100644 index 000000000..9c18c4a6e --- /dev/null +++ b/kcontrol/info/memory_osx.cpp @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2003 Benjamin Reed <ranger@befunk.com> + * + * memory_osx.cpp is part of the KDE program kcminfo. Copied wholesale + * from memory_fbsd.cpp =) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include <unistd.h> +#include <stdlib.h> +#include <qfile.h> +#include <mach/mach_init.h> +#include <mach/mach_host.h> +#include <mach/host_info.h> +#include <sys/stat.h> +#include <dirent.h> +#include <kdebug.h> + +void KMemoryWidget::update() +{ + + vm_statistics_data_t vm_info; + mach_msg_type_number_t info_count; + DIR *dirp; + struct dirent *dp; + t_memsize total; + + info_count = HOST_VM_INFO_COUNT; + if (host_statistics(mach_host_self (), HOST_VM_INFO, (host_info_t)&vm_info, &info_count)) { + kdDebug() << "could not get memory statistics" << endl; + return; + } + + Memory_Info[TOTAL_MEM] = MEMORY(vm_info.active_count + vm_info.inactive_count + + vm_info.free_count + vm_info.wire_count) * vm_page_size; + Memory_Info[FREE_MEM] = MEMORY(vm_info.free_count) * vm_page_size; + Memory_Info[SHARED_MEM] = NO_MEMORY_INFO; + Memory_Info[BUFFER_MEM] = NO_MEMORY_INFO; + Memory_Info[CACHED_MEM] = NO_MEMORY_INFO; + + dirp = opendir("/private/var/vm"); + if (!dirp) { + kdDebug() << "unable to open /private/var/vm" << endl; + return; + } + + total = 0; + + while ((dp = readdir (dirp)) != NULL) { + struct stat sb; + char fname [MAXNAMLEN]; + + if (strncmp (dp->d_name, "swapfile", 8)) + continue; + + strcpy (fname, "/private/var/vm/"); + strcat (fname, dp->d_name); + if (stat (fname, &sb) < 0) + continue; + + total += sb.st_size; + } + closedir (dirp); + + info_count = HOST_VM_INFO_COUNT; + if (host_statistics (mach_host_self (), HOST_VM_INFO, + (host_info_t) &vm_info, &info_count)) { + kdDebug() << "unable to get VM info" << endl; + } + + Memory_Info[SWAP_MEM] = total; + // off_t used = (vm_info.pageouts - vm_info.pageins) * vm_page_size; + Memory_Info[FREESWAP_MEM] = NO_MEMORY_INFO; + + /* free = MEMORY(vm_info.free_count) * vm_page_size; + used = MEMORY(vm_info.active_count) * vm_page_size; + total = MEMORY(vm_info.active_count + vm_info.inactive_count + + vm_info.free_count + vm_info.wire_count) * vm_page_size; */ + +} |