Deleted
Added
nxt_devpoll_engine.c (277:6baa1731cc6f) | nxt_devpoll_engine.c (564:762f8c976ead) |
---|---|
1 2/* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) NGINX, Inc. 5 */ 6 7#include <nxt_main.h> 8 --- 114 unchanged lines hidden (view full) --- 123 engine->u.devpoll.events = nxt_malloc(sizeof(struct pollfd) * mevents); 124 if (engine->u.devpoll.events == NULL) { 125 goto fail; 126 } 127 128 engine->u.devpoll.fd = open("/dev/poll", O_RDWR); 129 130 if (engine->u.devpoll.fd == -1) { | 1 2/* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) NGINX, Inc. 5 */ 6 7#include <nxt_main.h> 8 --- 114 unchanged lines hidden (view full) --- 123 engine->u.devpoll.events = nxt_malloc(sizeof(struct pollfd) * mevents); 124 if (engine->u.devpoll.events == NULL) { 125 goto fail; 126 } 127 128 engine->u.devpoll.fd = open("/dev/poll", O_RDWR); 129 130 if (engine->u.devpoll.fd == -1) { |
131 nxt_log(&engine->task, NXT_LOG_CRIT, "open(\"/dev/poll\") failed %E", 132 nxt_errno); | 131 nxt_alert(&engine->task, "open(\"/dev/poll\") failed %E", nxt_errno); |
133 goto fail; 134 } 135 136 nxt_debug(&engine->task, "open(\"/dev/poll\"): %d", engine->u.devpoll.fd); 137 138 return NXT_OK; 139 140fail: --- 9 unchanged lines hidden (view full) --- 150{ 151 nxt_fd_t fd; 152 153 fd = engine->u.devpoll.fd; 154 155 nxt_debug(&engine->task, "devpoll %d free", fd); 156 157 if (fd != -1 && close(fd) != 0) { | 132 goto fail; 133 } 134 135 nxt_debug(&engine->task, "open(\"/dev/poll\"): %d", engine->u.devpoll.fd); 136 137 return NXT_OK; 138 139fail: --- 9 unchanged lines hidden (view full) --- 149{ 150 nxt_fd_t fd; 151 152 fd = engine->u.devpoll.fd; 153 154 nxt_debug(&engine->task, "devpoll %d free", fd); 155 156 if (fd != -1 && close(fd) != 0) { |
158 nxt_log(&engine->task, NXT_LOG_CRIT, "devpoll close(%d) failed %E", 159 fd, nxt_errno); | 157 nxt_alert(&engine->task, "devpoll close(%d) failed %E", fd, nxt_errno); |
160 } 161 162 nxt_free(engine->u.devpoll.events); 163 nxt_free(engine->u.devpoll.write_changes); 164 nxt_free(engine->u.devpoll.changes); 165 nxt_fd_event_hash_destroy(&engine->u.devpoll.fd_hash); 166 167 nxt_memzero(&engine->u.devpoll, sizeof(nxt_devpoll_engine_t)); --- 342 unchanged lines hidden (view full) --- 510 engine->u.devpoll.fd, fd, n); 511 512 if (n == 0) { 513 /* The file descriptor is not in the set. */ 514 return; 515 } 516 517 if (n == -1) { | 158 } 159 160 nxt_free(engine->u.devpoll.events); 161 nxt_free(engine->u.devpoll.write_changes); 162 nxt_free(engine->u.devpoll.changes); 163 nxt_fd_event_hash_destroy(&engine->u.devpoll.fd_hash); 164 165 nxt_memzero(&engine->u.devpoll, sizeof(nxt_devpoll_engine_t)); --- 342 unchanged lines hidden (view full) --- 508 engine->u.devpoll.fd, fd, n); 509 510 if (n == 0) { 511 /* The file descriptor is not in the set. */ 512 return; 513 } 514 515 if (n == -1) { |
518 nxt_log(&engine->task, NXT_LOG_CRIT, 519 "ioctl(%d, DP_ISPOLLED, %d) failed %E", 520 engine->u.devpoll.fd, fd, nxt_errno); | 516 nxt_alert(&engine->task, "ioctl(%d, DP_ISPOLLED, %d) failed %E", 517 engine->u.devpoll.fd, fd, nxt_errno); |
521 /* Fall through. */ 522 } 523 524 /* n == 1: the file descriptor is in the set. */ 525 526 nxt_debug(&engine->task, "devpoll %d remove fd:%d", 527 engine->u.devpoll.fd, fd); 528 --- 15 unchanged lines hidden (view full) --- 544 nxt_debug(&engine->task, "devpoll write(%d) changes:%uz", fd, n); 545 546 n *= sizeof(struct pollfd); 547 548 if (nxt_slow_path(write(fd, pfd, n) == (ssize_t) n)) { 549 return NXT_OK; 550 } 551 | 518 /* Fall through. */ 519 } 520 521 /* n == 1: the file descriptor is in the set. */ 522 523 nxt_debug(&engine->task, "devpoll %d remove fd:%d", 524 engine->u.devpoll.fd, fd); 525 --- 15 unchanged lines hidden (view full) --- 541 nxt_debug(&engine->task, "devpoll write(%d) changes:%uz", fd, n); 542 543 n *= sizeof(struct pollfd); 544 545 if (nxt_slow_path(write(fd, pfd, n) == (ssize_t) n)) { 546 return NXT_OK; 547 } 548 |
552 nxt_log(&engine->task, NXT_LOG_CRIT, "devpoll write(%d) failed %E", 553 fd, nxt_errno); | 549 nxt_alert(&engine->task, "devpoll write(%d) failed %E", fd, nxt_errno); |
554 555 return NXT_ERROR; 556} 557 558 559static void 560nxt_devpoll_poll(nxt_event_engine_t *engine, nxt_msec_t timeout) 561{ --- 25 unchanged lines hidden (view full) --- 587 err = (nevents == -1) ? nxt_errno : 0; 588 589 nxt_thread_time_update(engine->task.thread); 590 591 nxt_debug(&engine->task, "ioctl(%d, DP_POLL): %d", 592 engine->u.devpoll.fd, nevents); 593 594 if (nevents == -1) { | 550 551 return NXT_ERROR; 552} 553 554 555static void 556nxt_devpoll_poll(nxt_event_engine_t *engine, nxt_msec_t timeout) 557{ --- 25 unchanged lines hidden (view full) --- 583 err = (nevents == -1) ? nxt_errno : 0; 584 585 nxt_thread_time_update(engine->task.thread); 586 587 nxt_debug(&engine->task, "ioctl(%d, DP_POLL): %d", 588 engine->u.devpoll.fd, nevents); 589 590 if (nevents == -1) { |
595 level = (err == NXT_EINTR) ? NXT_LOG_INFO : NXT_LOG_CRIT; | 591 level = (err == NXT_EINTR) ? NXT_LOG_INFO : NXT_LOG_ALERT; |
596 597 nxt_log(&engine->task, level, "ioctl(%d, DP_POLL) failed %E", 598 engine->u.devpoll.fd, err); 599 600 return; 601 } 602 603 for (i = 0; i < nevents; i++) { 604 605 pfd = &engine->u.devpoll.events[i]; 606 fd = pfd->fd; 607 events = pfd->revents; 608 609 ev = nxt_fd_event_hash_get(&engine->task, &engine->u.devpoll.fd_hash, 610 fd); 611 612 if (nxt_slow_path(ev == NULL)) { | 592 593 nxt_log(&engine->task, level, "ioctl(%d, DP_POLL) failed %E", 594 engine->u.devpoll.fd, err); 595 596 return; 597 } 598 599 for (i = 0; i < nevents; i++) { 600 601 pfd = &engine->u.devpoll.events[i]; 602 fd = pfd->fd; 603 events = pfd->revents; 604 605 ev = nxt_fd_event_hash_get(&engine->task, &engine->u.devpoll.fd_hash, 606 fd); 607 608 if (nxt_slow_path(ev == NULL)) { |
613 nxt_log(&engine->task, NXT_LOG_CRIT, 614 "ioctl(%d, DP_POLL) returned invalid " 615 "fd:%d ev:%04Xd rev:%04uXi", 616 engine->u.devpoll.fd, fd, pfd->events, events); | 609 nxt_alert(&engine->task, 610 "ioctl(%d, DP_POLL) returned invalid " 611 "fd:%d ev:%04Xd rev:%04uXi", 612 engine->u.devpoll.fd, fd, pfd->events, events); |
617 618 nxt_devpoll_remove(engine, fd); 619 continue; 620 } 621 622 nxt_debug(ev->task, "devpoll: fd:%d ev:%04uXi rd:%d wr:%d", 623 fd, events, ev->read, ev->write); 624 625 if (nxt_slow_path(events & (POLLERR | POLLHUP | POLLNVAL)) != 0) { | 613 614 nxt_devpoll_remove(engine, fd); 615 continue; 616 } 617 618 nxt_debug(ev->task, "devpoll: fd:%d ev:%04uXi rd:%d wr:%d", 619 fd, events, ev->read, ev->write); 620 621 if (nxt_slow_path(events & (POLLERR | POLLHUP | POLLNVAL)) != 0) { |
626 nxt_log(ev->task, NXT_LOG_CRIT, 627 "ioctl(%d, DP_POLL) error fd:%d ev:%04Xd rev:%04uXi", 628 engine->u.devpoll.fd, fd, pfd->events, events); | 622 nxt_alert(ev->task, 623 "ioctl(%d, DP_POLL) error fd:%d ev:%04Xd rev:%04uXi", 624 engine->u.devpoll.fd, fd, pfd->events, events); |
629 630 nxt_work_queue_add(&engine->fast_work_queue, ev->error_handler, 631 ev->task, ev, ev->data); 632 continue; 633 } 634 635 if (events & POLLIN) { 636 ev->read_ready = 1; --- 29 unchanged lines hidden --- | 625 626 nxt_work_queue_add(&engine->fast_work_queue, ev->error_handler, 627 ev->task, ev, ev->data); 628 continue; 629 } 630 631 if (events & POLLIN) { 632 ev->read_ready = 1; --- 29 unchanged lines hidden --- |