Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 <errno.h> | 7 #include <errno.h> |
| 8 #include <signal.h> | 8 #include <signal.h> |
| 9 #include <sys/resource.h> | 9 #include <sys/resource.h> |
| 10 #include <sys/time.h> | 10 #include <sys/time.h> |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 90 | 90 |
| 91 void EnableTerminationOnHeapCorruption() { | 91 void EnableTerminationOnHeapCorruption() { |
| 92 // On POSIX, there nothing to do AFAIK. | 92 // On POSIX, there nothing to do AFAIK. |
| 93 } | 93 } |
| 94 | 94 |
| 95 void RaiseProcessToHighPriority() { | 95 void RaiseProcessToHighPriority() { |
| 96 // On POSIX, we don't actually do anything here. We could try to nice() or | 96 // On POSIX, we don't actually do anything here. We could try to nice() or |
| 97 // setpriority() or sched_getscheduler, but these all require extra rights. | 97 // setpriority() or sched_getscheduler, but these all require extra rights. |
| 98 } | 98 } |
| 99 | 99 |
| 100 bool DidProcessCrash(ProcessHandle handle) { | |
| 101 int status; | |
| 102 if (waitpid(handle, &status, WNOHANG)) { | |
| 103 // I feel like dancing! | |
| 104 return false; | |
| 105 } | |
| 106 | |
| 107 if (WIFSIGNALED(status)) { | |
| 108 switch(WTERMSIG(status)) { | |
| 109 case SIGSEGV: | |
|
Mark Mentovai
2009/01/21 14:20:22
SIGBUS?
| |
| 110 case SIGILL: | |
| 111 case SIGABRT: | |
| 112 case SIGFPE: | |
| 113 return true; | |
| 114 default: | |
| 115 return false; | |
| 116 } | |
| 117 } | |
| 118 | |
| 119 if (WIFEXITED(status)) | |
| 120 return WEXITSTATUS(status) != 0; | |
|
Mark Mentovai
2009/01/21 14:20:22
That's not really a crash, though...
| |
| 121 | |
| 122 return false; | |
| 123 } | |
| 124 | |
| 100 bool WaitForExitCode(ProcessHandle handle, int* exit_code) { | 125 bool WaitForExitCode(ProcessHandle handle, int* exit_code) { |
| 101 int status; | 126 int status; |
| 102 while (waitpid(handle, &status, 0) == -1) { | 127 while (waitpid(handle, &status, 0) == -1) { |
| 103 if (errno != EINTR) { | 128 if (errno != EINTR) { |
| 104 NOTREACHED(); | 129 NOTREACHED(); |
| 105 return false; | 130 return false; |
| 106 } | 131 } |
| 107 } | 132 } |
| 108 | 133 |
| 109 if (WIFEXITED(status)) { | 134 if (WIFEXITED(status)) { |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 210 int cpu = static_cast<int>((system_time_delta * 100 + time_delta / 2) / | 235 int cpu = static_cast<int>((system_time_delta * 100 + time_delta / 2) / |
| 211 time_delta); | 236 time_delta); |
| 212 | 237 |
| 213 last_system_time_ = system_time; | 238 last_system_time_ = system_time; |
| 214 last_time_ = time; | 239 last_time_ = time; |
| 215 | 240 |
| 216 return cpu; | 241 return cpu; |
| 217 } | 242 } |
| 218 | 243 |
| 219 } // namespace base | 244 } // namespace base |
| OLD | NEW |