manager: serialize/deserialize startup time, too
This commit is contained in:
parent
19b68260aa
commit
10f8e83cbb
|
@ -2351,6 +2351,10 @@ int manager_serialize(Manager *m, FILE *f, FDSet *fds) {
|
||||||
assert(f);
|
assert(f);
|
||||||
assert(fds);
|
assert(fds);
|
||||||
|
|
||||||
|
fprintf(f, "startup-timestamp=%llu %llu\n\n",
|
||||||
|
(unsigned long long) m->startup_timestamp.realtime,
|
||||||
|
(unsigned long long) m->startup_timestamp.monotonic);
|
||||||
|
|
||||||
HASHMAP_FOREACH_KEY(u, t, m->units, i) {
|
HASHMAP_FOREACH_KEY(u, t, m->units, i) {
|
||||||
if (u->meta.id != t)
|
if (u->meta.id != t)
|
||||||
continue;
|
continue;
|
||||||
|
@ -2382,6 +2386,37 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
|
||||||
|
|
||||||
m->n_deserializing ++;
|
m->n_deserializing ++;
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
char line[1024], *l;
|
||||||
|
|
||||||
|
if (!fgets(line, sizeof(line), f)) {
|
||||||
|
if (feof(f))
|
||||||
|
r = 0;
|
||||||
|
else
|
||||||
|
r = -errno;
|
||||||
|
|
||||||
|
goto finish;
|
||||||
|
}
|
||||||
|
|
||||||
|
char_array_0(line);
|
||||||
|
l = strstrip(line);
|
||||||
|
|
||||||
|
if (l[0] == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (startswith(l, "startup-timestamp=")) {
|
||||||
|
unsigned long long a, b;
|
||||||
|
|
||||||
|
if (sscanf(l+18, "%lli %llu", &a, &b) != 2)
|
||||||
|
log_debug("Failed to parse startup timestamp value %s", l+18);
|
||||||
|
else {
|
||||||
|
m->startup_timestamp.realtime = a;
|
||||||
|
m->startup_timestamp.monotonic = b;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
log_debug("Unknown serialization item '%s'", l);
|
||||||
|
}
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
Unit *u;
|
Unit *u;
|
||||||
char name[UNIT_NAME_MAX+2];
|
char name[UNIT_NAME_MAX+2];
|
||||||
|
@ -2389,9 +2424,10 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
|
||||||
/* Start marker */
|
/* Start marker */
|
||||||
if (!fgets(name, sizeof(name), f)) {
|
if (!fgets(name, sizeof(name), f)) {
|
||||||
if (feof(f))
|
if (feof(f))
|
||||||
break;
|
r = 0;
|
||||||
|
else
|
||||||
|
r = -errno;
|
||||||
|
|
||||||
r = -errno;
|
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2404,14 +2440,12 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
finish:
|
||||||
if (ferror(f)) {
|
if (ferror(f)) {
|
||||||
r = -EIO;
|
r = -EIO;
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = 0;
|
|
||||||
|
|
||||||
finish:
|
|
||||||
assert(m->n_deserializing > 0);
|
assert(m->n_deserializing > 0);
|
||||||
m->n_deserializing --;
|
m->n_deserializing --;
|
||||||
|
|
||||||
|
|
|
@ -1983,6 +1983,7 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) {
|
||||||
return -errno;
|
return -errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char_array_0(line);
|
||||||
l = strstrip(line);
|
l = strstrip(line);
|
||||||
|
|
||||||
/* End marker */
|
/* End marker */
|
||||||
|
|
Loading…
Reference in New Issue