diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-09-07 13:43:28 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-09-07 13:43:28 +0000 |
commit | 87f3b26b3a17369c12f4f9a70d6845796f8648d6 (patch) | |
tree | 2f7fe9fc910d5e97f695c902f848db497fec8bfd /sysklogd/syslogd.c | |
parent | 40f0bcf9d3f8f8a8d14a9b2cff51761019c75cf4 (diff) | |
download | busybox-w32-87f3b26b3a17369c12f4f9a70d6845796f8648d6.tar.gz busybox-w32-87f3b26b3a17369c12f4f9a70d6845796f8648d6.tar.bz2 busybox-w32-87f3b26b3a17369c12f4f9a70d6845796f8648d6.zip |
*: replace select-for-one descriptor with poll, it's smaller.
$ ./.cmk bloatcheck
function old new delta
readit 406 364 -42
syslogd_main 1249 1206 -43
traceroute_main 4115 4060 -55
mysleep 112 45 -67
arpping 579 441 -138
tftp 1575 1182 -393
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/6 up/down: 0/-738) Total: -738 bytes
text data bss dec hex filename
770580 1051 10764 782395 bf03b busybox_old
769820 1051 10764 781635 bed43 busybox_unstripped
Diffstat (limited to 'sysklogd/syslogd.c')
-rw-r--r-- | sysklogd/syslogd.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c index 5b153f509..ae3f1a2eb 100644 --- a/sysklogd/syslogd.c +++ b/sysklogd/syslogd.c | |||
@@ -471,8 +471,8 @@ static void do_syslogd(void) ATTRIBUTE_NORETURN; | |||
471 | static void do_syslogd(void) | 471 | static void do_syslogd(void) |
472 | { | 472 | { |
473 | struct sockaddr_un sunx; | 473 | struct sockaddr_un sunx; |
474 | int sock_fd; | 474 | struct pollfd pfd[1]; |
475 | fd_set fds; | 475 | #define sock_fd (pfd[0].fd) |
476 | char *dev_log_name; | 476 | char *dev_log_name; |
477 | 477 | ||
478 | /* Set up signal handlers */ | 478 | /* Set up signal handlers */ |
@@ -526,20 +526,20 @@ static void do_syslogd(void) | |||
526 | (char*)"syslogd started: BusyBox v" BB_VER, 0); | 526 | (char*)"syslogd started: BusyBox v" BB_VER, 0); |
527 | 527 | ||
528 | for (;;) { | 528 | for (;;) { |
529 | FD_ZERO(&fds); | 529 | /*pfd[0].fd = sock_fd;*/ |
530 | FD_SET(sock_fd, &fds); | 530 | pfd[0].events = POLLIN; |
531 | 531 | pfd[0].revents = 0; | |
532 | if (select(sock_fd + 1, &fds, NULL, NULL, NULL) < 0) { | 532 | if (poll(pfd, 1, -1) < 0) { /* -1: no timeout */ |
533 | if (errno == EINTR) { | 533 | if (errno == EINTR) { |
534 | /* alarm may have happened */ | 534 | /* alarm may have happened */ |
535 | continue; | 535 | continue; |
536 | } | 536 | } |
537 | bb_perror_msg_and_die("select"); | 537 | bb_perror_msg_and_die("poll"); |
538 | } | 538 | } |
539 | 539 | ||
540 | if (FD_ISSET(sock_fd, &fds)) { | 540 | if (pfd[0].revents) { |
541 | int i; | 541 | int i; |
542 | i = recv(sock_fd, G.recvbuf, MAX_READ - 1, 0); | 542 | i = read(sock_fd, G.recvbuf, MAX_READ - 1); |
543 | if (i <= 0) | 543 | if (i <= 0) |
544 | bb_perror_msg_and_die("UNIX socket error"); | 544 | bb_perror_msg_and_die("UNIX socket error"); |
545 | /* TODO: maybe suppress duplicates? */ | 545 | /* TODO: maybe suppress duplicates? */ |
@@ -559,7 +559,7 @@ static void do_syslogd(void) | |||
559 | #endif | 559 | #endif |
560 | G.recvbuf[i] = '\0'; | 560 | G.recvbuf[i] = '\0'; |
561 | split_escape_and_log(G.recvbuf, i); | 561 | split_escape_and_log(G.recvbuf, i); |
562 | } /* FD_ISSET() */ | 562 | } |
563 | } /* for */ | 563 | } /* for */ |
564 | } | 564 | } |
565 | 565 | ||