summaryrefslogtreecommitdiff
path: root/simpleperf/workload.h
diff options
context:
space:
mode:
Diffstat (limited to 'simpleperf/workload.h')
-rw-r--r--simpleperf/workload.h16
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);
};