X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Funit.h;h=3a828e6995568dad0173130dbee7b50dd2313d42;hb=b410e6b951695847619d18952bb9e2622c8b2bbf;hp=8f9d9e98601925f308277f0501f8f178ee1141c4;hpb=e99e38bbdcca3fe5956823bdb3d38544ccf93221;p=elogind.git diff --git a/src/unit.h b/src/unit.h index 8f9d9e986..3a828e699 100644 --- a/src/unit.h +++ b/src/unit.h @@ -62,6 +62,7 @@ enum UnitType { UNIT_SNAPSHOT, UNIT_TIMER, UNIT_SWAP, + UNIT_PATH, _UNIT_TYPE_MAX, _UNIT_TYPE_INVALID = -1 }; @@ -136,6 +137,9 @@ struct Meta { UnitLoadState load_state; Unit *merged_into; + /* Refuse manual starting, allow starting only indirectly via dependency. */ + bool only_by_dependency; + char *id; /* One name is special because we use it for identification. Points to an entry in the names set */ char *instance; @@ -149,10 +153,10 @@ struct Meta { * the job for it */ Job *job; - usec_t inactive_exit_timestamp; - usec_t active_enter_timestamp; - usec_t active_exit_timestamp; - usec_t inactive_enter_timestamp; + timestamp inactive_exit_timestamp; + timestamp active_enter_timestamp; + timestamp active_exit_timestamp; + timestamp inactive_enter_timestamp; /* Counterparts in the cgroup filesystem */ CGroupBonding *cgroup_bondings; @@ -181,6 +185,10 @@ struct Meta { /* Garbage collect us we nobody wants or requires us anymore */ bool stop_when_unneeded; + /* When deserializing, temporarily store the job type for this + * unit here, if there was a job scheduled */ + int deserialized_job; /* This is actually of type JobType */ + bool in_load_queue:1; bool in_dbus_queue:1; bool in_cleanup_queue:1; @@ -198,6 +206,7 @@ struct Meta { #include "automount.h" #include "snapshot.h" #include "swap.h" +#include "path.h" union Unit { Meta meta; @@ -210,6 +219,7 @@ union Unit { Automount automount; Snapshot snapshot; Swap swap; + Path path; }; struct UnitVTable { @@ -341,6 +351,7 @@ DEFINE_CAST(MOUNT, Mount); DEFINE_CAST(AUTOMOUNT, Automount); DEFINE_CAST(SNAPSHOT, Snapshot); DEFINE_CAST(SWAP, Swap); +DEFINE_CAST(PATH, Path); Unit *unit_new(Manager *m); void unit_free(Unit *u); @@ -424,12 +435,14 @@ char **unit_full_printf_strv(Unit *u, char **l); bool unit_can_serialize(Unit *u); int unit_serialize(Unit *u, FILE *f, FDSet *fds); -void unit_serialize_item_format(Unit *u, FILE *f, const char *key, const char *value, ...) _printf_attr(4,5); +void unit_serialize_item_format(Unit *u, FILE *f, const char *key, const char *value, ...) _printf_attr_(4,5); void unit_serialize_item(Unit *u, FILE *f, const char *key, const char *value); int unit_deserialize(Unit *u, FILE *f, FDSet *fds); int unit_add_node_link(Unit *u, const char *what, bool wants); +int unit_coldplug(Unit *u); + const char *unit_type_to_string(UnitType i); UnitType unit_type_from_string(const char *s);