#include "path-lookup.h"
#include "execute.h"
#include "unit-name.h"
+#include "exit-status.h"
struct Manager {
/* Note that the set of units we know of is allowed to be
sd_event *event;
- Hashmap *watch_pids; /* pid => Unit object n:1 */
+ /* We use two hash tables here, since the same PID might be
+ * watched by two different units: once the unit that forked
+ * it off, and possibly a different unit to which it was
+ * joined as cgroup member. Since we know that it is either
+ * one or two units for each PID we just use to hashmaps
+ * here. */
+ Hashmap *watch_pids1; /* pid => Unit object n:1 */
+ Hashmap *watch_pids2; /* pid => Unit object n:1 */
sd_event_source *run_queue_event_source;
char *generator_unit_path_early;
char *generator_unit_path_late;
- /* Data specific to the device subsystem */
struct udev* udev;
+
+ /* Data specific to the device subsystem */
struct udev_monitor* udev_monitor;
sd_event_source *udev_event_source;
Hashmap *devices_by_sysfs;
/* Data specific to the swap filesystem */
FILE *proc_swaps;
sd_event_source *swap_event_source;
- Hashmap *swaps_by_proc_swaps;
- bool request_reload;
+ Hashmap *swaps_by_devnode;
/* Data specific to the D-Bus subsystem */
sd_bus *api_bus, *system_bus;
bool taint_usr:1;
- bool show_status;
+ ShowStatus show_status;
bool confirm_spawn;
bool no_console_output;
* them. It's a hashmap with a path string as key and a Set as
* value where Unit objects are contained. */
Hashmap *units_requiring_mounts_for;
+
+ /* Reference to the kdbus bus control fd */
+ int kdbus_fd;
};
-int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **m);
+int manager_new(SystemdRunningAs running_as, Manager **m);
void manager_free(Manager *m);
int manager_enumerate(Manager *m);
void manager_recheck_journal(Manager *m);
-void manager_set_show_status(Manager *m, bool b);
+void manager_set_show_status(Manager *m, ShowStatus mode);
void manager_status_printf(Manager *m, bool ephemeral, const char *status, const char *format, ...) _printf_(4,5);
+void manager_flip_auto_status(Manager *m, bool enable);
Set *manager_get_units_requiring_mounts_for(Manager *m, const char *path);