chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
core: if the bootloader supports it, determine firmware and boot loader delay
[elogind.git]
/
src
/
core
/
manager.c
diff --git
a/src/core/manager.c
b/src/core/manager.c
index ec3541418d99c52ef64e174e90de95da889cc328..aaf66970cf11e7a6e94d83fdd2919ad9ee01aaec 100644
(file)
--- a/
src/core/manager.c
+++ b/
src/core/manager.c
@@
-70,6
+70,7
@@
#include "cgroup-util.h"
#include "path-util.h"
#include "audit-fd.h"
#include "cgroup-util.h"
#include "path-util.h"
#include "audit-fd.h"
+#include "efivars.h"
/* As soon as 16 units are in our GC queue, make sure to run a gc sweep */
#define GC_QUEUE_ENTRIES_MAX 16
/* As soon as 16 units are in our GC queue, make sure to run a gc sweep */
#define GC_QUEUE_ENTRIES_MAX 16
@@
-157,8
+158,8
@@
static int manager_setup_time_change(Manager *m) {
/* We only care for the cancellation event, hence we set the
* timeout to the latest possible value. */
/* We only care for the cancellation event, hence we set the
* timeout to the latest possible value. */
- assert_cc(sizeof(time_t) == sizeof(
long
));
- its.it_value.tv_sec =
LONG
_MAX;
+ assert_cc(sizeof(time_t) == sizeof(
TIME_T_MAX
));
+ its.it_value.tv_sec =
TIME_T
_MAX;
if (timerfd_settime(m->time_change_watch.fd, TFD_TIMER_ABSTIME|TFD_TIMER_CANCEL_ON_SET, &its, NULL) < 0) {
log_debug("Failed to set up TFD_TIMER_CANCEL_ON_SET, ignoring: %m");
if (timerfd_settime(m->time_change_watch.fd, TFD_TIMER_ABSTIME|TFD_TIMER_CANCEL_ON_SET, &its, NULL) < 0) {
log_debug("Failed to set up TFD_TIMER_CANCEL_ON_SET, ignoring: %m");
@@
-301,6
+302,8
@@
int manager_new(SystemdRunningAs running_as, Manager **_m) {
return -ENOMEM;
dual_timestamp_get(&m->userspace_timestamp);
return -ENOMEM;
dual_timestamp_get(&m->userspace_timestamp);
+ dual_timestamp_from_monotonic(&m->kernel_timestamp, 0);
+ efi_get_boot_timestamps(&m->userspace_timestamp, &m->firmware_timestamp, &m->loader_timestamp);
m->running_as = running_as;
m->name_data_slot = m->conn_data_slot = m->subscribed_data_slot = -1;
m->running_as = running_as;
m->name_data_slot = m->conn_data_slot = m->subscribed_data_slot = -1;
@@
-487,7
+490,7
@@
static unsigned manager_dispatch_gc_queue(Manager *m) {
if (u->gc_marker == gc_marker + GC_OFFSET_BAD ||
u->gc_marker == gc_marker + GC_OFFSET_UNSURE) {
if (u->gc_marker == gc_marker + GC_OFFSET_BAD ||
u->gc_marker == gc_marker + GC_OFFSET_UNSURE) {
- log_debug
(
"Collecting %s", u->id);
+ log_debug
_unit(u->id,
"Collecting %s", u->id);
u->gc_marker = gc_marker + GC_OFFSET_BAD;
unit_add_to_cleanup_queue(u);
}
u->gc_marker = gc_marker + GC_OFFSET_BAD;
unit_add_to_cleanup_queue(u);
}
@@
-749,7
+752,9
@@
int manager_add_job(Manager *m, JobType type, Unit *unit, JobMode mode, bool ove
return -EPERM;
}
return -EPERM;
}
- log_debug("Trying to enqueue job %s/%s/%s", unit->id, job_type_to_string(type), job_mode_to_string(mode));
+ log_debug_unit(unit->id,
+ "Trying to enqueue job %s/%s/%s", unit->id,
+ job_type_to_string(type), job_mode_to_string(mode));
job_type_collapse(&type, unit);
job_type_collapse(&type, unit);
@@
-773,7
+778,9
@@
int manager_add_job(Manager *m, JobType type, Unit *unit, JobMode mode, bool ove
if (r < 0)
goto tr_abort;
if (r < 0)
goto tr_abort;
- log_debug("Enqueued job %s/%s as %u", unit->id, job_type_to_string(type), (unsigned) tr->anchor_job->id);
+ log_debug_unit(unit->id,
+ "Enqueued job %s/%s as %u", unit->id,
+ job_type_to_string(type), (unsigned) tr->anchor_job->id);
if (_ret)
*_ret = tr->anchor_job;
if (_ret)
*_ret = tr->anchor_job;
@@
-1070,7
+1077,7
@@
static int manager_process_notify_fd(Manager *m) {
if (!tags)
return log_oom();
if (!tags)
return log_oom();
- log_debug
(
"Got notification message for unit %s", u->id);
+ log_debug
_unit(u->id,
"Got notification message for unit %s", u->id);
if (UNIT_VTABLE(u)->notify_message)
UNIT_VTABLE(u)->notify_message(u, ucred->pid, tags);
if (UNIT_VTABLE(u)->notify_message)
UNIT_VTABLE(u)->notify_message(u, ucred->pid, tags);
@@
-1150,7
+1157,8
@@
static int manager_dispatch_sigchld(Manager *m) {
if (!u)
continue;
if (!u)
continue;
- log_debug("Child %lu belongs to %s", (long unsigned) si.si_pid, u->id);
+ log_debug_unit(u->id,
+ "Child %lu belongs to %s", (long unsigned) si.si_pid, u->id);
hashmap_remove(m->watch_pids, LONG_TO_PTR(si.si_pid));
UNIT_VTABLE(u)->sigchld_event(u, si.si_pid, si.si_code, si.si_status);
hashmap_remove(m->watch_pids, LONG_TO_PTR(si.si_pid));
UNIT_VTABLE(u)->sigchld_event(u, si.si_pid, si.si_code, si.si_status);
@@
-1165,11
+1173,12
@@
static int manager_start_target(Manager *m, const char *name, JobMode mode) {
dbus_error_init(&error);
dbus_error_init(&error);
- log_debug
(
"Activating special unit %s", name);
+ log_debug
_unit(name,
"Activating special unit %s", name);
r = manager_add_job_by_name(m, JOB_START, name, mode, true, &error, NULL);
if (r < 0)
r = manager_add_job_by_name(m, JOB_START, name, mode, true, &error, NULL);
if (r < 0)
- log_error("Failed to enqueue %s job: %s", name, bus_error(&error, r));
+ log_error_unit(name,
+ "Failed to enqueue %s job: %s", name, bus_error(&error, r));
dbus_error_free(&error);
dbus_error_free(&error);
@@
-1677,7
+1686,8
@@
void manager_send_unit_audit(Manager *m, Unit *u, int type, bool success) {
p = unit_name_to_prefix_and_instance(u->id);
if (!p) {
p = unit_name_to_prefix_and_instance(u->id);
if (!p) {
- log_error("Failed to allocate unit name for audit message: %s", strerror(ENOMEM));
+ log_error_unit(u->id,
+ "Failed to allocate unit name for audit message: %s", strerror(ENOMEM));
return;
}
return;
}