sd-journal: add high-level API for querying seqnum for journal entries, along with seqnum id
This commit is contained in:
@@ -810,4 +810,5 @@ global:
|
||||
sd_pidfd_get_unit;
|
||||
sd_pidfd_get_user_slice;
|
||||
sd_pidfd_get_user_unit;
|
||||
sd_journal_get_seqnum;
|
||||
} LIBSYSTEMD_252;
|
||||
|
||||
@@ -2228,6 +2228,37 @@ _public_ int sd_journal_get_monotonic_usec(sd_journal *j, uint64_t *ret, sd_id12
|
||||
return 0;
|
||||
}
|
||||
|
||||
_public_ int sd_journal_get_seqnum(
|
||||
sd_journal *j,
|
||||
uint64_t *ret_seqnum,
|
||||
sd_id128_t *ret_seqnum_id) {
|
||||
|
||||
JournalFile *f;
|
||||
Object *o;
|
||||
int r;
|
||||
|
||||
assert_return(j, -EINVAL);
|
||||
assert_return(!journal_pid_changed(j), -ECHILD);
|
||||
|
||||
f = j->current_file;
|
||||
if (!f)
|
||||
return -EADDRNOTAVAIL;
|
||||
|
||||
if (f->current_offset <= 0)
|
||||
return -EADDRNOTAVAIL;
|
||||
|
||||
r = journal_file_move_to_object(f, OBJECT_ENTRY, f->current_offset, &o);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (ret_seqnum_id)
|
||||
*ret_seqnum_id = f->header->seqnum_id;
|
||||
if (ret_seqnum)
|
||||
*ret_seqnum = le64toh(o->entry.seqnum);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool field_is_valid(const char *field) {
|
||||
assert(field);
|
||||
|
||||
|
||||
@@ -99,6 +99,7 @@ int sd_journal_next_skip(sd_journal *j, uint64_t skip);
|
||||
|
||||
int sd_journal_get_realtime_usec(sd_journal *j, uint64_t *ret);
|
||||
int sd_journal_get_monotonic_usec(sd_journal *j, uint64_t *ret, sd_id128_t *ret_boot_id);
|
||||
int sd_journal_get_seqnum(sd_journal *j, uint64_t *ret_seqnum, sd_id128_t *ret_seqnum_id);
|
||||
|
||||
int sd_journal_set_data_threshold(sd_journal *j, size_t sz);
|
||||
int sd_journal_get_data_threshold(sd_journal *j, size_t *sz);
|
||||
|
||||
Reference in New Issue
Block a user