core: introduce unit_main_pid_full() which optionally provides if the PID is alien or not
This commit is contained in:
+7
-2
@@ -4786,8 +4786,13 @@ static void service_reset_failed(Unit *u) {
|
||||
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) {
|
||||
|
||||
+4
-2
@@ -5112,12 +5112,14 @@ PidRef* unit_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;
|
||||
}
|
||||
|
||||
|
||||
+5
-2
@@ -732,7 +732,7 @@ typedef struct UnitVTable {
|
||||
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);
|
||||
@@ -1021,7 +1021,10 @@ bool unit_is_upheld_by_active(Unit *u, Unit **ret_culprit);
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user