mirror of
https://github.com/systemd/systemd.git
synced 2024-11-23 18:23:32 +08:00
f4d74c6105
Documentation is licensed under LGPL-2.1-or-later. Scripts are MIT to facilitate reuse. Examples are relicensed to CC0-1.0 to maximise copy-and-paste for users, with permission from authors.
28 lines
620 B
C
28 lines
620 B
C
/* SPDX-License-Identifier: CC0-1.0 */
|
|
|
|
#include <poll.h>
|
|
#include <time.h>
|
|
#include <systemd/sd-journal.h>
|
|
|
|
int wait_for_changes(sd_journal *j) {
|
|
uint64_t t;
|
|
int msec;
|
|
struct pollfd pollfd;
|
|
|
|
sd_journal_get_timeout(j, &t);
|
|
if (t == (uint64_t) -1)
|
|
msec = -1;
|
|
else {
|
|
struct timespec ts;
|
|
uint64_t n;
|
|
clock_gettime(CLOCK_MONOTONIC, &ts);
|
|
n = (uint64_t) ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
|
|
msec = t > n ? (int) ((t - n + 999) / 1000) : 0;
|
|
}
|
|
|
|
pollfd.fd = sd_journal_get_fd(j);
|
|
pollfd.events = sd_journal_get_events(j);
|
|
poll(&pollfd, 1, msec);
|
|
return sd_journal_process(j);
|
|
}
|