diff options
author | Ali Saidi <saidi@eecs.umich.edu> | 2004-06-26 21:26:28 -0400 |
---|---|---|
committer | Ali Saidi <saidi@eecs.umich.edu> | 2004-06-26 21:26:28 -0400 |
commit | 54b49f933abe452a48bf13c9c948946672bb784b (patch) | |
tree | 3f26334dcc4e6acbfebcaf70116058a89f05e6e1 /dev/console.hh | |
parent | 4799a7b87439913765029117eb51fcacd6f07edb (diff) | |
download | gem5-54b49f933abe452a48bf13c9c948946672bb784b.tar.xz |
rewrote uart and renamed console.cc to simconsole to reduce confusion
base/traceflags.py:
removed TsunamiUart/TlaserUart and added a plain Uart
dev/alpha_console.cc:
updated for new simconsole
dev/platform.hh:
added a uart member to platform
dev/simconsole.cc:
dev/simconsole.hh:
removed lots of legacy code, it should all be ours now.
converted tabs to 8 spaces
added our copyright
dev/tsunami.cc:
uses simconsole.hh rather than console.hh
dev/tsunami_cchip.cc:
dev/tsunami_io.cc:
never needed console.hh
dev/tsunami_io.hh:
this does need eventq.hh and it just happend to be working whenn console.hh was
included everywhere
dev/tsunamireg.h:
added a couple more 8250/16550 uart defines
dev/uart.cc:
new uart code, rewritten to support both tlaser and tsunami (both a 8250 and 8530
uart).
dev/uart.hh:
updated for new uart, legacy code removed
--HG--
rename : dev/console.cc => dev/simconsole.cc
rename : dev/console.hh => dev/simconsole.hh
rename : dev/tsunami_uart.cc => dev/uart.cc
rename : dev/tsunami_uart.hh => dev/uart.hh
extra : convert_revision : e663352d49d4c2d3c95643030cf73c0e85ba2f08
Diffstat (limited to 'dev/console.hh')
-rw-r--r-- | dev/console.hh | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/dev/console.hh b/dev/console.hh deleted file mode 100644 index 87be9ccbc..000000000 --- a/dev/console.hh +++ /dev/null @@ -1,162 +0,0 @@ -/* $Id$ */ - -/* @file - * User Console Interface - */ - -#ifndef __CONSOLE_HH__ -#define __CONSOLE_HH__ - -#include <iostream> - -#include "base/circlebuf.hh" -#include "cpu/intr_control.hh" -#include "base/pollevent.hh" -#include "base/socket.hh" -#include "sim/sim_object.hh" - -class ConsoleListener; -class SimConsole : public SimObject -{ - protected: - class Event : public PollEvent - { - protected: - SimConsole *cons; - - public: - Event(SimConsole *c, int fd, int e); - void process(int revent); - }; - - friend class Event; - Event *event; - - protected: - int number; - int in_fd; - int out_fd; - - protected: - ConsoleListener *listener; - - public: - SimConsole(const std::string &name, const std::string &file, int num); - ~SimConsole(); - - protected: - CircleBuf txbuf; - CircleBuf rxbuf; - std::ostream *outfile; -#if TRACING_ON == 1 - CircleBuf linebuf; -#endif - - public: - /////////////////////// - // Terminal Interface - - void attach(int fd, ConsoleListener *l = NULL) { attach(fd, fd, l); } - void attach(int in, int out, ConsoleListener *l = NULL); - void detach(); - - void data(); - - void close(); - void read(uint8_t &c) { read(&c, 1); } - size_t read(uint8_t *buf, size_t len); - void write(uint8_t c) { write(&c, 1); } - size_t write(const uint8_t *buf, size_t len); - - void configTerm(); - - protected: - // interrupt status/enable - int _status; - int _enable; - - // interrupt handle - IntrControl *intr; - // Platform so we can post interrupts - Platform *platform; - - public: - ///////////////// - // OS interface - - // Get a character from the console. - bool in(uint8_t &value); - - // get a character from the console in the console specific format - // corresponds to GETC: - // retval<63:61> - // 000: success: character received - // 001: success: character received, more pending - // 100: failure: no character ready - // 110: failure: character received with error - // 111: failure: character received with error, more pending - // retval<31:0> - // character read from console - // - // Interrupts are cleared when the buffer is empty. - uint64_t console_in(); - - // Send a character to the console - void out(char c, bool raise_int = true); - - enum { - TransmitInterrupt = 1, - ReceiveInterrupt = 2 - }; - - // Read the current interrupt status of this console. - int intStatus() { return _status; } - - // Set the interrupt enable bits. - int clearInt(int i); - void raiseInt(int i); - - void initInt(IntrControl *i); - void setInt(int bits); - - void setPlatform(Platform *p); - - virtual void serialize(std::ostream &os); - virtual void unserialize(Checkpoint *cp, const std::string §ion); -}; - -class ConsoleListener : public SimObject -{ - protected: - class Event : public PollEvent - { - protected: - ConsoleListener *listener; - - public: - Event(ConsoleListener *l, int fd, int e) - : PollEvent(fd, e), listener(l) {} - void process(int revent); - }; - - friend class Event; - Event *event; - - typedef std::list<SimConsole *> list_t; - typedef list_t::iterator iter_t; - list_t ConsoleList; - - protected: - ListenSocket listener; - - public: - ConsoleListener(const std::string &name); - ~ConsoleListener(); - - void add(SimConsole *cons); - - void accept(); - void listen(int port); -}; - -#endif // __CONSOLE_HH__ |