diff options
Diffstat (limited to 'simpleperf/workload.h')
-rw-r--r-- | simpleperf/workload.h | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/simpleperf/workload.h b/simpleperf/workload.h index 34fe7959..4ca93a42 100644 --- a/simpleperf/workload.h +++ b/simpleperf/workload.h @@ -51,17 +51,14 @@ class Workload { bool WaitChildProcess(int* exit_code); - private: - explicit Workload(const std::vector<std::string>& args, - const std::function<void ()>& function) - : work_state_(NotYetCreateNewProcess), - child_proc_args_(args), - child_proc_function_(function), - work_pid_(-1), - start_signal_fd_(-1), - exec_child_fd_(-1) { + // Set the function used to kill the workload process in ~Workload(). + void SetKillFunction(const std::function<void (pid_t)>& kill_function) { + kill_function_ = kill_function; } + private: + explicit Workload(const std::vector<std::string>& args, const std::function<void ()>& function); + bool CreateNewProcess(); void ChildProcessFn(int start_signal_fd, int exec_child_fd); bool WaitChildProcess(bool wait_forever, bool is_child_killed, int* exit_code); @@ -73,6 +70,7 @@ class Workload { pid_t work_pid_; int start_signal_fd_; // The parent process writes 1 to start workload in the child process. int exec_child_fd_; // The child process writes 1 to notify that execvp() failed. + std::function<void (pid_t)> kill_function_; DISALLOW_COPY_AND_ASSIGN(Workload); }; |