• Home
  • Raw
  • Download

Lines Matching refs:s_

214   s_->stdin_pipe = base::Pipe::Create(base::Pipe::kWrNonBlock);  in Start()
215 proc_args.stdin_pipe_rd = *s_->stdin_pipe.rd; in Start()
216 s_->stdouterr_pipe = base::Pipe::Create(base::Pipe::kRdNonBlock); in Start()
217 proc_args.stdouterr_pipe_wr = *s_->stdouterr_pipe.wr; in Start()
220 s_->pid = fork(); in Start()
221 PERFETTO_CHECK(s_->pid >= 0); in Start()
222 if (s_->pid == 0) { in Start()
224 s_->stdin_pipe.wr.reset(); in Start()
225 s_->stdouterr_pipe.rd.reset(); in Start()
231 s_->status = kRunning; in Start()
237 s_->stdouterr_pipe.wr.reset(); in Start()
245 s_->exit_status_pipe = base::Pipe::Create(base::Pipe::kRdNonBlock); in Start()
248 int pid = s_->pid; in Start()
249 int exit_status_pipe_wr = s_->exit_status_pipe.wr.release(); in Start()
250 auto* rusage = s_->rusage.get(); in Start()
251 s_->waitpid_thread = std::thread([pid, exit_status_pipe_wr, rusage] { in Start()
275 if (s_->status != kRunning) in Poll()
276 return s_->status; // Nothing to poll. in Poll()
279 return s_->status; in Poll()
292 if (s_->exit_status_pipe.rd) { in PollInternal()
293 fds[num_fds].fd = *s_->exit_status_pipe.rd; in PollInternal()
297 if (s_->stdouterr_pipe.rd) { in PollInternal()
298 fds[num_fds].fd = *s_->stdouterr_pipe.rd; in PollInternal()
302 if (s_->stdin_pipe.wr) { in PollInternal()
303 fds[num_fds].fd = *s_->stdin_pipe.wr; in PollInternal()
323 PERFETTO_CHECK(s_->status != kNotStarted); in Wait()
337 while (s_->exit_status_pipe.rd || s_->stdouterr_pipe.rd) { in Wait()
351 if (!s_->exit_status_pipe.rd) in TryReadExitStatus()
356 read(*s_->exit_status_pipe.rd, &pid_stat, sizeof(pid_stat))); in TryReadExitStatus()
365 s_->waitpid_thread.join(); in TryReadExitStatus()
366 s_->exit_status_pipe.rd.reset(); in TryReadExitStatus()
368 s_->status = kTerminated; in TryReadExitStatus()
370 s_->returncode = WEXITSTATUS(pid_stat); in TryReadExitStatus()
372 s_->returncode = 128 + WTERMSIG(pid_stat); // Follow bash convention. in TryReadExitStatus()
380 if (!s_->stdin_pipe.wr) in TryPushStdin()
383 PERFETTO_DCHECK(args.input.empty() || s_->input_written < args.input.size()); in TryPushStdin()
386 PERFETTO_EINTR(write(*s_->stdin_pipe.wr, &args.input[s_->input_written], in TryPushStdin()
387 args.input.size() - s_->input_written)); in TryPushStdin()
394 s_->input_written += static_cast<size_t>(wsize); in TryPushStdin()
397 s_->stdin_pipe.wr.reset(); in TryPushStdin()
400 PERFETTO_DCHECK(s_->input_written <= args.input.size()); in TryPushStdin()
401 if (s_->input_written == args.input.size()) in TryPushStdin()
402 s_->stdin_pipe.wr.reset(); // Close stdin. in TryPushStdin()
406 if (!s_->stdouterr_pipe.rd) in TryReadStdoutAndErr()
410 PERFETTO_EINTR(read(*s_->stdouterr_pipe.rd, buf, sizeof(buf))); in TryReadStdoutAndErr()
415 s_->output.append(buf, static_cast<size_t>(rsize)); in TryReadStdoutAndErr()
417 s_->stdouterr_pipe.rd.reset(); in TryReadStdoutAndErr()
420 s_->stdouterr_pipe.rd.reset(); in TryReadStdoutAndErr()
425 kill(s_->pid, sig_num ? sig_num : SIGKILL); in KillAndWaitForTermination()
428 PERFETTO_DCHECK(!s_->waitpid_thread.joinable()); in KillAndWaitForTermination()