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

Side by Side Diff: base/process/process_fuchsia.cc

Issue 2941283002: fuchsia: Use new, qualified error names, disable old names. (Closed)
Patch Set: don have Created 3 years, 6 months 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/launch_fuchsia.cc ('k') | base/process/process_handle_fuchsia.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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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/process.h" 5 #include "base/process/process.h"
6 6
7 #include <magenta/process.h> 7 #include <magenta/process.h>
8 #include <magenta/syscalls.h> 8 #include <magenta/syscalls.h>
9 9
10 #include "base/debug/activity_tracker.h" 10 #include "base/debug/activity_tracker.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 // static 42 // static
43 Process Process::Open(ProcessId pid) { 43 Process Process::Open(ProcessId pid) {
44 if (pid == GetCurrentProcId()) 44 if (pid == GetCurrentProcId())
45 return Current(); 45 return Current();
46 46
47 // While a process with object id |pid| might exist, the job returned by 47 // While a process with object id |pid| might exist, the job returned by
48 // mx_job_default() might not contain it, so this call can fail. 48 // mx_job_default() might not contain it, so this call can fail.
49 mx_handle_t handle; 49 mx_handle_t handle;
50 mx_status_t status = 50 mx_status_t status =
51 mx_object_get_child(mx_job_default(), pid, MX_RIGHT_SAME_RIGHTS, &handle); 51 mx_object_get_child(mx_job_default(), pid, MX_RIGHT_SAME_RIGHTS, &handle);
52 if (status != NO_ERROR) { 52 if (status != MX_OK) {
53 DLOG(ERROR) << "mx_object_get_child failed: " << status; 53 DLOG(ERROR) << "mx_object_get_child failed: " << status;
54 return Process(); 54 return Process();
55 } 55 }
56 return Process(handle); 56 return Process(handle);
57 } 57 }
58 58
59 // static 59 // static
60 Process Process::OpenWithExtraPrivileges(ProcessId pid) { 60 Process Process::OpenWithExtraPrivileges(ProcessId pid) {
61 // No privileges to set. 61 // No privileges to set.
62 return Open(pid); 62 return Open(pid);
63 } 63 }
64 64
65 // static 65 // static
66 Process Process::DeprecatedGetProcessFromHandle(ProcessHandle handle) { 66 Process Process::DeprecatedGetProcessFromHandle(ProcessHandle handle) {
67 DCHECK_NE(handle, GetCurrentProcessHandle()); 67 DCHECK_NE(handle, GetCurrentProcessHandle());
68 mx_handle_t out; 68 mx_handle_t out;
69 if (mx_handle_duplicate(handle, MX_RIGHT_SAME_RIGHTS, &out) != NO_ERROR) { 69 if (mx_handle_duplicate(handle, MX_RIGHT_SAME_RIGHTS, &out) != MX_OK) {
70 DLOG(ERROR) << "mx_handle_duplicate failed: " << handle; 70 DLOG(ERROR) << "mx_handle_duplicate failed: " << handle;
71 return Process(); 71 return Process();
72 } 72 }
73 73
74 return Process(out); 74 return Process(out);
75 } 75 }
76 76
77 // static 77 // static
78 bool Process::CanBackgroundProcesses() { 78 bool Process::CanBackgroundProcesses() {
79 return false; 79 return false;
(...skipping 13 matching lines...) Expand all
93 } 93 }
94 94
95 Process Process::Duplicate() const { 95 Process Process::Duplicate() const {
96 if (is_current()) 96 if (is_current())
97 return Current(); 97 return Current();
98 98
99 if (!IsValid()) 99 if (!IsValid())
100 return Process(); 100 return Process();
101 101
102 mx_handle_t out; 102 mx_handle_t out;
103 if (mx_handle_duplicate(process_, MX_RIGHT_SAME_RIGHTS, &out) != NO_ERROR) { 103 if (mx_handle_duplicate(process_, MX_RIGHT_SAME_RIGHTS, &out) != MX_OK) {
104 DLOG(ERROR) << "mx_handle_duplicate failed: " << process_; 104 DLOG(ERROR) << "mx_handle_duplicate failed: " << process_;
105 return Process(); 105 return Process();
106 } 106 }
107 107
108 return Process(out); 108 return Process(out);
109 } 109 }
110 110
111 ProcessId Process::Pid() const { 111 ProcessId Process::Pid() const {
112 DCHECK(IsValid()); 112 DCHECK(IsValid());
113 return GetProcId(process_); 113 return GetProcId(process_);
114 } 114 }
115 115
116 bool Process::is_current() const { 116 bool Process::is_current() const {
117 return is_current_process_; 117 return is_current_process_;
118 } 118 }
119 119
120 void Process::Close() { 120 void Process::Close() {
121 is_current_process_ = false; 121 is_current_process_ = false;
122 if (IsValid()) { 122 if (IsValid()) {
123 mx_status_t status = mx_handle_close(process_); 123 mx_status_t status = mx_handle_close(process_);
124 DCHECK_EQ(status, NO_ERROR); 124 DCHECK_EQ(status, MX_OK);
125 process_ = kNullProcessHandle; 125 process_ = kNullProcessHandle;
126 } 126 }
127 } 127 }
128 128
129 bool Process::Terminate(int exit_code, bool wait) const { 129 bool Process::Terminate(int exit_code, bool wait) const {
130 // exit_code isn't supportable. 130 // exit_code isn't supportable.
131 mx_status_t status = mx_task_kill(process_); 131 mx_status_t status = mx_task_kill(process_);
132 if (status == NO_ERROR && wait) { 132 if (status == MX_OK && wait) {
133 mx_signals_t signals; 133 mx_signals_t signals;
134 status = mx_object_wait_one(process_, MX_TASK_TERMINATED, 134 status = mx_object_wait_one(process_, MX_TASK_TERMINATED,
135 mx_deadline_after(MX_SEC(60)), &signals); 135 mx_deadline_after(MX_SEC(60)), &signals);
136 if (status != NO_ERROR) { 136 if (status != MX_OK) {
137 DLOG(ERROR) << "Error waiting for process exit: " << status; 137 DLOG(ERROR) << "Error waiting for process exit: " << status;
138 } else { 138 } else {
139 DCHECK(signals & MX_TASK_TERMINATED); 139 DCHECK(signals & MX_TASK_TERMINATED);
140 } 140 }
141 } else if (status != NO_ERROR) { 141 } else if (status != MX_OK) {
142 DLOG(ERROR) << "Unable to terminate process: " << status; 142 DLOG(ERROR) << "Unable to terminate process: " << status;
143 } 143 }
144 144
145 return status >= 0; 145 return status >= 0;
146 } 146 }
147 147
148 bool Process::WaitForExit(int* exit_code) const { 148 bool Process::WaitForExit(int* exit_code) const {
149 return WaitForExitWithTimeout(TimeDelta::Max(), exit_code); 149 return WaitForExitWithTimeout(TimeDelta::Max(), exit_code);
150 } 150 }
151 151
152 bool Process::WaitForExitWithTimeout(TimeDelta timeout, int* exit_code) const { 152 bool Process::WaitForExitWithTimeout(TimeDelta timeout, int* exit_code) const {
153 // Record the event that this thread is blocking upon (for hang diagnosis). 153 // Record the event that this thread is blocking upon (for hang diagnosis).
154 base::debug::ScopedProcessWaitActivity process_activity(this); 154 base::debug::ScopedProcessWaitActivity process_activity(this);
155 155
156 mx_time_t mxtimeout_nanos = 156 mx_time_t mxtimeout_nanos =
157 timeout == TimeDelta::Max() ? MX_TIME_INFINITE : timeout.InNanoseconds(); 157 timeout == TimeDelta::Max() ? MX_TIME_INFINITE : timeout.InNanoseconds();
158 mx_signals_t signals_observed; 158 mx_signals_t signals_observed;
159 mx_status_t status = mx_object_wait_one(process_, MX_TASK_TERMINATED, 159 mx_status_t status = mx_object_wait_one(process_, MX_TASK_TERMINATED,
160 mxtimeout_nanos, &signals_observed); 160 mxtimeout_nanos, &signals_observed);
161 *exit_code = -1; 161 *exit_code = -1;
162 if (status != NO_ERROR && status != ERR_TIMED_OUT) 162 if (status != MX_OK && status != MX_ERR_TIMED_OUT)
163 return false; 163 return false;
164 if (status == ERR_TIMED_OUT && !signals_observed) 164 if (status == MX_ERR_TIMED_OUT && !signals_observed)
165 return false; 165 return false;
166 166
167 mx_info_process_t proc_info; 167 mx_info_process_t proc_info;
168 status = mx_object_get_info(process_, MX_INFO_PROCESS, &proc_info, 168 status = mx_object_get_info(process_, MX_INFO_PROCESS, &proc_info,
169 sizeof(proc_info), nullptr, nullptr); 169 sizeof(proc_info), nullptr, nullptr);
170 if (status != NO_ERROR) 170 if (status != MX_OK)
171 return status; 171 return status;
172 172
173 *exit_code = proc_info.return_code; 173 *exit_code = proc_info.return_code;
174 return true; 174 return true;
175 } 175 }
176 176
177 bool Process::IsProcessBackgrounded() const { 177 bool Process::IsProcessBackgrounded() const {
178 // See SetProcessBackgrounded(). 178 // See SetProcessBackgrounded().
179 DCHECK(IsValid()); 179 DCHECK(IsValid());
180 return false; 180 return false;
181 } 181 }
182 182
183 bool Process::SetProcessBackgrounded(bool value) { 183 bool Process::SetProcessBackgrounded(bool value) {
184 // No process priorities on Fuchsia. TODO(fuchsia): See MG-783, and update 184 // No process priorities on Fuchsia. TODO(fuchsia): See MG-783, and update
185 // this later if priorities are implemented. 185 // this later if priorities are implemented.
186 return false; 186 return false;
187 } 187 }
188 188
189 int Process::GetPriority() const { 189 int Process::GetPriority() const {
190 DCHECK(IsValid()); 190 DCHECK(IsValid());
191 // No process priorities on Fuchsia. 191 // No process priorities on Fuchsia.
192 return 0; 192 return 0;
193 } 193 }
194 194
195 } // namespace base 195 } // namespace base
OLDNEW
« no previous file with comments | « base/process/launch_fuchsia.cc ('k') | base/process/process_handle_fuchsia.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698