SERVICE_START,
SERVICE_START_POST,
SERVICE_RUNNING,
+ SERVICE_EXITED, /* Nothing is running anymore, but ValidNoProcess is true, ehnce this is OK */
SERVICE_RELOAD,
SERVICE_STOP, /* No STOP_PRE state, instead just register multiple STOP executables */
SERVICE_STOP_SIGTERM,
SERVICE_EXEC_RELOAD,
SERVICE_EXEC_STOP,
SERVICE_EXEC_STOP_POST,
- _SERVICE_EXEC_MAX,
- _SERVICE_EXEC_INVALID = -1
+ _SERVICE_EXEC_COMMAND_MAX,
+ _SERVICE_EXEC_COMMAND_INVALID = -1
} ServiceExecCommand;
struct Service {
usec_t restart_usec;
usec_t timeout_usec;
- ExecCommand* exec_command[_SERVICE_EXEC_MAX];
+ ExecCommand* exec_command[_SERVICE_EXEC_COMMAND_MAX];
ExecContext exec_context;
bool permissions_start_only;
ServiceState state;
+ KillMode kill_mode;
+
ExecStatus main_exec_status;
ExecCommand *control_command;
pid_t main_pid, control_pid;
bool main_pid_known:1;
- bool sysv_has_lsb:1;
-
bool failure:1; /* if we shut down, remember why */
- Watch timer_watch;
+ bool sysv_has_lsb:1;
char *sysv_path;
int sysv_start_priority;
+ char *sysv_runlevels;
RateLimit ratelimit;
+
+ Watch timer_watch;
};
extern const UnitVTable service_vtable;