init: init nachos hw01, should pass jenkins os_group_20_hw job but fail on os_group_20_ta job
This commit is contained in:
53
code/userprog/synchconsole.h
Normal file
53
code/userprog/synchconsole.h
Normal file
@@ -0,0 +1,53 @@
|
||||
// synchconsole.h
|
||||
// Data structures for synchronized access to the keyboard
|
||||
// and console display devices.
|
||||
//
|
||||
// NOTE: this abstraction is not completely implemented.
|
||||
//
|
||||
// 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 SYNCHCONSOLE_H
|
||||
#define SYNCHCONSOLE_H
|
||||
|
||||
#include "copyright.h"
|
||||
#include "utility.h"
|
||||
#include "callback.h"
|
||||
#include "console.h"
|
||||
#include "synch.h"
|
||||
|
||||
// The following two classes define synchronized input and output to
|
||||
// a console device
|
||||
|
||||
class SynchConsoleInput : public CallBackObj {
|
||||
public:
|
||||
SynchConsoleInput(char *inputFile); // Initialize the console device
|
||||
~SynchConsoleInput(); // Deallocate console device
|
||||
|
||||
char GetChar(); // Read a character, waiting if necessary
|
||||
|
||||
private:
|
||||
ConsoleInput *consoleInput; // the hardware keyboard
|
||||
Lock *lock; // only one reader at a time
|
||||
Semaphore *waitFor; // wait for callBack
|
||||
|
||||
void CallBack(); // called when a keystroke is available
|
||||
};
|
||||
|
||||
class SynchConsoleOutput : public CallBackObj {
|
||||
public:
|
||||
SynchConsoleOutput(char *outputFile); // Initialize the console device
|
||||
~SynchConsoleOutput();
|
||||
|
||||
void PutChar(char ch); // Write a character, waiting if necessary
|
||||
|
||||
private:
|
||||
ConsoleOutput *consoleOutput;// the hardware display
|
||||
Lock *lock; // only one writer at a time
|
||||
Semaphore *waitFor; // wait for callBack
|
||||
|
||||
void CallBack(); // called when more data can be written
|
||||
};
|
||||
|
||||
#endif // SYNCHCONSOLE_H
|
||||
Reference in New Issue
Block a user