← Commit list

78a5ef9d2

Denys Vlasenko
Denys Vlasenko
2018-08-25
SUCCESS Duration: 147s

Subject

ping: use setitimer() instead of ualarm()

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

networking/ping.c+8 -2
@@ -485,9 +485,15 @@ static void sendping_tail(void (*sp)(int), int size_pkt)
bb_error_msg_and_die(bb_msg_write_error);
if (pingcount == 0 || G.ntransmitted < pingcount) {
- /* Didn't send all pings yet - schedule next in 1s */
+ /* Didn't send all pings yet - schedule next in -i SEC interval */
+ struct itimerval i;
signal(SIGALRM, sp);
- ualarm(G.interval_us, 0);
+ /*ualarm(G.interval_us, 0); - does not work for >=1sec on some libc */
+ i.it_interval.tv_sec = 0;
+ i.it_interval.tv_usec = 0;
+ i.it_value.tv_sec = G.interval_us / 1000000;
+ i.it_value.tv_usec = G.interval_us % 1000000;
+ setitimer(ITIMER_REAL, &i, NULL);
} else { /* -c NN, and all NN are sent */
/* Wait for the last ping to come back.
* -W timeout: wait for a response in seconds.