1*d83cc019SAndroid Build Coastguard Worker #ifndef RUNNER_EXECUTOR_H 2*d83cc019SAndroid Build Coastguard Worker #define RUNNER_EXECUTOR_H 3*d83cc019SAndroid Build Coastguard Worker 4*d83cc019SAndroid Build Coastguard Worker #include "job_list.h" 5*d83cc019SAndroid Build Coastguard Worker #include "settings.h" 6*d83cc019SAndroid Build Coastguard Worker 7*d83cc019SAndroid Build Coastguard Worker struct execute_state 8*d83cc019SAndroid Build Coastguard Worker { 9*d83cc019SAndroid Build Coastguard Worker size_t next; 10*d83cc019SAndroid Build Coastguard Worker /* 11*d83cc019SAndroid Build Coastguard Worker * < 0 : No overall timeout used. 12*d83cc019SAndroid Build Coastguard Worker * = 0 : Timeouted, don't execute any more. 13*d83cc019SAndroid Build Coastguard Worker * > 0 : Timeout in use, time left. 14*d83cc019SAndroid Build Coastguard Worker */ 15*d83cc019SAndroid Build Coastguard Worker double time_left; 16*d83cc019SAndroid Build Coastguard Worker double resuming; 17*d83cc019SAndroid Build Coastguard Worker bool dry; 18*d83cc019SAndroid Build Coastguard Worker }; 19*d83cc019SAndroid Build Coastguard Worker 20*d83cc019SAndroid Build Coastguard Worker enum { 21*d83cc019SAndroid Build Coastguard Worker _F_JOURNAL, 22*d83cc019SAndroid Build Coastguard Worker _F_OUT, 23*d83cc019SAndroid Build Coastguard Worker _F_ERR, 24*d83cc019SAndroid Build Coastguard Worker _F_DMESG, 25*d83cc019SAndroid Build Coastguard Worker _F_LAST, 26*d83cc019SAndroid Build Coastguard Worker }; 27*d83cc019SAndroid Build Coastguard Worker 28*d83cc019SAndroid Build Coastguard Worker bool open_output_files(int dirfd, int *fds, bool write); 29*d83cc019SAndroid Build Coastguard Worker void close_outputs(int *fds); 30*d83cc019SAndroid Build Coastguard Worker 31*d83cc019SAndroid Build Coastguard Worker /* 32*d83cc019SAndroid Build Coastguard Worker * Initialize execute_state object to a state where it's ready to 33*d83cc019SAndroid Build Coastguard Worker * execute. Will validate the settings and serialize both settings and 34*d83cc019SAndroid Build Coastguard Worker * the job_list into the result directory, overwriting old files if 35*d83cc019SAndroid Build Coastguard Worker * settings set to do so. 36*d83cc019SAndroid Build Coastguard Worker */ 37*d83cc019SAndroid Build Coastguard Worker bool initialize_execute_state(struct execute_state *state, 38*d83cc019SAndroid Build Coastguard Worker struct settings *settings, 39*d83cc019SAndroid Build Coastguard Worker struct job_list *job_list); 40*d83cc019SAndroid Build Coastguard Worker 41*d83cc019SAndroid Build Coastguard Worker /* 42*d83cc019SAndroid Build Coastguard Worker * Initialize execute_state object to a state where it's ready to 43*d83cc019SAndroid Build Coastguard Worker * resume an already existing run. settings and job_list must have 44*d83cc019SAndroid Build Coastguard Worker * been initialized with init_settings et al, and will be read from 45*d83cc019SAndroid Build Coastguard Worker * the result directory pointed to by dirfd. 46*d83cc019SAndroid Build Coastguard Worker */ 47*d83cc019SAndroid Build Coastguard Worker bool initialize_execute_state_from_resume(int dirfd, 48*d83cc019SAndroid Build Coastguard Worker struct execute_state *state, 49*d83cc019SAndroid Build Coastguard Worker struct settings *settings, 50*d83cc019SAndroid Build Coastguard Worker struct job_list *job_list); 51*d83cc019SAndroid Build Coastguard Worker 52*d83cc019SAndroid Build Coastguard Worker bool execute(struct execute_state *state, 53*d83cc019SAndroid Build Coastguard Worker struct settings *settings, 54*d83cc019SAndroid Build Coastguard Worker struct job_list *job_list); 55*d83cc019SAndroid Build Coastguard Worker 56*d83cc019SAndroid Build Coastguard Worker 57*d83cc019SAndroid Build Coastguard Worker #endif 58