diff options
author | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-23 21:57:11 +0000 |
---|---|---|
committer | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-23 21:57:11 +0000 |
commit | 5f5ac6a852057825cb054642785c2b30ab46f1b2 (patch) | |
tree | ddc517c52e9e32560c38d298da06d9c2c52b0500 /base | |
parent | 930a187b4f69bbe38746021f715307d85d92cf3f (diff) | |
download | chromium_src-5f5ac6a852057825cb054642785c2b30ab46f1b2.zip chromium_src-5f5ac6a852057825cb054642785c2b30ab46f1b2.tar.gz chromium_src-5f5ac6a852057825cb054642785c2b30ab46f1b2.tar.bz2 |
posix: split OS-specific bits out of sys_info_posix
Split into Linux and BSD-specific files.
Review URL: http://codereview.chromium.org/427010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32860 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/base.gyp | 13 | ||||
-rw-r--r-- | base/sys_info_freebsd.cc | 31 | ||||
-rw-r--r-- | base/sys_info_linux.cc | 36 | ||||
-rw-r--r-- | base/sys_info_openbsd.cc | 22 | ||||
-rw-r--r-- | base/sys_info_posix.cc | 52 |
5 files changed, 104 insertions, 50 deletions
diff --git a/base/base.gyp b/base/base.gyp index e7eda09..5ba7d4b 100644 --- a/base/base.gyp +++ b/base/base.gyp @@ -297,7 +297,10 @@ 'string_util_win.h', 'sys_info.h', 'sys_info_chromeos.cc', + 'sys_info_freebsd.cc', + 'sys_info_linux.cc', 'sys_info_mac.cc', + 'sys_info_openbsd.cc', 'sys_info_posix.cc', 'sys_info_win.cc', 'sys_string_conversions.h', @@ -465,6 +468,16 @@ ], }, ], + # For now, just test the *BSD platforms enough to exclude them. + # Subsequent changes will include them further. + [ 'OS != "freebsd"', { + 'sources/': [ ['exclude', '_freebsd\\.cc$'] ], + }, + ], + [ 'OS != "openbsd"', { + 'sources/': [ ['exclude', '_openbsd\\.cc$'] ], + }, + ], [ 'GENERATOR == "quentin"', { # Quentin builds don't have a recent enough glibc to include the # inotify headers diff --git a/base/sys_info_freebsd.cc b/base/sys_info_freebsd.cc new file mode 100644 index 0000000..4d375a7 --- /dev/null +++ b/base/sys_info_freebsd.cc @@ -0,0 +1,31 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/sys_info.h" + +#include "base/logging.h" + +namespace base { + +int64 SysInfo::AmountOfPhysicalMemory() { + int pages, page_size; + size_t size = sizeof(pages); + sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0); + sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0); + if (pages == -1 || page_size == -1) { + NOTREACHED(); + return 0; + } + return static_cast<int64>(pages) * page_size; +} + +// static +size_t SysInfo::MaxSharedMemorySize() { + size_t limit; + size_t size = sizeof(limit); + sysctlbyname("kern.ipc.shmmax", &limit, &size, NULL, 0); + return limit; +} + +} // namespace base diff --git a/base/sys_info_linux.cc b/base/sys_info_linux.cc new file mode 100644 index 0000000..67bfe5a6 --- /dev/null +++ b/base/sys_info_linux.cc @@ -0,0 +1,36 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/sys_info.h" + +#include "base/file_util.h" +#include "base/logging.h" + +namespace base { + +int64 SysInfo::AmountOfPhysicalMemory() { + long pages = sysconf(_SC_PHYS_PAGES); + long page_size = sysconf(_SC_PAGE_SIZE); + if (pages == -1 || page_size == -1) { + NOTREACHED(); + return 0; + } + + return static_cast<int64>(pages) * page_size; +} + +// static +size_t SysInfo::MaxSharedMemorySize() { + static size_t limit; + static bool limit_valid = false; + if (!limit_valid) { + std::string contents; + file_util::ReadFileToString(FilePath("/proc/sys/kernel/shmmax"), &contents); + limit = strtoul(contents.c_str(), NULL, 0); + limit_valid = true; + } + return limit; +} + +} // namespace base diff --git a/base/sys_info_openbsd.cc b/base/sys_info_openbsd.cc new file mode 100644 index 0000000..5f85888 --- /dev/null +++ b/base/sys_info_openbsd.cc @@ -0,0 +1,22 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/sys_info.h" + +#include "base/logging.h" + +namespace base { + +int SysInfo::NumberOfProcessors() { + int mib[] = { CTL_HW, HW_NCPU }; + int ncpu; + size_t size = sizeof(ncpu); + if (sysctl(mib, 2, &ncpu, &size, NULL, 0) == -1) { + NOTREACHED(); + return 1; + } + return ncpu; +} + +} // namespace base diff --git a/base/sys_info_posix.cc b/base/sys_info_posix.cc index 34d9df3..af33331 100644 --- a/base/sys_info_posix.cc +++ b/base/sys_info_posix.cc @@ -26,19 +26,10 @@ namespace base { +#if !defined(OS_OPENBSD) int SysInfo::NumberOfProcessors() { -#if defined(OS_OPENBSD) - int mib[] = { CTL_HW, HW_NCPU }; - int ncpu; - size_t size = sizeof(ncpu); - if (sysctl(mib, 2, &ncpu, &size, NULL, 0) == -1) { - NOTREACHED(); - return 1; - } - return ncpu; -#else // It seems that sysconf returns the number of "logical" processors on both - // mac and linux. So we get the number of "online logical" processors. + // Mac and Linux. So we get the number of "online logical" processors. long res = sysconf(_SC_NPROCESSORS_ONLN); if (res == -1) { NOTREACHED(); @@ -46,28 +37,6 @@ int SysInfo::NumberOfProcessors() { } return static_cast<int>(res); -#endif -} - -#if !defined(OS_MACOSX) -// static -int64 SysInfo::AmountOfPhysicalMemory() { -#if defined(OS_FREEBSD) - // _SC_PHYS_PAGES is not part of POSIX and not available on OS X or - // FreeBSD - // TODO(benl): I have no idea how to get this - NOTIMPLEMENTED(); - return 0; -#else - long pages = sysconf(_SC_PHYS_PAGES); - long page_size = sysconf(_SC_PAGE_SIZE); - if (pages == -1 || page_size == -1) { - NOTREACHED(); - return 0; - } - - return static_cast<int64>(pages) * page_size; -#endif } #endif @@ -156,21 +125,4 @@ size_t SysInfo::VMAllocationGranularity() { return getpagesize(); } -#if defined(OS_LINUX) -// static -size_t SysInfo::MaxSharedMemorySize() { - static size_t limit; - static bool limit_valid = false; - - if (!limit_valid) { - std::string contents; - file_util::ReadFileToString(FilePath("/proc/sys/kernel/shmmax"), &contents); - limit = strtoul(contents.c_str(), NULL, 0); - limit_valid = true; - } - - return limit; -} -#endif - } // namespace base |