chiark / gitweb /
service: introduce a proper service result if the start limit is hit
[elogind.git] / src / core / service.h
index f4ccc2b5a0454d39118eb0ec7a1ef2d62c47c44d..d1e53bf727fa0a97ffc1b848659ca085f8be398b 100644 (file)
@@ -1,7 +1,6 @@
 /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
 
-#ifndef fooservicehfoo
-#define fooservicehfoo
+#pragma once
 
 /***
   This file is part of systemd.
@@ -28,6 +27,8 @@ typedef struct Service Service;
 #include "path.h"
 #include "ratelimit.h"
 #include "service.h"
+#include "kill.h"
+#include "exit-status.h"
 
 typedef enum ServiceState {
         SERVICE_DEAD,
@@ -97,6 +98,7 @@ typedef enum ServiceResult {
         SERVICE_FAILURE_SIGNAL,
         SERVICE_FAILURE_CORE_DUMP,
         SERVICE_FAILURE_WATCHDOG,
+        SERVICE_FAILURE_START_LIMIT,
         _SERVICE_RESULT_MAX,
         _SERVICE_RESULT_INVALID = -1
 } ServiceResult;
@@ -115,19 +117,24 @@ struct Service {
 
         ServiceType type;
         ServiceRestart restart;
+        ExitStatusSet restart_ignore_status;
+        ExitStatusSet success_status;
 
         /* If set we'll read the main daemon PID from this file */
         char *pid_file;
 
         usec_t restart_usec;
-        usec_t timeout_usec;
+        usec_t timeout_start_usec;
+        usec_t timeout_stop_usec;
 
         dual_timestamp watchdog_timestamp;
         usec_t watchdog_usec;
         Watch watchdog_watch;
 
         ExecCommand* exec_command[_SERVICE_EXEC_COMMAND_MAX];
+
         ExecContext exec_context;
+        KillContext kill_context;
 
         ServiceState state, deserialized_state;
 
@@ -164,6 +171,7 @@ struct Service {
         bool bus_name_good:1;
         bool forbid_restart:1;
         bool got_socket_fd:1;
+        bool start_timeout_defined:1;
 #ifdef HAVE_SYSV_COMPAT
         bool is_sysv:1;
         bool sysv_has_lsb:1;
@@ -215,5 +223,3 @@ ServiceResult service_result_from_string(const char *s);
 
 const char* start_limit_action_to_string(StartLimitAction i);
 StartLimitAction start_limit_action_from_string(const char *s);
-
-#endif