📄 console.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. //// The user of the device can specify the routines to be called 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-1993 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"// The following class defines a hardware console device.// Input and output to the device is simulated by reading // and writing to UNIX files ("readFile" and "writeFile").//// Since the device is asynchronous, the interrupt handler "readAvail" // is called when a character has arrived, ready to be read in.// The interrupt handler "writeDone" is called when an output character // has been "put", so that the next character can be written.class Console { public: Console(char *readFile, char *writeFile, VoidFunctionPtr readAvail, VoidFunctionPtr writeDone, int callArg); // initialize the hardware console device ~Console(); // clean up console emulation// external interface -- Nachos kernel code can call these void PutChar(char ch); // Write "ch" to the console display, // and return immediately. "writeHandler" // is called when the I/O completes. char GetChar(); // Poll the console input. If a char is // available, return it. Otherwise, return EOF. // "readHandler" is called whenever there is // a char to be gotten// internal emulation routines -- DO NOT call these. void WriteDone(); // internal routines to signal I/O completion void CheckCharAvail(); private: int readFileNo; // UNIX file emulating the keyboard int writeFileNo; // UNIX file emulating the display VoidFunctionPtr writeHandler; // Interrupt handler to call when // the PutChar I/O completes VoidFunctionPtr readHandler; // Interrupt handler to call when // a character arrives from the keyboard int handlerArg; // argument to be passed to the // interrupt handlers bool putBusy; // Is a PutChar operation in progress? // If so, you can't do another one! char incoming; // Contains the character to be read, // if there is one available. // Otherwise contains EOF.};#endif // CONSOLE_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -