UNIT_ACTIVE,
UNIT_ACTIVE_RELOADING,
UNIT_INACTIVE,
+ UNIT_INACTIVE_MAINTENANCE,
UNIT_ACTIVATING,
UNIT_DEACTIVATING,
_UNIT_ACTIVE_STATE_MAX,
}
static inline bool UNIT_IS_INACTIVE_OR_DEACTIVATING(UnitActiveState t) {
- return t == UNIT_INACTIVE || t == UNIT_DEACTIVATING;
+ return t == UNIT_INACTIVE || t == UNIT_INACTIVE_MAINTENANCE || t == UNIT_DEACTIVATING;
+}
+
+static inline bool UNIT_IS_INACTIVE_OR_MAINTENANCE(UnitActiveState t) {
+ return t == UNIT_INACTIVE || t == UNIT_INACTIVE_MAINTENANCE;
}
enum UnitDependency {
* the job for it */
Job *job;
- timestamp inactive_exit_timestamp;
- timestamp active_enter_timestamp;
- timestamp active_exit_timestamp;
- timestamp inactive_enter_timestamp;
+ dual_timestamp inactive_exit_timestamp;
+ dual_timestamp active_enter_timestamp;
+ dual_timestamp active_exit_timestamp;
+ dual_timestamp inactive_enter_timestamp;
/* Counterparts in the cgroup filesystem */
CGroupBonding *cgroup_bondings;
/* For casting a unit into the various unit types */
#define DEFINE_CAST(UPPERCASE, MixedCase) \
static inline MixedCase* UPPERCASE(Unit *u) { \
- if (!u || u->meta.type != UNIT_##UPPERCASE) \
+ if (_unlikely_(!u || u->meta.type != UNIT_##UPPERCASE)) \
return NULL; \
\
return (MixedCase*) u; \
}
/* For casting the various unit types into a unit */
-#define UNIT(u) ((Unit*) (u))
+#define UNIT(u) ((Unit*) (&(u)->meta))
DEFINE_CAST(SOCKET, Socket);
DEFINE_CAST(TIMER, Timer);