Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(128)

Side by Side Diff: base/process_util_posix.cc

Issue 14497: POSIX: don't leak FDs when launching child Processes. (Closed)
Patch Set: Fix Windows Compilation Created 12 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/process_util_mac.mm ('k') | base/process_util_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/process_util.h" 5 #include "base/process_util.h"
6 6
7 #include <sys/resource.h> 7 #include <sys/resource.h>
8 #include <sys/time.h> 8 #include <sys/time.h>
9 #include <sys/types.h> 9 #include <sys/types.h>
10 #include <sys/wait.h> 10 #include <sys/wait.h>
11 #include <unistd.h> 11 #include <unistd.h>
12 #include <limits>
12 13
13 #include "base/basictypes.h" 14 #include "base/basictypes.h"
14 #include "base/logging.h" 15 #include "base/logging.h"
15 #include "base/sys_info.h" 16 #include "base/sys_info.h"
16 #include "base/time.h" 17 #include "base/time.h"
17 18
18 const int kMicrosecondsPerSecond = 1000000; 19 const int kMicrosecondsPerSecond = 1000000;
19 20
20 namespace base { 21 namespace base {
21 22
22 int GetCurrentProcId() { 23 int GetCurrentProcId() {
23 return getpid(); 24 return getpid();
24 } 25 }
25 26
26 ProcessHandle GetCurrentProcessHandle() { 27 ProcessHandle GetCurrentProcessHandle() {
27 return GetCurrentProcId(); 28 return GetCurrentProcId();
28 } 29 }
29 30
30 int GetProcId(ProcessHandle process) { 31 int GetProcId(ProcessHandle process) {
31 return process; 32 return process;
32 } 33 }
33 34
35 int GetMaxFilesOpenInProcess() {
36 struct rlimit rlimit;
37 if (getrlimit(RLIMIT_NOFILE, &rlimit) != 0) {
38 return 0;
39 }
40
41 // rlim_t is a uint64 - clip to maxint.
42 // We do this since we use the value of this function to close FD #s in a loop
43 // if we didn't clamp the value, doing this would be too time consuming.
44 rlim_t max_int = static_cast<rlim_t>(std::numeric_limits<int32>::max());
45 if (rlimit.rlim_cur > max_int) {
46 return max_int;
47 }
48
49 return rlimit.rlim_cur;
50 }
51
34 ProcessMetrics::ProcessMetrics(ProcessHandle process) : process_(process), 52 ProcessMetrics::ProcessMetrics(ProcessHandle process) : process_(process),
35 last_time_(0), 53 last_time_(0),
36 last_system_time_(0) { 54 last_system_time_(0) {
37 processor_count_ = base::SysInfo::NumberOfProcessors(); 55 processor_count_ = base::SysInfo::NumberOfProcessors();
38 } 56 }
39 57
40 // static 58 // static
41 ProcessMetrics* ProcessMetrics::CreateProcessMetrics(ProcessHandle process) { 59 ProcessMetrics* ProcessMetrics::CreateProcessMetrics(ProcessHandle process) {
42 return new ProcessMetrics(process); 60 return new ProcessMetrics(process);
43 } 61 }
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 int cpu = static_cast<int>((system_time_delta * 100 + time_delta / 2) / 165 int cpu = static_cast<int>((system_time_delta * 100 + time_delta / 2) /
148 time_delta); 166 time_delta);
149 167
150 last_system_time_ = system_time; 168 last_system_time_ = system_time;
151 last_time_ = time; 169 last_time_ = time;
152 170
153 return cpu; 171 return cpu;
154 } 172 }
155 173
156 } // namespace base 174 } // namespace base
OLDNEW
« no previous file with comments | « base/process_util_mac.mm ('k') | base/process_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698