s->flush_n_restarts = false;
}
-static PidRef* service_main_pid(Unit *u) {
- return &ASSERT_PTR(SERVICE(u))->main_pid;
+static PidRef* service_main_pid(Unit *u, bool *ret_is_alien) {
+ Service *s = ASSERT_PTR(SERVICE(u));
+
+ if (ret_is_alien)
+ *ret_is_alien = s->main_pid_alien;
+
+ return &s->main_pid;
}
static PidRef* service_control_pid(Unit *u) {
return NULL;
}
-PidRef* unit_main_pid(Unit *u) {
+PidRef* unit_main_pid_full(Unit *u, bool *ret_is_alien) {
assert(u);
if (UNIT_VTABLE(u)->main_pid)
- return UNIT_VTABLE(u)->main_pid(u);
+ return UNIT_VTABLE(u)->main_pid(u, ret_is_alien);
+ if (ret_is_alien)
+ *ret_is_alien = false;
return NULL;
}
usec_t (*get_timeout_start_usec)(Unit *u);
/* Returns the main PID if there is any defined, or 0. */
- PidRef* (*main_pid)(Unit *u);
+ PidRef* (*main_pid)(Unit *u, bool *ret_is_alien);
/* Returns the control PID if there is any defined, or 0. */
PidRef* (*control_pid)(Unit *u);
bool unit_is_bound_by_inactive(Unit *u, Unit **ret_culprit);
PidRef* unit_control_pid(Unit *u);
-PidRef* unit_main_pid(Unit *u);
+PidRef* unit_main_pid_full(Unit *u, bool *ret_is_alien);
+static inline PidRef* unit_main_pid(Unit *u) {
+ return unit_main_pid_full(u, NULL);
+}
void unit_warn_if_dir_nonempty(Unit *u, const char* where);
int unit_fail_if_noncanonical(Unit *u, const char* where);