Index: trunk/src/base/sys_info_linux.cc |
=================================================================== |
--- trunk/src/base/sys_info_linux.cc (revision 231623) |
+++ trunk/src/base/sys_info_linux.cc (working copy) |
@@ -7,7 +7,6 @@ |
#include <limits> |
#include "base/file_util.h" |
-#include "base/lazy_instance.h" |
#include "base/logging.h" |
#include "base/strings/string_number_conversions.h" |
@@ -23,34 +22,52 @@ |
return static_cast<int64>(pages) * page_size; |
} |
-size_t MaxSharedMemorySize() { |
- std::string contents; |
- base::ReadFileToString(base::FilePath("/proc/sys/kernel/shmmax"), &contents); |
- DCHECK(!contents.empty()); |
- if (!contents.empty() && contents[contents.length() - 1] == '\n') { |
- contents.erase(contents.length() - 1); |
- } |
+} // namespace |
- int64 limit; |
- if (!base::StringToInt64(contents, &limit)) { |
- limit = 0; |
+namespace base { |
+ |
+// static |
+int64 SysInfo::AmountOfPhysicalMemory() { |
+ return AmountOfMemory(_SC_PHYS_PAGES); |
+} |
+ |
+// static |
+int64 SysInfo::AmountOfAvailablePhysicalMemory() { |
+ return AmountOfMemory(_SC_AVPHYS_PAGES); |
+} |
+ |
+// static |
+size_t SysInfo::MaxSharedMemorySize() { |
+ static int64 limit; |
+ static bool limit_valid = false; |
+ if (!limit_valid) { |
+ std::string contents; |
+ ReadFileToString(FilePath("/proc/sys/kernel/shmmax"), &contents); |
+ DCHECK(!contents.empty()); |
+ if (!contents.empty() && contents[contents.length() - 1] == '\n') { |
+ contents.erase(contents.length() - 1); |
+ } |
+ if (base::StringToInt64(contents, &limit)) { |
+ DCHECK(limit >= 0); |
+ DCHECK(static_cast<uint64>(limit) <= std::numeric_limits<size_t>::max()); |
+ limit_valid = true; |
+ } else { |
+ NOTREACHED(); |
+ return 0; |
+ } |
} |
- if (limit < 0 || |
- static_cast<uint64>(limit) > std::numeric_limits<size_t>::max()) { |
- limit = 0; |
- } |
- DCHECK(limit > 0); |
return static_cast<size_t>(limit); |
} |
-std::string CPUModelName() { |
+// static |
+std::string SysInfo::CPUModelName() { |
#if defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL) |
const char kCpuModelPrefix[] = "Hardware"; |
#else |
const char kCpuModelPrefix[] = "model name"; |
#endif |
std::string contents; |
- base::ReadFileToString(base::FilePath("/proc/cpuinfo"), &contents); |
+ ReadFileToString(FilePath("/proc/cpuinfo"), &contents); |
DCHECK(!contents.empty()); |
if (!contents.empty()) { |
std::istringstream iss(contents); |
@@ -65,52 +82,4 @@ |
return std::string(); |
} |
-class LazySysInfo { |
- public: |
- LazySysInfo() |
- : kPhysicalMemory_(AmountOfMemory(_SC_PHYS_PAGES)), |
- kMaxSharedMemorySize_(MaxSharedMemorySize()), |
- kCpuModelName_(CPUModelName()) { } |
- |
- ~LazySysInfo() { } |
- |
- int64 physical_memory() { return kPhysicalMemory_; } |
- size_t max_shared_memory_size() { return kMaxSharedMemorySize_; } |
- std::string cpu_model_name() { return kCpuModelName_; } |
- |
- private: |
- const int64 kPhysicalMemory_; |
- const size_t kMaxSharedMemorySize_; |
- const std::string kCpuModelName_; |
- |
- DISALLOW_COPY_AND_ASSIGN(LazySysInfo); |
-}; |
- |
-base::LazyInstance<LazySysInfo>::Leaky |
- g_lazy_sys_info = LAZY_INSTANCE_INITIALIZER; |
- |
-} // namespace |
- |
-namespace base { |
- |
-// static |
-int64 SysInfo::AmountOfAvailablePhysicalMemory() { |
- return AmountOfMemory(_SC_AVPHYS_PAGES); |
-} |
- |
-// static |
-int64 SysInfo::AmountOfPhysicalMemory() { |
- return g_lazy_sys_info.Get().physical_memory(); |
-} |
- |
-// static |
-size_t SysInfo::MaxSharedMemorySize() { |
- return g_lazy_sys_info.Get().max_shared_memory_size(); |
-} |
- |
-// static |
-std::string SysInfo::CPUModelName() { |
- return g_lazy_sys_info.Get().cpu_model_name(); |
-} |
- |
} // namespace base |