| #ifndef RUNNER_EXECUTOR_H |
| #define RUNNER_EXECUTOR_H |
| |
| #include "job_list.h" |
| #include "settings.h" |
| |
| struct execute_state |
| { |
| size_t next; |
| /* |
| * < 0 : No overall timeout used. |
| * = 0 : Timeouted, don't execute any more. |
| * > 0 : Timeout in use, time left. |
| */ |
| double time_left; |
| double resuming; |
| bool dry; |
| }; |
| |
| enum { |
| _F_JOURNAL, |
| _F_OUT, |
| _F_ERR, |
| _F_DMESG, |
| _F_LAST, |
| }; |
| |
| bool open_output_files(int dirfd, int *fds, bool write); |
| void close_outputs(int *fds); |
| |
| /* |
| * Initialize execute_state object to a state where it's ready to |
| * execute. Will validate the settings and serialize both settings and |
| * the job_list into the result directory, overwriting old files if |
| * settings set to do so. |
| */ |
| bool initialize_execute_state(struct execute_state *state, |
| struct settings *settings, |
| struct job_list *job_list); |
| |
| /* |
| * Initialize execute_state object to a state where it's ready to |
| * resume an already existing run. settings and job_list must have |
| * been initialized with init_settings et al, and will be read from |
| * the result directory pointed to by dirfd. |
| */ |
| bool initialize_execute_state_from_resume(int dirfd, |
| struct execute_state *state, |
| struct settings *settings, |
| struct job_list *job_list); |
| |
| bool execute(struct execute_state *state, |
| struct settings *settings, |
| struct job_list *job_list); |
| |
| |
| #endif |