chiark / gitweb /
bus: make sd_bus_request_name() and sd_bus_release_name() behave more like other...
[elogind.git] / src / core / unit.h
index 5b4f86c58470d96efd7ee4f9b4de2b4130275a19..8ceeececc351a596a13a3c5018f682b84a6e14ff 100644 (file)
@@ -106,6 +106,9 @@ enum UnitDependency {
         UNIT_PROPAGATES_RELOAD_TO,
         UNIT_RELOAD_PROPAGATED_FROM,
 
+        /* Joins namespace of */
+        UNIT_JOINS_NAMESPACE_OF,
+
         /* Reference information for GC logic */
         UNIT_REFERENCES,              /* Inverse of 'references' is 'referenced_by' */
         UNIT_REFERENCED_BY,
@@ -230,8 +233,8 @@ struct Unit {
         /* Allow isolation requests */
         bool allow_isolate;
 
-        /* Isolate OnFailure unit */
-        bool on_failure_isolate;
+        /* How to start OnFailure units */
+        JobMode on_failure_job_mode;
 
         /* Ignore this unit when isolating */
         bool ignore_on_isolate;
@@ -273,14 +276,15 @@ typedef enum UnitSetPropertiesMode {
 } UnitSetPropertiesMode;
 
 #include "service.h"
-#include "timer.h"
 #include "socket.h"
+#include "busname.h"
 #include "target.h"
+#include "snapshot.h"
 #include "device.h"
 #include "mount.h"
 #include "automount.h"
-#include "snapshot.h"
 #include "swap.h"
+#include "timer.h"
 #include "path.h"
 #include "slice.h"
 #include "scope.h"
@@ -301,6 +305,11 @@ struct UnitVTable {
          * KillContext is found, if the unit type has that */
         size_t kill_context_offset;
 
+        /* If greater than 0, the offset into the object where the
+         * pointer to ExecRuntime is found, if the unit type has
+         * that */
+        size_t exec_runtime_offset;
+
         /* The name of the configuration file section with the private settings of this unit*/
         const char *private_section;
 
@@ -454,15 +463,16 @@ extern const UnitVTable * const unit_vtable[_UNIT_TYPE_MAX];
 
 #define UNIT_TRIGGER(u) ((Unit*) set_first((u)->dependencies[UNIT_TRIGGERS]))
 
-DEFINE_CAST(SOCKET, Socket);
-DEFINE_CAST(TIMER, Timer);
 DEFINE_CAST(SERVICE, Service);
+DEFINE_CAST(SOCKET, Socket);
+DEFINE_CAST(BUSNAME, BusName);
 DEFINE_CAST(TARGET, Target);
+DEFINE_CAST(SNAPSHOT, Snapshot);
 DEFINE_CAST(DEVICE, Device);
 DEFINE_CAST(MOUNT, Mount);
 DEFINE_CAST(AUTOMOUNT, Automount);
-DEFINE_CAST(SNAPSHOT, Snapshot);
 DEFINE_CAST(SWAP, Swap);
+DEFINE_CAST(TIMER, Timer);
 DEFINE_CAST(PATH, Path);
 DEFINE_CAST(SLICE, Slice);
 DEFINE_CAST(SCOPE, Scope);
@@ -558,6 +568,7 @@ bool unit_need_daemon_reload(Unit *u);
 void unit_reset_failed(Unit *u);
 
 Unit *unit_following(Unit *u);
+int unit_following_set(Unit *u, Set **s);
 
 const char *unit_slice_name(Unit *u);
 
@@ -569,8 +580,6 @@ int unit_add_default_target_dependency(Unit *u, Unit *target);
 
 char *unit_default_cgroup_path(Unit *u);
 
-int unit_following_set(Unit *u, Set **s);
-
 void unit_start_on_failure(Unit *u);
 void unit_trigger_notify(Unit *u);
 
@@ -587,6 +596,9 @@ int unit_exec_context_defaults(Unit *u, ExecContext *c);
 ExecContext *unit_get_exec_context(Unit *u) _pure_;
 KillContext *unit_get_kill_context(Unit *u) _pure_;
 CGroupContext *unit_get_cgroup_context(Unit *u) _pure_;
+ExecRuntime *unit_get_exec_runtime(Unit *u) _pure_;
+
+int unit_setup_exec_runtime(Unit *u);
 
 int unit_write_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *name, const char *data);
 int unit_write_drop_in_format(Unit *u, UnitSetPropertiesMode mode, const char *name, const char *format, ...) _printf_(4,5);