• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef BASE_SYS_INFO_H_
6 #define BASE_SYS_INFO_H_
7 
8 #include "base/basictypes.h"
9 
10 #include <string>
11 
12 class FilePath;
13 
14 namespace base {
15 
16 class SysInfo {
17  public:
18   // Return the number of logical processors/cores on the current machine.
19   static int NumberOfProcessors();
20 
21   // Return the number of bytes of physical memory on the current machine.
22   static int64 AmountOfPhysicalMemory();
23 
24   // Return the number of megabytes of physical memory on the current machine.
AmountOfPhysicalMemoryMB()25   static int AmountOfPhysicalMemoryMB() {
26     return static_cast<int>(AmountOfPhysicalMemory() / 1024 / 1024);
27   }
28 
29   // Return the available disk space in bytes on the volume containing |path|,
30   // or -1 on failure.
31   static int64 AmountOfFreeDiskSpace(const FilePath& path);
32 
33   // Return true if the given environment variable is defined.
34   // TODO: find a better place for HasEnvVar.
35   static bool HasEnvVar(const wchar_t* var);
36 
37   // Return the value of the given environment variable
38   // or an empty string if not defined.
39   // TODO: find a better place for GetEnvVar.
40   static std::wstring GetEnvVar(const wchar_t* var);
41 
42   // Returns the name of the host operating system.
43   static std::string OperatingSystemName();
44 
45   // Returns the version of the host operating system.
46   static std::string OperatingSystemVersion();
47 
48   // Retrieves detailed numeric values for the OS version.
49   // TODO(port): Implement a Linux version of this method and enable the
50   // corresponding unit test.
51   static void OperatingSystemVersionNumbers(int32 *major_version,
52                                             int32 *minor_version,
53                                             int32 *bugfix_version);
54 
55   // Returns the CPU architecture of the system. Exact return value may differ
56   // across platforms.
57   static std::string CPUArchitecture();
58 
59   // Returns the pixel dimensions of the primary display via the
60   // width and height parameters.
61   static void GetPrimaryDisplayDimensions(int* width, int* height);
62 
63   // Return the number of displays.
64   static int DisplayCount();
65 
66   // Return the smallest amount of memory (in bytes) which the VM system will
67   // allocate.
68   static size_t VMAllocationGranularity();
69 
70 #if defined(OS_POSIX) && !defined(OS_MACOSX)
71   // Returns the maximum SysV shared memory segment size.
72   static size_t MaxSharedMemorySize();
73 #endif
74 
75 #if defined(OS_CHROMEOS)
76   // Returns the name of the version entry we wish to look up in the
77   // Linux Standard Base release information file.
78   static std::string GetLinuxStandardBaseVersionKey();
79 
80   // Parses /etc/lsb-release to get version information for Google Chrome OS.
81   // Declared here so it can be exposed for unit testing.
82   static void ParseLsbRelease(const std::string& lsb_release,
83                               int32 *major_version,
84                               int32 *minor_version,
85                               int32 *bugfix_version);
86 #endif
87 };
88 
89 }  // namespace base
90 
91 #endif  // BASE_SYS_INFO_H_
92