On Mon, Jan 03, 2005 at 10:12:46AM -0800, Doug White wrote: kern/75758 > Could you file a PR on this? Thanks! > > On Sun, 2 Jan 2005, Slawa Olhovchenkov wrote: > > > 6-current totally hangs by this program, from user, not root. > > No responds on keys pressed, Control-Alt-ESC, switching console and etc. > > > > System run in infinite loop in sys/kern/tty.c:ttread() > > > > === > > read: > > splx(s); > > /* > > * Input present, check for input mapping and processing. > > */ > > first = 1; > > if (ISSET(lflag, ICANON | ISIG)) > > goto slowcase; > > for (;;) { > > char ibuf[IBUFSIZ]; > > int icc; > > > > icc = imin(uio->uio_resid, IBUFSIZ); > > /* XXX uio_resid==0 => icc=0 */ > > icc = q_to_b(qp, ibuf, icc); > > /* icc == 0 */ > > if (icc <= 0) { > > if (first) > > goto loop; > > > > === > > > > #include <stdio.h> > > #include <stdlib.h> > > #include <unistd.h> > > #include <errno.h> > > #include <termios.h> > > #include <sys/types.h> > > #include <sys/stat.h> > > #include <fcntl.h> > > #include <string.h> > > > > #define cfmakeraw(ptr) (ptr)->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR\ > > |IGNCR|ICRNL|IXON);\ > > (ptr)->c_oflag &= ~OPOST;\ > > (ptr)->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);\ > > (ptr)->c_cflag &= ~(CSIZE|PARENB);\ > > (ptr)->c_cflag |= CS8 > > > > > > int > > main(int argc, char *argv[]) > > { > > int fd, > > i; > > char *buf[1024]; > > > > struct termios tcn; > > if ((fd = open("/dev/tty", O_RDWR | O_NONBLOCK)) == -1) { > > return -1; /* errno already set */ > > } > > > > /* Set the tty to raw and to the correct speed */ > > tcgetattr(fd, &tcn); > > > > tcn.c_oflag = 0; > > tcn.c_iflag = IGNBRK | IGNPAR; > > tcn.c_cflag = CREAD | CLOCAL | CS8; > > > > tcn.c_lflag = NOFLSH; > > > > cfmakeraw(&tcn); > > > > for (i = 0; i < 16; i++) > > tcn.c_cc[i] = 0; > > > > tcn.c_cc[VMIN] = 1; > > tcn.c_cc[VTIME] = 0; > > > > tcsetattr(fd, TCSANOW, &tcn); > > > > if ((i = fcntl(fd, F_GETFL, 0)) != -1) { > > i &= ~O_NONBLOCK; > > fcntl(fd, F_SETFL, i); > > } > > read(fd, buf, 0); > > > > } > > > > > > > > > > -- > Doug White | FreeBSD: The Power to Serve > dwhite_at_gumbysoft.com | www.FreeBSD.org > _______________________________________________ > freebsd-current_at_freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org" -- Slawa OlhovchenkovReceived on Mon Jan 03 2005 - 20:39:41 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:25 UTC