1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-06 16:59:03 +03:00

time-sync-wait: trivial style fixes

This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2018-04-07 19:19:49 +02:00
parent 30dd293c88
commit 0fad9daf4b

View File

@ -47,8 +47,7 @@ static void clock_state_release(ClockState *sp) {
sp->fd = safe_close(sp->fd); sp->fd = safe_close(sp->fd);
} }
static int clock_state_update(ClockState *sp, static int clock_state_update(ClockState *sp, sd_event *event);
sd_event *event);
static int io_handler(sd_event_source * s, static int io_handler(sd_event_source * s,
int fd, int fd,
@ -73,22 +72,22 @@ static int clock_state_update(ClockState *sp,
clock_state_release(sp); clock_state_release(sp);
/* The kernel supports cancelling timers whenever its realtime clock is "set" (which can happen in a variety of /* The kernel supports cancelling timers whenever its realtime clock is "set" (which can happen in a variety of
* ways, generally adjustments of at least 500 ms). The way this module works is we set up a timer that will * ways, generally adjustments of at least 500 ms). The way this module works is we set up a timer that will
* wake when it the clock is set, and when that happens we read the clock synchronization state from the return * wake when the clock is set, and when that happens we read the clock synchronization state from the return
* value of adjtimex(2), which supports the NTP time adjustment protocol. * value of adjtimex(2), which supports the NTP time adjustment protocol.
* *
* The kernel determines whether the clock is synchronized using driver-specific tests, based on time * The kernel determines whether the clock is synchronized using driver-specific tests, based on time
* information passed by an application, generally through adjtimex(2). If the application asserts the clock * information passed by an application, generally through adjtimex(2). If the application asserts the clock
* is synchronized, but does not also do something that "sets the clock", the timer will not be cancelled and * is synchronized, but does not also do something that "sets the clock", the timer will not be cancelled and
* synchronization will not be detected. Should this behavior be observed with a time synchronization provider * synchronization will not be detected. Should this behavior be observed with a time synchronization provider
* this code might be reworked to do a periodic check as well. * this code might be reworked to do a periodic check as well.
* *
* Similarly, this service will never complete if the application sets the time without also providing * Similarly, this service will never complete if the application sets the time without also providing
* information that adjtimex(2) can use to determine that the clock is synchronized. * information that adjtimex(2) can use to determine that the clock is synchronized.
* *
* Well-behaved implementations including systemd-timesyncd should not produce either situation. For timesyncd * Well-behaved implementations including systemd-timesyncd should not produce either situation. For timesyncd
* the initial set of the timestamp uses settimeofday(2), which sets the clock but does not mark it * the initial setting of the time uses settimeofday(2), which sets the clock but does not mark it
* synchronized. When an NTP source is selected it sets the clock again with clock_adjtime(2) which does mark * synchronized. When an NTP source is selected it sets the clock again with clock_adjtime(2) which does mark
* it synchronized. */ * it synchronized. */
r = timerfd_create(CLOCK_REALTIME, TFD_NONBLOCK | TFD_CLOEXEC); r = timerfd_create(CLOCK_REALTIME, TFD_NONBLOCK | TFD_CLOEXEC);
if (r < 0) { if (r < 0) {
@ -119,7 +118,7 @@ static int clock_state_update(ClockState *sp,
log_info("adjtime state %d status %x time %s", sp->adjtime_state, tx.status, ts); log_info("adjtime state %d status %x time %s", sp->adjtime_state, tx.status, ts);
if (sp->adjtime_state == TIME_ERROR) { if (sp->adjtime_state == TIME_ERROR) {
/* Not synchronized. Do a one-shot wait on the descriptor and inform the caller we need to keep /* Not synchronized. Do a one-shot wait on the descriptor and inform the caller we need to keep
* running. */ * running. */
r = sd_event_add_io(event, &sp->event_source, sp->fd, r = sd_event_add_io(event, &sp->event_source, sp->fd,
EPOLLIN, io_handler, sp); EPOLLIN, io_handler, sp);
@ -140,8 +139,7 @@ static int clock_state_update(ClockState *sp,
return r; return r;
} }
int main(int argc, int main(int argc, char * argv[]) {
char * argv[]) {
int r; int r;
_cleanup_(sd_event_unrefp) sd_event *event; _cleanup_(sd_event_unrefp) sd_event *event;
ClockState state = { ClockState state = {
@ -177,7 +175,7 @@ int main(int argc,
r = clock_state_update(&state, event); r = clock_state_update(&state, event);
if (r > 0) { if (r > 0) {
r = sd_event_loop(event); r = sd_event_loop(event);
if (0 > r) if (r < 0)
log_error_errno(r, "Failed in event loop: %m"); log_error_errno(r, "Failed in event loop: %m");
else if (state.adjtime_state == TIME_ERROR) { else if (state.adjtime_state == TIME_ERROR) {
log_error("Event loop terminated without synchronizing"); log_error("Event loop terminated without synchronizing");