X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fservice.h;h=23124e8eabc278fd4575c70021f8993ddde49a3e;hb=340a1d2330ddc1dd18ad75bcdddf32f63c84b4a1;hp=ad0b3b381e4d892f9322180debb5166394e327fa;hpb=e44da745d19b9e02e67e32ea82c3bad86175120c;p=elogind.git diff --git a/src/core/service.h b/src/core/service.h index ad0b3b381..23124e8ea 100644 --- a/src/core/service.h +++ b/src/core/service.h @@ -22,13 +22,12 @@ ***/ typedef struct Service Service; +typedef struct ServiceFDStore ServiceFDStore; -#include "unit.h" #include "path.h" #include "ratelimit.h" #include "kill.h" #include "exit-status.h" -#include "failure-action.h" typedef enum ServiceState { SERVICE_DEAD, @@ -39,6 +38,7 @@ typedef enum ServiceState { SERVICE_EXITED, /* Nothing is running anymore, but RemainAfterExit is true hence this is OK */ SERVICE_RELOAD, SERVICE_STOP, /* No STOP_PRE state, instead just register multiple STOP executables */ + SERVICE_STOP_SIGABRT, /* Watchdog timeout */ SERVICE_STOP_SIGTERM, SERVICE_STOP_SIGKILL, SERVICE_STOP_POST, @@ -114,6 +114,15 @@ typedef enum ServiceResult { _SERVICE_RESULT_INVALID = -1 } ServiceResult; +struct ServiceFDStore { + Service *service; + + int fd; + sd_event_source *event_source; + + LIST_FIELDS(ServiceFDStore, fd_store); +}; + struct Service { Unit meta; @@ -161,6 +170,7 @@ struct Service { pid_t main_pid, control_pid; int socket_fd; + bool socket_fd_selinux_context_net; int bus_endpoint_fd; @@ -178,9 +188,8 @@ struct Service { bool bus_name_good:1; bool forbid_restart:1; bool start_timeout_defined:1; -#ifdef HAVE_SYSV_COMPAT - int sysv_start_priority; -#endif + + bool reset_cpu_usage:1; char *bus_name; @@ -199,13 +208,17 @@ struct Service { NotifyAccess notify_access; NotifyState notify_state; + + ServiceFDStore *fd_store; + unsigned n_fd_store; + unsigned n_fd_store_max; }; extern const UnitVTable service_vtable; struct Socket; -int service_set_socket_fd(Service *s, int fd, struct Socket *socket); +int service_set_socket_fd(Service *s, int fd, struct Socket *socket, bool selinux_context_net); const char* service_state_to_string(ServiceState i) _const_; ServiceState service_state_from_string(const char *s) _pure_;