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

📄 console.h

📁 Nachos是个教学用的小型操作系统
💻 H
字号:
// console.h //	Data structures to simulate the behavior of a terminal//	I/O device.  A terminal has two parts -- a keyboard input,//	and a display output, each of which produces/accepts //	characters sequentially.////	The console hardware device is asynchronous.  When a character is//	written to the device, the routine returns immediately, and an //	interrupt handler is called later when the I/O completes.//	For reads, an interrupt handler is called when a character arrives. ////	In either case, the serial line connecting the computer//	to the console has limited bandwidth (like a modem!), and so//	each character takes measurable time.////	The user of the device registers itself to be called "back" when //	the read/write interrupts occur.  There is a separate interrupt//	for read and write, and the device is "duplex" -- a character//	can be outgoing and incoming at the same time.////  DO NOT CHANGE -- part of the machine emulation//// Copyright (c) 1992-1996 The Regents of the University of California.// All rights reserved.  See copyright.h for copyright notice and limitation // of liability and disclaimer of warranty provisions.#ifndef CONSOLE_H#define CONSOLE_H#include "copyright.h"#include "utility.h"#include "callback.h"// The following two classes define the input (and output) side of a // hardware console device.  Input (and output) to the device is simulated // by reading (and writing) to the UNIX file "readFile" (and "writeFile").//// Since input (and output) to the device is asynchronous, the interrupt // handler "callWhenAvail" is called when a character has arrived to be // read in (and "callWhenDone" is called when an output character has been // "put" so that the next character can be written).//// In practice, usually a single hardware thing that does both// serial input and serial output.  But conceptually simpler to// use two objects.class ConsoleInput : public CallBackObj {  public:    ConsoleInput(char *readFile, CallBackObj *toCall);				// initialize hardware console input     ~ConsoleInput();		// clean up console emulation    char GetChar();	   	// Poll the console input.  If a char is 				// available, return it.  Otherwise, return EOF.    				// "callWhenAvail" is called whenever there is 				// a char to be gotten    void CallBack();		// Invoked when a character arrives				// from the keyboard.  private:    int readFileNo;			// UNIX file emulating the keyboard     CallBackObj *callWhenAvail;		// Interrupt handler to call when 					// there is a char to be read    char incoming;    			// Contains the character to be read,					// if there is one available. 					// Otherwise contains EOF.};class ConsoleOutput : public CallBackObj {  public:    ConsoleOutput(char *writeFile, CallBackObj *toCall);				// initialize hardware console output     ~ConsoleOutput();		// clean up console emulation    void PutChar(char ch);	// Write "ch" to the console display, 				// and return immediately.  "callWhenDone" 				// will called when the I/O completes.     void CallBack();		// Invoked when next character can be put				// out to the display.  private:    int writeFileNo;			// UNIX file emulating the display    CallBackObj *callWhenDone;		// Interrupt handler to call when 					// the next char can be put     bool putBusy;    			// Is a PutChar operation in progress?					// If so, you can't do another one!};#endif // CONSOLE_H

⌨️ 快捷键说明

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