1c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Copyright (c) 2009 The Chromium Authors. All rights reserved. 2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be 3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file. 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/sys_info.h" 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/file_util.h" 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/logging.h" 9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottnamespace base { 11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottint64 SysInfo::AmountOfPhysicalMemory() { 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott long pages = sysconf(_SC_PHYS_PAGES); 14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott long page_size = sysconf(_SC_PAGE_SIZE); 15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (pages == -1 || page_size == -1) { 16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott NOTREACHED(); 17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return 0; 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return static_cast<int64>(pages) * page_size; 21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// static 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottsize_t SysInfo::MaxSharedMemorySize() { 25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott static size_t limit; 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott static bool limit_valid = false; 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (!limit_valid) { 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott std::string contents; 29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott file_util::ReadFileToString(FilePath("/proc/sys/kernel/shmmax"), &contents); 30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott limit = strtoul(contents.c_str(), NULL, 0); 31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott limit_valid = true; 32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return limit; 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} // namespace base 37