introduce safe_poll (fixes a problem in top)

function                                             old     new   delta
safe_poll                                              -      77     +77
svlogd_main                                         1470    1466      -4
zcip_main                                           1530    1524      -6
forkexec                                            1345    1338      -7
decode_format_string                                 795     788      -7
collect_blk                                          474     467      -7
buffer_pread                                         540     532      -8
tftp                                                1182    1172     -10
microcom_main                                        763     749     -14
arpping                                              441     424     -17
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/9 up/down: 77/-80)             Total: -3 bytes
   text    data     bss     dec     hex filename
 770162    1034   10404  781600   bed20 busybox_old
 770158    1034   10404  781596   bed1c busybox_unstripped
This commit is contained in:
Denis Vlasenko
2007-09-27 10:09:59 +00:00
parent c9dc2ac578
commit 5d61e71c3a
13 changed files with 65 additions and 30 deletions

View File

@@ -300,7 +300,12 @@ int zcip_main(int argc, char **argv)
VDBG("...wait %d %s nprobes=%u, nclaims=%u\n",
timeout_ms, intf, nprobes, nclaims);
switch (poll(fds, 1, timeout_ms)) {
switch (safe_poll(fds, 1, timeout_ms)) {
default:
/*bb_perror_msg("poll"); - done in safe_poll */
return EXIT_FAILURE;
// timeout
case 0:
@@ -388,6 +393,7 @@ int zcip_main(int argc, char **argv)
break;
} // switch (state)
break; // case 0 (timeout)
// packets arriving
case 1:
// We need to adjust the timeout in case we didn't receive
@@ -519,13 +525,9 @@ int zcip_main(int argc, char **argv)
nclaims = 0;
break;
} // switch state
break; // case 1 (packets arriving)
default:
why = "poll";
goto bad;
} // switch poll
}
} // while (1)
bad:
bb_perror_msg("%s, %s", intf, why);
return EXIT_FAILURE;