X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Funit.h;h=c104a8a9d574af1169b70694a48756ec60dceb42;hb=a911bb9ab27ac0eb3bbf4e8b4109e5da9b88eee3;hp=299ded66ac128e94e50fe2a064f507cfb70fefb0;hpb=613b411c947635136637f8cdd66b94512f761eab;p=elogind.git diff --git a/src/core/unit.h b/src/core/unit.h index 299ded66a..c104a8a9d 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -203,6 +203,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; @@ -276,14 +281,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" @@ -409,6 +415,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 @@ -425,9 +433,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; @@ -462,15 +467,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); @@ -537,6 +543,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);