diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-09-27 10:09:59 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-09-27 10:09:59 +0000 |
commit | 5d61e71c3a8ac3296afbfe9a014c62050c5a9234 (patch) | |
tree | e9ab2cd35d1f2d51b26a678551a0439b1719928b /networking | |
parent | c9dc2ac578278e86be248cc21e53081f7054da83 (diff) | |
download | busybox-w32-5d61e71c3a8ac3296afbfe9a014c62050c5a9234.tar.gz busybox-w32-5d61e71c3a8ac3296afbfe9a014c62050c5a9234.tar.bz2 busybox-w32-5d61e71c3a8ac3296afbfe9a014c62050c5a9234.zip |
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
Diffstat (limited to 'networking')
-rw-r--r-- | networking/httpd.c | 6 | ||||
-rw-r--r-- | networking/tftp.c | 4 | ||||
-rw-r--r-- | networking/traceroute.c | 2 | ||||
-rw-r--r-- | networking/udhcp/arpping.c | 7 | ||||
-rw-r--r-- | networking/zcip.c | 14 |
5 files changed, 14 insertions, 19 deletions
diff --git a/networking/httpd.c b/networking/httpd.c index cedec800f..92a07107d 100644 --- a/networking/httpd.c +++ b/networking/httpd.c | |||
@@ -1073,13 +1073,9 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post | |||
1073 | } | 1073 | } |
1074 | 1074 | ||
1075 | /* Now wait on the set of sockets */ | 1075 | /* Now wait on the set of sockets */ |
1076 | count = poll(pfd, 3, -1); | 1076 | count = safe_poll(pfd, 3, -1); |
1077 | if (count <= 0) { | 1077 | if (count <= 0) { |
1078 | #if 0 | 1078 | #if 0 |
1079 | if (errno == EINTR) | ||
1080 | continue; | ||
1081 | #endif | ||
1082 | #if 0 | ||
1083 | if (waitpid(pid, &status, WNOHANG) <= 0) { | 1079 | if (waitpid(pid, &status, WNOHANG) <= 0) { |
1084 | /* Weird. CGI didn't exit and no fd's | 1080 | /* Weird. CGI didn't exit and no fd's |
1085 | * are ready, yet poll returned?! */ | 1081 | * are ready, yet poll returned?! */ |
diff --git a/networking/tftp.c b/networking/tftp.c index ac3a86afb..59f53ae4a 100644 --- a/networking/tftp.c +++ b/networking/tftp.c | |||
@@ -225,7 +225,7 @@ static int tftp( USE_GETPUT(const int cmd,) | |||
225 | /* Receive packet */ | 225 | /* Receive packet */ |
226 | /*pfd[0].fd = socketfd;*/ | 226 | /*pfd[0].fd = socketfd;*/ |
227 | pfd[0].events = POLLIN; | 227 | pfd[0].events = POLLIN; |
228 | switch (poll(pfd, 1, waittime_ms)) { | 228 | switch (safe_poll(pfd, 1, waittime_ms)) { |
229 | unsigned from_port; | 229 | unsigned from_port; |
230 | case 1: | 230 | case 1: |
231 | from->len = peer_lsa->len; | 231 | from->len = peer_lsa->len; |
@@ -262,7 +262,7 @@ static int tftp( USE_GETPUT(const int cmd,) | |||
262 | 262 | ||
263 | goto send_again; /* resend last sent pkt */ | 263 | goto send_again; /* resend last sent pkt */ |
264 | default: | 264 | default: |
265 | bb_perror_msg("poll"); | 265 | /*bb_perror_msg("poll"); - done in safe_poll */ |
266 | goto ret; | 266 | goto ret; |
267 | } | 267 | } |
268 | process_pkt: | 268 | process_pkt: |
diff --git a/networking/traceroute.c b/networking/traceroute.c index 21921e56d..2d09c7197 100644 --- a/networking/traceroute.c +++ b/networking/traceroute.c | |||
@@ -543,7 +543,7 @@ wait_for_reply(int sock, struct sockaddr_in *fromp) | |||
543 | 543 | ||
544 | pfd[0].fd = sock; | 544 | pfd[0].fd = sock; |
545 | pfd[0].events = POLLIN; | 545 | pfd[0].events = POLLIN; |
546 | if (poll(pfd, 1, waittime * 1000) > 0) | 546 | if (safe_poll(pfd, 1, waittime * 1000) > 0) |
547 | cc = recvfrom(sock, packet, sizeof(packet), 0, | 547 | cc = recvfrom(sock, packet, sizeof(packet), 0, |
548 | (struct sockaddr *)fromp, &fromlen); | 548 | (struct sockaddr *)fromp, &fromlen); |
549 | return cc; | 549 | return cc; |
diff --git a/networking/udhcp/arpping.c b/networking/udhcp/arpping.c index 33518077b..7b702d8f3 100644 --- a/networking/udhcp/arpping.c +++ b/networking/udhcp/arpping.c | |||
@@ -81,12 +81,9 @@ int arpping(uint32_t test_ip, uint32_t from_ip, uint8_t *from_mac, const char *i | |||
81 | unsigned prevTime = monotonic_us(); | 81 | unsigned prevTime = monotonic_us(); |
82 | 82 | ||
83 | pfd[0].events = POLLIN; | 83 | pfd[0].events = POLLIN; |
84 | r = poll(pfd, 1, timeout_ms); | 84 | r = safe_poll(pfd, 1, timeout_ms); |
85 | if (r < 0) { | 85 | if (r < 0) { |
86 | if (errno != EINTR) { | 86 | break; |
87 | bb_perror_msg("poll"); | ||
88 | break; | ||
89 | } | ||
90 | } else if (r) { | 87 | } else if (r) { |
91 | if (read(s, &arp, sizeof(arp)) < 0) | 88 | if (read(s, &arp, sizeof(arp)) < 0) |
92 | break; | 89 | break; |
diff --git a/networking/zcip.c b/networking/zcip.c index 2f0b5a7fb..63846ebef 100644 --- a/networking/zcip.c +++ b/networking/zcip.c | |||
@@ -300,7 +300,12 @@ int zcip_main(int argc, char **argv) | |||
300 | 300 | ||
301 | VDBG("...wait %d %s nprobes=%u, nclaims=%u\n", | 301 | VDBG("...wait %d %s nprobes=%u, nclaims=%u\n", |
302 | timeout_ms, intf, nprobes, nclaims); | 302 | timeout_ms, intf, nprobes, nclaims); |
303 | switch (poll(fds, 1, timeout_ms)) { | 303 | |
304 | switch (safe_poll(fds, 1, timeout_ms)) { | ||
305 | |||
306 | default: | ||
307 | /*bb_perror_msg("poll"); - done in safe_poll */ | ||
308 | return EXIT_FAILURE; | ||
304 | 309 | ||
305 | // timeout | 310 | // timeout |
306 | case 0: | 311 | case 0: |
@@ -388,6 +393,7 @@ int zcip_main(int argc, char **argv) | |||
388 | break; | 393 | break; |
389 | } // switch (state) | 394 | } // switch (state) |
390 | break; // case 0 (timeout) | 395 | break; // case 0 (timeout) |
396 | |||
391 | // packets arriving | 397 | // packets arriving |
392 | case 1: | 398 | case 1: |
393 | // We need to adjust the timeout in case we didn't receive | 399 | // We need to adjust the timeout in case we didn't receive |
@@ -519,13 +525,9 @@ int zcip_main(int argc, char **argv) | |||
519 | nclaims = 0; | 525 | nclaims = 0; |
520 | break; | 526 | break; |
521 | } // switch state | 527 | } // switch state |
522 | |||
523 | break; // case 1 (packets arriving) | 528 | break; // case 1 (packets arriving) |
524 | default: | ||
525 | why = "poll"; | ||
526 | goto bad; | ||
527 | } // switch poll | 529 | } // switch poll |
528 | } | 530 | } // while (1) |
529 | bad: | 531 | bad: |
530 | bb_perror_msg("%s, %s", intf, why); | 532 | bb_perror_msg("%s, %s", intf, why); |
531 | return EXIT_FAILURE; | 533 | return EXIT_FAILURE; |