mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-06 13:17:44 +03:00
logind: let system-wide idle begin at the time logind was initialized
Initialize the start of the system-wide idle time with the time logind was
initialized and not with the start of the Unix epoch. This means that systemd
will not repport a unreasonable long idle time (around 54 years at the time of
writing this), especially at in the early boot, while no login manager session,
e.g,. gdm, had a chance to provide a more accurate start of the idle period.
Fixes #35163
(cherry picked from commit 718b31138b9a93f262259f297ad6b521454decc6)
(cherry picked from commit 9d36809256c6d92c6d8358769479ad2c2b695664)
(cherry picked from commit 77b963c31712ef81786fcc6623fe1b10a46b62e0)
(cherry picked from commit cd6f07effa
)
This commit is contained in:
parent
27bb6c8917
commit
dcb86edde5
@ -395,10 +395,14 @@ int manager_get_user_by_pid(Manager *m, pid_t pid, User **ret) {
|
||||
int manager_get_idle_hint(Manager *m, dual_timestamp *t) {
|
||||
Session *s;
|
||||
bool idle_hint;
|
||||
dual_timestamp ts = DUAL_TIMESTAMP_NULL;
|
||||
dual_timestamp ts;
|
||||
|
||||
assert(m);
|
||||
|
||||
/* Initialize the baseline timestamp with the time the manager got initialized to avoid reporting
|
||||
* unreasonable large idle periods starting with the Unix epoch. */
|
||||
ts = m->init_ts;
|
||||
|
||||
idle_hint = !manager_is_inhibited(m, INHIBIT_IDLE, INHIBIT_BLOCK, t, false, false, 0, NULL);
|
||||
|
||||
HASHMAP_FOREACH(s, m->sessions) {
|
||||
|
@ -96,6 +96,8 @@ static int manager_new(Manager **ret) {
|
||||
|
||||
(void) sd_event_set_watchdog(m->event, true);
|
||||
|
||||
dual_timestamp_get(&m->init_ts);
|
||||
|
||||
manager_reset_config(m);
|
||||
|
||||
*ret = TAKE_PTR(m);
|
||||
|
@ -139,6 +139,8 @@ struct Manager {
|
||||
|
||||
char *efi_loader_entry_one_shot;
|
||||
struct stat efi_loader_entry_one_shot_stat;
|
||||
|
||||
dual_timestamp init_ts;
|
||||
};
|
||||
|
||||
void manager_reset_config(Manager *m);
|
||||
|
Loading…
Reference in New Issue
Block a user