diff options
author | mdempsky@google.com <mdempsky@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-10 02:22:15 +0000 |
---|---|---|
committer | mdempsky@google.com <mdempsky@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-10 02:22:15 +0000 |
commit | 655d7c1682cf51359c01be3ecadb55ecbdaabb2f (patch) | |
tree | 8e997c2f68c0d04409b56e7a18c7a2f870b8facc /base/sys_info_openbsd.cc | |
parent | 981ba747337119ff337c46e7936eae9b45eb0a54 (diff) | |
download | chromium_src-655d7c1682cf51359c01be3ecadb55ecbdaabb2f.zip chromium_src-655d7c1682cf51359c01be3ecadb55ecbdaabb2f.tar.gz chromium_src-655d7c1682cf51359c01be3ecadb55ecbdaabb2f.tar.bz2 |
Implement missing SysInfo methods on OpenBSD
Adds AmountOfAvailablePhysicalMemory (based on Linux's implementation)
and CPUModelName() (based on OS X's implementation).
Review URL: https://chromiumcodereview.appspot.com/13945012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193295 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/sys_info_openbsd.cc')
-rw-r--r-- | base/sys_info_openbsd.cc | 43 |
1 files changed, 35 insertions, 8 deletions
diff --git a/base/sys_info_openbsd.cc b/base/sys_info_openbsd.cc index b9aec20..edbb2c9 100644 --- a/base/sys_info_openbsd.cc +++ b/base/sys_info_openbsd.cc @@ -10,30 +10,45 @@ #include "base/logging.h" +namespace { + +int64 AmountOfMemory(int pages_name) { + long pages = sysconf(pages_name); + long page_size = sysconf(_SC_PAGESIZE); + if (pages == -1 || page_size == -1) { + NOTREACHED(); + return 0; + } + return static_cast<int64>(pages) * page_size; +} + +} // namespace + namespace base { +// static int SysInfo::NumberOfProcessors() { int mib[] = { CTL_HW, HW_NCPU }; int ncpu; size_t size = sizeof(ncpu); - if (sysctl(mib, arraysize(mib), &ncpu, &size, NULL, 0) == -1) { + if (sysctl(mib, arraysize(mib), &ncpu, &size, NULL, 0) < 0) { NOTREACHED(); return 1; } return ncpu; } +// static int64 SysInfo::AmountOfPhysicalMemory() { - long pages = sysconf(_SC_PHYS_PAGES); - long page_size = sysconf(_SC_PAGESIZE); - if (pages == -1 || page_size == -1) { - NOTREACHED(); - return 0; - } + return AmountOfMemory(_SC_PHYS_PAGES); +} - return static_cast<int64>(pages) * page_size; +// static +int64 SysInfo::AmountOfAvailablePhysicalMemory() { + return AmountOfMemory(_SC_AVPHYS_PAGES); } +// static size_t SysInfo::MaxSharedMemorySize() { int mib[] = { CTL_KERN, KERN_SHMINFO, KERN_SHMINFO_SHMMAX }; size_t limit; @@ -45,4 +60,16 @@ size_t SysInfo::MaxSharedMemorySize() { return limit; } +// static +std::string SysInfo::CPUModelName() { + int mib[] = { CTL_HW, HW_MODEL }; + char name[256]; + size_t len = arraysize(name); + if (sysctl(mib, arraysize(mib), name, &len, NULL, 0) < 0) { + NOTREACHED(); + return std::string(); + } + return name; +} + } // namespace base |