X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=src%2Fcore%2Fexecute.h;h=c1e9717dc8007ea360fe0994cc800012e19a3c57;hb=da7e457c5b9339721454ae8401a03ffdd781e6a9;hp=0d7e7dd65db1feb8727c5d5137519da1644b5741;hpb=b30e2f4c18ad81b04e4314fd191a5d458553773c;p=elogind.git
diff --git a/src/core/execute.h b/src/core/execute.h
index 0d7e7dd65..c1e9717dc 100644
--- a/src/core/execute.h
+++ b/src/core/execute.h
@@ -1,7 +1,6 @@
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-#ifndef fooexecutehfoo
-#define fooexecutehfoo
+#pragma once
/***
This file is part of systemd.
@@ -9,16 +8,16 @@
Copyright 2010 Lennart Poettering
systemd is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU General Public License
+ You should have received a copy of the GNU Lesser General Public License
along with systemd; If not, see .
***/
@@ -34,27 +33,10 @@ typedef struct ExecContext ExecContext;
#include
#include
-struct CGroupBonding;
-struct CGroupAttribute;
-
#include "list.h"
#include "util.h"
-typedef enum KillMode {
- KILL_CONTROL_GROUP = 0,
- KILL_PROCESS,
- KILL_NONE,
- _KILL_MODE_MAX,
- _KILL_MODE_INVALID = -1
-} KillMode;
-
-typedef enum KillWho {
- KILL_MAIN,
- KILL_CONTROL,
- KILL_ALL,
- _KILL_WHO_MAX,
- _KILL_WHO_INVALID = -1
-} KillWho;
+typedef struct Unit Unit;
typedef enum ExecInput {
EXEC_INPUT_NULL,
@@ -118,7 +100,7 @@ struct ExecContext {
ExecOutput std_output;
ExecOutput std_error;
- unsigned long timer_slack_nsec;
+ nsec_t timer_slack_nsec;
char *tcpwrap_name;
@@ -147,11 +129,6 @@ struct ExecContext {
uint64_t capability_bounding_set_drop;
- /* Not relevant for spawning processes, just for killing */
- KillMode kill_mode;
- int kill_signal;
- bool send_sigkill;
-
cap_t capabilities;
int secure_bits;
@@ -163,9 +140,10 @@ struct ExecContext {
bool non_blocking;
bool private_tmp;
bool private_network;
+ char *tmp_dir;
+ char *var_tmp_dir;
- bool control_group_modify;
- int control_group_persistent;
+ bool no_new_privileges;
/* This is not exposed to the user but available
* internally. We need it to make sure that whenever we spawn
@@ -174,24 +152,29 @@ struct ExecContext {
* don't enter a trigger loop. */
bool same_pgrp;
+ uint32_t *syscall_filter;
+
bool oom_score_adjust_set:1;
bool nice_set:1;
bool ioprio_set:1;
bool cpu_sched_set:1;
- bool timer_slack_nsec_set:1;
};
+#include "cgroup.h"
+
int exec_spawn(ExecCommand *command,
char **argv,
- const ExecContext *context,
+ ExecContext *context,
int fds[], unsigned n_fds,
char **environment,
bool apply_permissions,
bool apply_chroot,
bool apply_tty_stdin,
bool confirm_spawn,
- struct CGroupBonding *cgroup_bondings,
- struct CGroupAttribute *cgroup_attributes,
+ CGroupControllerMask cgroup_mask,
+ const char *cgroup_path,
+ const char *unit_id,
+ int pipe_fd[2],
pid_t *ret);
void exec_command_done(ExecCommand *c);
@@ -208,26 +191,22 @@ 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_done(ExecContext *c, bool reloading_or_reexecuting);
+void exec_context_tmp_dirs_done(ExecContext *c);
void exec_context_dump(ExecContext *c, FILE* f, const char *prefix);
void exec_context_tty_reset(const ExecContext *context);
int exec_context_load_environment(const ExecContext *c, char ***l);
+bool exec_context_may_touch_console(ExecContext *c);
+void exec_context_serialize(const ExecContext *c, Unit *u, FILE *f);
+
void exec_status_start(ExecStatus *s, pid_t pid);
void exec_status_exit(ExecStatus *s, ExecContext *context, 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);
-ExecOutput exec_output_from_string(const char *s);
-
-const char* exec_input_to_string(ExecInput i);
-ExecInput exec_input_from_string(const char *s);
-
-const char *kill_mode_to_string(KillMode k);
-KillMode kill_mode_from_string(const char *s);
-
-const char *kill_who_to_string(KillWho k);
-KillWho kill_who_from_string(const char *s);
+const char* exec_output_to_string(ExecOutput i) _const_;
+ExecOutput exec_output_from_string(const char *s) _pure_;
-#endif
+const char* exec_input_to_string(ExecInput i) _const_;
+ExecInput exec_input_from_string(const char *s) _pure_;