Lines Matching refs:s_
64 s_->stdin_pipe = Pipe::Create(); in Start()
67 ::SetHandleInformation(*s_->stdin_pipe.rd, HANDLE_FLAG_INHERIT, 1)); in Start()
70 s_->stdouterr_pipe = Pipe::Create(); in Start()
72 ::SetHandleInformation(*s_->stdouterr_pipe.wr, HANDLE_FLAG_INHERIT, 1)); in Start()
90 start_info.hStdError = *s_->stdouterr_pipe.wr; in Start()
104 start_info.hStdOutput = *s_->stdouterr_pipe.wr; in Start()
115 start_info.hStdInput = *s_->stdin_pipe.rd; in Start()
132 s_->stdin_pipe.rd.reset(); in Start()
133 s_->stdouterr_pipe.wr.reset(); in Start()
137 s_->returncode = ERROR_FILE_NOT_FOUND; in Start()
138 s_->status = kTerminated; in Start()
139 s_->stdin_pipe.wr.reset(); in Start()
140 s_->stdouterr_pipe.rd.reset(); in Start()
146 s_->pid = proc_info.dwProcessId; in Start()
147 s_->win_proc_handle = ScopedPlatformHandle(proc_info.hProcess); in Start()
148 s_->win_thread_handle = ScopedPlatformHandle(proc_info.hThread); in Start()
149 s_->status = kRunning; in Start()
151 MovableState* s = s_.get(); in Start()
152 s_->stdin_thread = std::thread(&Subprocess::StdinThread, s, args.input); in Start()
155 PERFETTO_DCHECK(s_->stdouterr_pipe.rd); in Start()
156 s_->stdouterr_thread = std::thread(&Subprocess::StdoutErrThread, s); in Start()
213 if (s_->status != kRunning) in Poll()
214 return s_->status; // Nothing to poll. in Poll()
216 return s_->status; in Poll()
220 PERFETTO_CHECK(s_->status != kNotStarted); in Wait()
243 bool process_exited = !s_->win_proc_handle; in Wait()
246 PERFETTO_CHECK(::GetExitCodeProcess(*s_->win_proc_handle, &exit_code)); in Wait()
248 s_->returncode = static_cast<int>(exit_code); in Wait()
249 s_->status = kTerminated; in Wait()
250 s_->win_proc_handle.reset(); in Wait()
251 s_->win_thread_handle.reset(); in Wait()
255 PERFETTO_DCHECK(s_->status != kRunning); in Wait()
258 wait_handles[num_handles++] = *s_->win_proc_handle; in Wait()
263 std::unique_lock<std::mutex> lock(s_->mutex); in Wait()
266 if (!s_->locked_outerr_buf.empty()) { in Wait()
267 s_->output.append(std::move(s_->locked_outerr_buf)); in Wait()
268 s_->locked_outerr_buf.clear(); in Wait()
270 stdouterr_complete = !s_->stdouterr_pipe.rd; in Wait()
272 wait_handles[num_handles++] = s_->stdouterr_done_event.fd(); in Wait()
297 PERFETTO_DCHECK(!s_->win_proc_handle); in Wait()
298 PERFETTO_DCHECK(!s_->win_thread_handle); in Wait()
300 if (s_->stdin_thread.joinable()) // Might not exist if CreateProcess failed. in Wait()
301 s_->stdin_thread.join(); in Wait()
302 if (s_->stdouterr_thread.joinable()) in Wait()
303 s_->stdouterr_thread.join(); in Wait()
308 s_->stdin_pipe.wr.reset(); in Wait()
309 s_->stdouterr_pipe.rd.reset(); in Wait()
316 ::TerminateProcess(*s_->win_proc_handle, code); in KillAndWaitForTermination()
319 PERFETTO_DCHECK(!s_->stdin_thread.joinable()); in KillAndWaitForTermination()
320 PERFETTO_DCHECK(!s_->stdouterr_thread.joinable()); in KillAndWaitForTermination()