//----------------------------------------------------------------------
// SynchConsole
//    Routines to synchronously access the console.  The console itself
//    is asynchronous.
//
//    A lock is used to ensure one read or write is done at a time.
//----------------------------------------------------------------------

#include "console.h"
#include "synch.h"

static Semaphore *readAvail;
static Semaphore *writeDone;

static void ReadAvail(int arg) { readAvail->V(); }
static void WriteDone(int arg) { writeDone->V(); }

class SynchConsole {
public:
  SynchConsole(char* readFile, char* writeFile);
  ~SynchConsole();
  void ReadLine(char *databuf,int length);
  void WriteLine(char *databuf,int length);
  
private:
  Console *console;
  Lock *lock;
};