117 lines
5.4 KiB
Diff
117 lines
5.4 KiB
Diff
|
From 634a6893abd524b5ccae0c9b8cd0957fa00abb24 Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||
|
Date: Fri, 18 Jul 2014 21:44:36 -0400
|
||
|
Subject: [PATCH] man,journal: add note about
|
||
|
sd_journal_get_cutoff_monotonic_usec return value
|
||
|
|
||
|
Also modify the function itself to be a bit simpler to read.
|
||
|
|
||
|
(cherry picked from commit 1651e2c61e544de9ca947c8b3202552b1272ef57)
|
||
|
---
|
||
|
man/sd_journal_get_cutoff_realtime_usec.xml | 36 ++++++++++++++++++-----------
|
||
|
src/journal/sd-journal.c | 16 ++++++-------
|
||
|
2 files changed, 31 insertions(+), 21 deletions(-)
|
||
|
|
||
|
diff --git a/man/sd_journal_get_cutoff_realtime_usec.xml b/man/sd_journal_get_cutoff_realtime_usec.xml
|
||
|
index 6df4b26e6f..ef987d85b0 100644
|
||
|
--- a/man/sd_journal_get_cutoff_realtime_usec.xml
|
||
|
+++ b/man/sd_journal_get_cutoff_realtime_usec.xml
|
||
|
@@ -74,25 +74,29 @@
|
||
|
<title>Description</title>
|
||
|
|
||
|
<para><function>sd_journal_get_cutoff_realtime_usec()</function>
|
||
|
- gets the realtime (wallclock) timestamps of the first
|
||
|
- and last entries accessible in the journal. It takes
|
||
|
- three arguments: the journal context object and two
|
||
|
- pointers to 64-bit unsigned integers to store the
|
||
|
- timestamps in. The timestamps are in microseconds
|
||
|
- since the epoch,
|
||
|
+ retrieves the realtime (wallclock) timestamps of the
|
||
|
+ first and last entries accessible in the journal. It
|
||
|
+ takes three arguments: the journal context object
|
||
|
+ <parameter>j</parameter> and two pointers
|
||
|
+ <parameter>from</parameter> and
|
||
|
+ <parameter>to</parameter> pointing at 64-bit unsigned
|
||
|
+ integers to store the timestamps in. The timestamps
|
||
|
+ are in microseconds since the epoch,
|
||
|
i.e. <constant>CLOCK_REALTIME</constant>. Either one
|
||
|
of the two timestamp arguments may be passed as
|
||
|
<constant>NULL</constant> in case the timestamp is not
|
||
|
needed, but not both.</para>
|
||
|
|
||
|
<para><function>sd_journal_get_cutoff_monotonic_usec()</function>
|
||
|
- gets the monotonic timestamps of the first and last
|
||
|
- entries accessible in the journal. It takes three
|
||
|
- arguments: the journal context object, a 128-bit
|
||
|
- identifier for the boot, and two pointers to 64-bit
|
||
|
- unsigned integers to store the timestamps. The
|
||
|
- timestamps are in microseconds since boot-up of the
|
||
|
- specific boot,
|
||
|
+ retrieves the monotonic timestamps of the first and
|
||
|
+ last entries accessible in the journal. It takes three
|
||
|
+ arguments: the journal context object
|
||
|
+ <parameter>j</parameter>, a 128-bit identifier for the
|
||
|
+ boot <parameter>boot_id</parameter>, and two pointers
|
||
|
+ to 64-bit unsigned integers to store the timestamps,
|
||
|
+ <parameter>from</parameter> and
|
||
|
+ <parameter>to</parameter>. The timestamps are in
|
||
|
+ microseconds since boot-up of the specific boot,
|
||
|
i.e. <constant>CLOCK_MONOTONIC</constant>. Since the
|
||
|
monotonic clock begins new with every reboot it only
|
||
|
defines a well-defined point in time when used
|
||
|
@@ -113,6 +117,12 @@
|
||
|
<function>sd_journal_get_cutoff_monotonic_usec()</function>
|
||
|
return 1 on success, 0 if not suitable entries are in
|
||
|
the journal or a negative errno-style error code.</para>
|
||
|
+
|
||
|
+ <para>Locations pointed to by parameters
|
||
|
+ <parameter>from</parameter> and
|
||
|
+ <parameter>to</parameter> will be set only if the
|
||
|
+ return value is positive, and obviously, the
|
||
|
+ parameters are non-null.</para>
|
||
|
</refsect1>
|
||
|
|
||
|
<refsect1>
|
||
|
diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
|
||
|
index ca805f83fe..15dae90925 100644
|
||
|
--- a/src/journal/sd-journal.c
|
||
|
+++ b/src/journal/sd-journal.c
|
||
|
@@ -2390,7 +2390,7 @@ _public_ int sd_journal_get_cutoff_realtime_usec(sd_journal *j, uint64_t *from,
|
||
|
_public_ int sd_journal_get_cutoff_monotonic_usec(sd_journal *j, sd_id128_t boot_id, uint64_t *from, uint64_t *to) {
|
||
|
Iterator i;
|
||
|
JournalFile *f;
|
||
|
- bool first = true;
|
||
|
+ bool found = false;
|
||
|
int r;
|
||
|
|
||
|
assert_return(j, -EINVAL);
|
||
|
@@ -2409,21 +2409,21 @@ _public_ int sd_journal_get_cutoff_monotonic_usec(sd_journal *j, sd_id128_t boot
|
||
|
if (r == 0)
|
||
|
continue;
|
||
|
|
||
|
- if (first) {
|
||
|
+ if (found) {
|
||
|
if (from)
|
||
|
- *from = fr;
|
||
|
+ *from = MIN(fr, *from);
|
||
|
if (to)
|
||
|
- *to = t;
|
||
|
- first = false;
|
||
|
+ *to = MAX(t, *to);
|
||
|
} else {
|
||
|
if (from)
|
||
|
- *from = MIN(fr, *from);
|
||
|
+ *from = fr;
|
||
|
if (to)
|
||
|
- *to = MAX(t, *to);
|
||
|
+ *to = t;
|
||
|
+ found = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
- return first ? 0 : 1;
|
||
|
+ return found;
|
||
|
}
|
||
|
|
||
|
void journal_print_header(sd_journal *j) {
|