]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/analyze/analyze-time-data.h
analyze: show soft-reboot counter next to time deltas
[thirdparty/systemd.git] / src / analyze / analyze-time-data.h
CommitLineData
113dd9cb
LP
1/* SPDX-License-Identifier: LGPL-2.1-or-later */
2#pragma once
3
e2d99934
ZJS
4#include <sd-bus.h>
5
113dd9cb 6#include "time-util.h"
ebaf5549 7#include "unit-def.h"
113dd9cb
LP
8
9typedef struct BootTimes {
10 usec_t firmware_time;
11 usec_t loader_time;
12 usec_t kernel_time;
13 usec_t kernel_done_time;
14 usec_t initrd_time;
15 usec_t userspace_time;
16 usec_t finish_time;
7addfba9 17 usec_t softreboot_start_time;
113dd9cb
LP
18 usec_t security_start_time;
19 usec_t security_finish_time;
20 usec_t generators_start_time;
21 usec_t generators_finish_time;
22 usec_t unitsload_start_time;
23 usec_t unitsload_finish_time;
24 usec_t initrd_security_start_time;
25 usec_t initrd_security_finish_time;
26 usec_t initrd_generators_start_time;
27 usec_t initrd_generators_finish_time;
28 usec_t initrd_unitsload_start_time;
29 usec_t initrd_unitsload_finish_time;
259046cf
LB
30 /* Not strictly a timestamp, but we are going to show it next to the other timestamps */
31 uint64_t soft_reboots_count;
113dd9cb
LP
32
33 /*
34 * If we're analyzing the user instance, all timestamps will be offset by its own start-up timestamp,
35 * which may be arbitrarily big. With "plot", this causes arbitrarily wide output SVG files which
36 * almost completely consist of empty space. Thus we cancel out this offset.
37 *
38 * This offset is subtracted from times above by acquire_boot_times(), but it still needs to be
39 * subtracted from unit-specific timestamps (so it is stored here for reference).
40 */
41 usec_t reverse_offset;
42} BootTimes;
43
44typedef struct UnitTimes {
45 bool has_data;
46 char *name;
47 usec_t activating;
48 usec_t activated;
49 usec_t deactivated;
50 usec_t deactivating;
51 usec_t time;
ebaf5549 52 char **deps[_UNIT_DEPENDENCY_MAX];
113dd9cb
LP
53} UnitTimes;
54
63d7632d 55int acquire_boot_times(sd_bus *bus, bool require_finished, BootTimes **ret);
ba474dad 56int pretty_boot_time(sd_bus *bus, char **ret);
113dd9cb 57
ebaf5549 58void unit_times_clear(UnitTimes *t);
113dd9cb
LP
59UnitTimes* unit_times_free_array(UnitTimes *t);
60DEFINE_TRIVIAL_CLEANUP_FUNC(UnitTimes*, unit_times_free_array);
61
63d7632d 62int acquire_time_data(sd_bus *bus, bool require_finished, UnitTimes **out);