ioctl.c

来自「mips架构的bootloader,99左右的版本 但源代码现在没人更新了」· C语言 代码 · 共 110 行

C
110
字号
/************************************************************* * File: pmon/ioctl.c * Purpose: Part of the Prom Monitor (PMON) * Author: Phil Bunce (pjb@carmel.com) * Revision History: *	970304	Start of revision history */#include <termio.h>#include <pmon.h>#define OPEN_MAX 8static struct termio ttsave[OPEN_MAX];/**************************************************************  ioctl_setup(fd)*/ioctl_setup(fd)int fd;{if (ioctl(fd,TCGETA,&ttsave[fd]) == -1) {	fprintf(stderr,"ioctl_setup: bad ioctl TCGETA on fd=%d\n",fd);	}}/**************************************************************  ioctl_getsaved(fd,buf)*/ioctl_getsaved(fd,buf)int fd;struct termio *buf;{*buf = ttsave[fd];}/**************************************************************  ioctl_putsaved(fd,buf)*/ioctl_putsaved(fd,buf)int fd;struct termio *buf;{ttsave[fd] = *buf;}/**************************************************************  ioctl_restore(fd)*/ioctl_restore(fd)int fd;{if (ioctl(fd,TCSETAF,&ttsave[fd]) == -1) {	fprintf(stderr,"ioctl_restore: bad ioctl TCSETAF on fd=%d\n",fd);	}}/**************************************************************  ioctl_cbreak(fd)*	clear ICANON and ECHO*/ioctl_cbreak(fd)int fd;{struct termio tbuf;if (ttsave[fd].c_cflag==0) ioctl_setup(fd);tbuf = ttsave[fd];tbuf.c_lflag &= ~(ICANON|ECHO|ECHOE);tbuf.c_cc[4] = 1; /* MIN */if (ioctl(fd,TCSETAF,&tbuf) == -1) {	fprintf(stderr,"ioctl_cbreak: bad ioctl TCSETAF on fd=%d\n",fd);	}}/**************************************************************  ioctl_xvwlo(fd)*/ ioctl_xvwlo(fd) int fd;{ struct termio tbuf;  if (ttsave[fd].c_cflag==0) ioctl_setup(fd);tbuf = ttsave[fd];tbuf.c_iflag &= ~IXOFF;tbuf.c_lflag &= ~ECHO;tbuf.c_iflag &= ~(ISTRIP|ICRNL);tbuf.c_cc[2] = 0xff; /* turn off bs processing */if (ioctl(fd,TCSETAF,&tbuf) == -1) {	fprintf(stderr,"ioctl_xvwlo: bad ioctl TCSETAF on fd=%d\n",fd);	}ioctl(fd,TCSETAF,&tbuf);}/**************************************************************  ioctl_fionread(fd)*/ioctl_fionread(fd)int fd;{int n;ioctl(fd,FIONREAD,&n);return(n);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?