Lines Matching defs:efd

411 channel_register_fds(struct ssh *ssh, Channel *c, int rfd, int wfd, int efd,
420 if (efd != -1 && efd != rfd && efd != wfd)
421 (void)fcntl(efd, F_SETFD, FD_CLOEXEC);
426 c->efd = efd;
453 if (efd != -1 && !isatty(efd) &&
454 (val = fcntl(efd, F_GETFL)) != -1 && !(val & O_NONBLOCK)) {
457 set_nonblock(efd);
464 if (efd != -1)
465 set_nonblock(efd);
475 channel_new(struct ssh *ssh, char *ctype, int type, int rfd, int wfd, int efd,
516 channel_register_fds(ssh, c, rfd, wfd, efd, extusage, nonblock, 0);
548 else if (*fdp == c->efd &&
564 if (*fdp == c->efd) {
567 c->efd = -1;
586 int sock = c->sock, rfd = c->rfd, wfd = c->wfd, efd = c->efd;
593 if (efd != sock && efd != rfd && efd != wfd)
594 channel_close_fd(ssh, c, &c->efd);
989 if (c->efd == -1)
1017 c->rfd, c->wfd, c->efd, c->sock, c->ctl_chan,
1214 channel_set_fds(struct ssh *ssh, int id, int rfd, int wfd, int efd,
1225 channel_register_fds(ssh, c, rfd, wfd, efd, extusage, nonblock, is_tty);
1266 "obuf_empty delayed efd %d/(%zu)", c->self,
1267 c->efd, sshbuf_len(c->extended));
1273 if (c->efd != -1 && !(c->istate == CHAN_INPUT_CLOSED &&
1278 else if (c->efd != -1 && !(c->flags & CHAN_EOF_SENT) &&
1284 /* XXX: What about efd? races? */
1380 if (c->efd != -1)
1381 channel_close_fd(ssh, c, &c->efd);
2255 len = write(c->efd, sshbuf_ptr(c->extended),
2257 debug2("channel %d: written %zd to efd %d", c->self, len, c->efd);
2261 debug2("channel %d: closing write-efd %d", c->self, c->efd);
2262 channel_close_fd(ssh, c, &c->efd);
2282 len = read(c->efd, buf, sizeof(buf));
2283 debug2("channel %d: read %zd from efd %d", c->self, len, c->efd);
2287 debug2("channel %d: closing read-efd %d", c->self, c->efd);
2288 channel_close_fd(ssh, c, &c->efd);
2293 debug3("channel %d: discard efd", c->self);
2302 if (c->efd == -1)
2305 /** XXX handle drain efd, too */
2642 c->rfd, c->wfd, c->efd, c->sock,
2668 * c->wfd, c->efd and/or c->sock. Handle those here if they want
2680 /* rfd == efd */
2681 if (c->efd == c->rfd) {
2717 /* prepare c->efd if wanting IO and not already handled above */
2718 if (c->efd != -1 && c->rfd != c->efd) {
2727 pfd[p].fd = c->efd;
2729 dump_channel_poll(__func__, "efd", c, p, &pfd[p]);
2767 /* Allocate 4x pollfd for each channel (rfd, wfd, efd, sock) */
2808 c->rfd, c->wfd, c->efd, c->sock);
2812 c->self, what, p, pfd->fd, c->rfd, c->wfd, c->efd, c->sock);
2844 /* if rfd is shared with efd/sock then wfd should be too */
2846 (c->rfd == c->efd || c->rfd == c->sock)) {
2849 c->self, c->rfd, c->wfd, c->efd, c->sock);
2852 /* rfd, potentially shared with wfd, efd and sock */
2860 if (c->rfd == c->efd) {
2861 fd_ready(c, p, pfd, npfd, c->efd,
2863 fd_ready(c, p, pfd, npfd, c->efd,
2881 /* efd */
2882 if (c->efd != -1 && c->efd != c->rfd &&
2884 fd_ready(c, p, pfd, npfd, c->efd,
2886 fd_ready(c, p, pfd, npfd, c->efd,
2888 dump_channel_poll(__func__, "efd", c, p, pfd);
2925 "ibuf_empty delayed efd %d/(%zu)",
2926 c->self, c->efd, sshbuf_len(c->extended));
3456 if (c->efd == -1 ||