X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=execute.h;h=b4bb9600d1e691e8c697f2b2ed39e2dc98a308c6;hb=206bf5c294d300cf05ee7b17c5bf42a21f6a52c0;hp=d8073e14b022cbf21ef595ae597f61458715badc;hpb=ebfaa1586ec50e802cc8d650c453f9a0ece80aeb;p=elogind.git diff --git a/execute.h b/execute.h index d8073e14b..b4bb9600d 100644 --- a/execute.h +++ b/execute.h @@ -33,6 +33,8 @@ typedef struct ExecContext ExecContext; #include #include +struct CGroupBonding; + #include "list.h" #include "util.h" @@ -57,7 +59,8 @@ typedef enum ExecInput { struct ExecStatus { pid_t pid; - usec_t timestamp; + usec_t start_timestamp; + usec_t exit_timestamp; int code; /* as in siginfo_t::si_code */ int status; /* as in sigingo_t::si_status */ }; @@ -91,6 +94,7 @@ struct ExecContext { bool cpu_sched_reset_on_fork; bool non_blocking; + bool new_session; ExecInput input; ExecOutput output; @@ -145,16 +149,22 @@ typedef enum ExitStatus { EXIT_CPUAFFINITY, EXIT_GROUP, EXIT_USER, - EXIT_CAPABILITIES + EXIT_CAPABILITIES, + EXIT_CGROUP, /* 220 */ + EXIT_SETSID } ExitStatus; -int exec_spawn(const ExecCommand *command, +int exec_spawn(ExecCommand *command, const ExecContext *context, int *fds, unsigned n_fds, bool apply_permissions, bool apply_chroot, + struct CGroupBonding *cgroup_bondings, pid_t *ret); +void exec_command_done(ExecCommand *c); +void exec_command_done_array(ExecCommand *c, unsigned n); + void exec_command_free_list(ExecCommand *c); void exec_command_free_array(ExecCommand **c, unsigned n); @@ -162,12 +172,14 @@ char *exec_command_line(ExecCommand *c); void exec_command_dump(ExecCommand *c, FILE *f, const char *prefix); void exec_command_dump_list(ExecCommand *c, FILE *f, const char *prefix); void exec_command_append_list(ExecCommand **l, ExecCommand *e); +int exec_command_set(ExecCommand *c, const char *path, ...); void exec_context_init(ExecContext *c); void exec_context_done(ExecContext *c); void exec_context_dump(ExecContext *c, FILE* f, const char *prefix); void exec_status_fill(ExecStatus *s, pid_t pid, int code, int status); +void exec_status_dump(ExecStatus *s, FILE *f, const char *prefix); const char* exec_output_to_string(ExecOutput i); int exec_output_from_string(const char *s);