⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ttycntl.h

📁 早期freebsd实现
💻 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 + -