📄 ttycntl.h
字号:
/****************************************************************************** * Copyright 1990, 1992 Free Software Foundation, Inc. * * This code was donated by Intel Corp. * * This include file provides BSD/USG-compatible tty control for a host utility * that interacts with NINDY. As of this writing, it is used by the gdb960 * remote communications module (remote.c) and the comm960 utility. * * It is assumed that 'USG' is defined on the compiler invocation line if the * code should compile and run on a USG/SysV system. Otherwise, BSD is assumed. * * The application code has access to these macros: * * TTY_STRUCT Data type used by tty functions (ioctls and the * following macros). * * TTY_NINDYTERM(tty) * 'tty' is assumed to be a TTY_STRUCT describing the * terminal. It is modified as appropriate to allow * all user input to be passed through unmodified to NINDY * as soon as it is typed, and to allow all NINDY output * to be passed through unmodified to the display as soon * as it is received. * * TTY_REMOTE(tty,baud) * 'tty' is assumed to be a TTY_STRUCT describing the * serial connection between the host and NINDY. It is * initialized as appropriate to allow communications * between the host and NINDY at the specified baud rate * (which must be one of the "B..." defined constants). * * TTY_FLUSH(fd) flush all pending input and output on the tty whose * file descriptor is 'fd'. * * TTY_NBREAD(fd,n,bufptr) * Performs non-blocking read of 'n' characters on the * file descriptor 'fd'. Sets the integer 'n' to the * number of characters actually read. The characters * are read into the buffer pointed at by bufptr. * * In addition, the BSD ioctl commands TIOCGETP and TIOCSETP are defined to * have the same meanings under USG: retrieve and set (respectively) the * parameters of a tty. ******************************************************************************/#ifdef USG# include <termio.h># define TTY_STRUCT struct termio# define TIOCGETP TCGETA# define TIOCSETP TCSETAF /* NOTE!: * Remove CLOCAL from following macro if you will be accessing * the i960 system via a modem. */# define TTY_REMOTE(tty,baud) { \ tty.c_iflag = IXON | IXOFF; \ tty.c_oflag = 0; \ tty.c_cflag = baud|CS8|CREAD|CLOCAL; \ tty.c_lflag = 0; \ tty.c_cc[VEOF] = 1; \ tty.c_cc[VEOL] = 0; \ }# define TTY_NINDYTERM(tty) { \ tty.c_iflag = 0; \ tty.c_oflag = 0; \ tty.c_lflag = ISIG; \ tty.c_cc[VEOF] = 1; \ tty.c_cc[VEOL] = 0; \ }# define TTY_FLUSH(fd) ioctl(fd,TCFLSH,2);# define TTY_NBREAD(fd,n,bufptr) { \ int _saveflags_; \ _saveflags_ = fcntl( fd, F_GETFL, 0 ); \ fcntl( fd, F_SETFL, _saveflags_ | O_NDELAY ); \ n = read( fd, bufptr, n ); \ fcntl( fd, F_SETFL, _saveflags_ ); \ }#else /* BSD */# include <sys/ioctl.h># define TTY_STRUCT struct sgttyb# define TTY_REMOTE(tty,baud){ \ tty.sg_flags = RAW | TANDEM; \ tty.sg_ispeed = baud; \ tty.sg_ospeed = baud; \ }# define TTY_NINDYTERM(tty) { \ tty.sg_flags |= CBREAK; \ tty.sg_flags &= ~(ECHO|CRMOD); \ }# define TTY_FLUSH(fd) { int _i_ = 0; ioctl(fd,TIOCFLUSH,&_i_); }# define TTY_NBREAD(fd,n,bufptr) { \ int _n_; \ ioctl(fd,FIONREAD,&_n_); \ n = (_n_>0) ? read(fd,bufptr,n) : 0; \ }#endif#ifndef B19200# define B19200 EXTA#endif#ifndef B38400# define B38400 EXTB#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -