X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Funit.h;h=808929e64a134e56edc1aad5b68c696234bb5918;hb=9c96019d3183ef93e243416f4c17334ee9108b47;hp=8ceeececc351a596a13a3c5018f682b84a6e14ff;hpb=e821075a23fdfa3ca7738fc30bb2d4c430fe10c0;p=elogind.git diff --git a/src/core/unit.h b/src/core/unit.h index 8ceeececc..808929e64 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -177,7 +177,8 @@ struct Unit { /* Counterparts in the cgroup filesystem */ char *cgroup_path; - CGroupControllerMask cgroup_mask; + CGroupControllerMask cgroup_realized_mask; + CGroupControllerMask cgroup_subtree_mask; CGroupControllerMask cgroup_members_mask; UnitRef slice; @@ -203,6 +204,11 @@ struct Unit { /* CGroup realize members queue */ LIST_FIELDS(Unit, cgroup_queue); + /* PIDs we keep an eye on. Note that a unit might have many + * more, but these are the ones we care enough about to + * process SIGCHLD for */ + Set *pids; + /* Used during GC sweeps */ unsigned gc_marker; @@ -261,6 +267,8 @@ struct Unit { bool in_audit:1; bool cgroup_realized:1; + bool cgroup_members_mask_valid:1; + bool cgroup_subtree_mask_valid:1; }; struct UnitStatusMessageFormats { @@ -410,6 +418,8 @@ struct UnitVTable { /* Called whenever CLOCK_REALTIME made a jump */ void (*time_change)(Unit *u); + int (*get_timeout)(Unit *u, uint64_t *timeout); + /* This is called for each unit type and should be used to * enumerate existing devices and load them. However, * everything that is loaded here should still stay in @@ -426,9 +436,6 @@ struct UnitVTable { /* The bus vtable */ const sd_bus_vtable *bus_vtable; - /* strv list of changing properties */ - const char * const * const bus_changing_properties; - /* The strings to print in status messages */ UnitStatusMessageFormats status_message_formats; @@ -539,6 +546,10 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su int unit_watch_pid(Unit *u, pid_t pid); void unit_unwatch_pid(Unit *u, pid_t pid); +int unit_watch_all_pids(Unit *u); +void unit_unwatch_all_pids(Unit *u); + +void unit_tidy_watch_pids(Unit *u, pid_t except1, pid_t except2); int unit_watch_bus_name(Unit *u, const char *name); void unit_unwatch_bus_name(Unit *u, const char *name);