X Tutup
Skip to content

Commit 2a341bb

Browse files
committed
core: split out core/manager-dump.[ch]
This is a fairly specialized topic, let's create a separate file for it.
1 parent 5b326de commit 2a341bb

File tree

10 files changed

+106
-84
lines changed

10 files changed

+106
-84
lines changed

src/core/dbus-manager.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include "fs-util.h"
2727
#include "install.h"
2828
#include "log.h"
29+
#include "manager-dump.h"
2930
#include "os-util.h"
3031
#include "parse-util.h"
3132
#include "path-util.h"

src/core/execute.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
#include "log.h"
6565
#include "macro.h"
6666
#include "manager.h"
67+
#include "manager-dump.h"
6768
#include "memory-util.h"
6869
#include "missing_fs.h"
6970
#include "mkdir.h"

src/core/fuzz-unit-file.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "fuzz.h"
77
#include "install.h"
88
#include "load-fragment.h"
9+
#include "manager-dump.h"
910
#include "string-util.h"
1011
#include "unit-serialize.h"
1112
#include "utf8.h"

src/core/main.c

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
#include "loopback-setup.h"
5555
#include "machine-id-setup.h"
5656
#include "manager.h"
57+
#include "manager-dump.h"
5758
#include "mkdir.h"
5859
#include "mount-setup.h"
5960
#include "os-util.h"
@@ -2500,16 +2501,6 @@ static int initialize_security(
25002501
return 0;
25012502
}
25022503

2503-
static void test_summary(Manager *m) {
2504-
assert(m);
2505-
2506-
printf("-> By units:\n");
2507-
manager_dump_units(m, stdout, "\t");
2508-
2509-
printf("-> By jobs:\n");
2510-
manager_dump_jobs(m, stdout, "\t");
2511-
}
2512-
25132504
static int collect_fds(FDSet **ret_fds, const char **ret_error_message) {
25142505
int r;
25152506

@@ -2882,7 +2873,7 @@ int main(int argc, char *argv[]) {
28822873
format_timespan(timespan, sizeof(timespan), after_startup - before_startup, 100 * USEC_PER_MSEC));
28832874

28842875
if (arg_action == ACTION_TEST) {
2885-
test_summary(m);
2876+
manager_test_summary(m);
28862877
retval = EXIT_SUCCESS;
28872878
goto finish;
28882879
}

src/core/manager-dump.c

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
/* SPDX-License-Identifier: LGPL-2.1-or-later */
2+
3+
#include "fd-util.h"
4+
#include "fileio.h"
5+
#include "hashmap.h"
6+
#include "manager-dump.h"
7+
#include "unit-serialize.h"
8+
9+
void manager_dump_jobs(Manager *s, FILE *f, const char *prefix) {
10+
Job *j;
11+
12+
assert(s);
13+
assert(f);
14+
15+
HASHMAP_FOREACH(j, s->jobs)
16+
job_dump(j, f, prefix);
17+
}
18+
19+
void manager_dump_units(Manager *s, FILE *f, const char *prefix) {
20+
Unit *u;
21+
const char *t;
22+
23+
assert(s);
24+
assert(f);
25+
26+
HASHMAP_FOREACH_KEY(u, t, s->units)
27+
if (u->id == t)
28+
unit_dump(u, f, prefix);
29+
}
30+
31+
void manager_dump(Manager *m, FILE *f, const char *prefix) {
32+
assert(m);
33+
assert(f);
34+
35+
for (ManagerTimestamp q = 0; q < _MANAGER_TIMESTAMP_MAX; q++) {
36+
const dual_timestamp *t = m->timestamps + q;
37+
char buf[CONST_MAX(FORMAT_TIMESPAN_MAX, FORMAT_TIMESTAMP_MAX)];
38+
39+
if (dual_timestamp_is_set(t))
40+
fprintf(f, "%sTimestamp %s: %s\n",
41+
strempty(prefix),
42+
manager_timestamp_to_string(q),
43+
timestamp_is_set(t->realtime) ? format_timestamp(buf, sizeof buf, t->realtime) :
44+
format_timespan(buf, sizeof buf, t->monotonic, 1));
45+
}
46+
47+
manager_dump_units(m, f, prefix);
48+
manager_dump_jobs(m, f, prefix);
49+
}
50+
51+
int manager_get_dump_string(Manager *m, char **ret) {
52+
_cleanup_free_ char *dump = NULL;
53+
_cleanup_fclose_ FILE *f = NULL;
54+
size_t size;
55+
int r;
56+
57+
assert(m);
58+
assert(ret);
59+
60+
f = open_memstream_unlocked(&dump, &size);
61+
if (!f)
62+
return -errno;
63+
64+
manager_dump(m, f, NULL);
65+
66+
r = fflush_and_check(f);
67+
if (r < 0)
68+
return r;
69+
70+
f = safe_fclose(f);
71+
72+
*ret = TAKE_PTR(dump);
73+
74+
return 0;
75+
}
76+
77+
void manager_test_summary(Manager *m) {
78+
assert(m);
79+
80+
printf("-> By units:\n");
81+
manager_dump_units(m, stdout, "\t");
82+
83+
printf("-> By jobs:\n");
84+
manager_dump_jobs(m, stdout, "\t");
85+
}

src/core/manager-dump.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/* SPDX-License-Identifier: LGPL-2.1-or-later */
2+
#pragma once
3+
4+
#include <stdio.h>
5+
6+
#include "manager.h"
7+
8+
void manager_dump_jobs(Manager *s, FILE *f, const char *prefix);
9+
void manager_dump_units(Manager *s, FILE *f, const char *prefix);
10+
void manager_dump(Manager *s, FILE *f, const char *prefix);
11+
int manager_get_dump_string(Manager *m, char **ret);
12+
void manager_test_summary(Manager *m);

src/core/manager.c

Lines changed: 1 addition & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
#include "log.h"
5656
#include "macro.h"
5757
#include "manager.h"
58+
#include "manager-dump.h"
5859
#include "memory-util.h"
5960
#include "mkdir.h"
6061
#include "parse-util.h"
@@ -2154,74 +2155,6 @@ int manager_load_startable_unit_or_warn(
21542155
return 0;
21552156
}
21562157

2157-
void manager_dump_jobs(Manager *s, FILE *f, const char *prefix) {
2158-
Job *j;
2159-
2160-
assert(s);
2161-
assert(f);
2162-
2163-
HASHMAP_FOREACH(j, s->jobs)
2164-
job_dump(j, f, prefix);
2165-
}
2166-
2167-
void manager_dump_units(Manager *s, FILE *f, const char *prefix) {
2168-
Unit *u;
2169-
const char *t;
2170-
2171-
assert(s);
2172-
assert(f);
2173-
2174-
HASHMAP_FOREACH_KEY(u, t, s->units)
2175-
if (u->id == t)
2176-
unit_dump(u, f, prefix);
2177-
}
2178-
2179-
void manager_dump(Manager *m, FILE *f, const char *prefix) {
2180-
assert(m);
2181-
assert(f);
2182-
2183-
for (ManagerTimestamp q = 0; q < _MANAGER_TIMESTAMP_MAX; q++) {
2184-
const dual_timestamp *t = m->timestamps + q;
2185-
char buf[CONST_MAX(FORMAT_TIMESPAN_MAX, FORMAT_TIMESTAMP_MAX)];
2186-
2187-
if (dual_timestamp_is_set(t))
2188-
fprintf(f, "%sTimestamp %s: %s\n",
2189-
strempty(prefix),
2190-
manager_timestamp_to_string(q),
2191-
timestamp_is_set(t->realtime) ? format_timestamp(buf, sizeof buf, t->realtime) :
2192-
format_timespan(buf, sizeof buf, t->monotonic, 1));
2193-
}
2194-
2195-
manager_dump_units(m, f, prefix);
2196-
manager_dump_jobs(m, f, prefix);
2197-
}
2198-
2199-
int manager_get_dump_string(Manager *m, char **ret) {
2200-
_cleanup_free_ char *dump = NULL;
2201-
_cleanup_fclose_ FILE *f = NULL;
2202-
size_t size;
2203-
int r;
2204-
2205-
assert(m);
2206-
assert(ret);
2207-
2208-
f = open_memstream_unlocked(&dump, &size);
2209-
if (!f)
2210-
return -errno;
2211-
2212-
manager_dump(m, f, NULL);
2213-
2214-
r = fflush_and_check(f);
2215-
if (r < 0)
2216-
return r;
2217-
2218-
f = safe_fclose(f);
2219-
2220-
*ret = TAKE_PTR(dump);
2221-
2222-
return 0;
2223-
}
2224-
22252158
void manager_clear_jobs(Manager *m) {
22262159
Job *j;
22272160

src/core/manager.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -485,11 +485,6 @@ int manager_add_job_by_name(Manager *m, JobType type, const char *name, JobMode
485485
int manager_add_job_by_name_and_warn(Manager *m, JobType type, const char *name, JobMode mode, Set *affected_jobs, Job **ret);
486486
int manager_propagate_reload(Manager *m, Unit *unit, JobMode mode, sd_bus_error *e);
487487

488-
void manager_dump_units(Manager *s, FILE *f, const char *prefix);
489-
void manager_dump_jobs(Manager *s, FILE *f, const char *prefix);
490-
void manager_dump(Manager *s, FILE *f, const char *prefix);
491-
int manager_get_dump_string(Manager *m, char **ret);
492-
493488
void manager_clear_jobs(Manager *m);
494489

495490
void manager_unwatch_pid(Manager *m, pid_t pid);

src/core/meson.build

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ libcore_sources = '''
8585
locale-setup.h
8686
manager.c
8787
manager.h
88+
manager-dump.c
89+
manager-dump.h
8890
mount.c
8991
mount.h
9092
namespace.c

src/test/test-engine.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
#include "bus-util.h"
77
#include "manager.h"
8+
#include "manager-dump.h"
89
#include "rm-rf.h"
910
#include "service.h"
1011
#include "special.h"

0 commit comments

Comments
 (0)
X Tutup