The Pedigree Project  0.1
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ConsolePhysicalFile Class Reference
+ Inheritance diagram for ConsolePhysicalFile:
+ Collaboration diagram for ConsolePhysicalFile:

Public Member Functions

 ConsolePhysicalFile (size_t nth, File *pTerminal, String consoleName, Filesystem *pFs)
 
virtual uint64_t readBytewise (uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true)
 
virtual uint64_t writeBytewise (uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true)
 
virtual bool isMaster ()
 
virtual char getLast ()
 
virtual size_t getPhysicalConsoleNumber () const
 
virtual int select (bool bWriting, int timeout)
 select - check and optionally for a particular state.
 
- Public Member Functions inherited from ConsoleFile
 ConsoleFile (size_t consoleNumber, String consoleName, Filesystem *pFs)
 
void setEvent (Event *e)
 
EventgetEvent () const
 
void getControlCharacters (char *out)
 Grabs the current array of control characters.
 
virtual size_t getBlockSize () const
 
size_t getConsoleNumber () const
 
virtual void eventComplete ()
 
- Public Member Functions inherited from File
 File ()
 
 File (const String &name, Time::Timestamp accessedTime, Time::Timestamp modifiedTime, Time::Timestamp creationTime, uintptr_t inode, class Filesystem *pFs, size_t size, File *pParent)
 
virtual ~File ()
 
virtual uint64_t read (uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true) final
 
virtual uint64_t write (uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true) final
 
virtual physical_uintptr_t getPhysicalPage (size_t offset)
 
virtual void returnPhysicalPage (size_t offset)
 
virtual void sync ()
 
virtual void sync (size_t offset, bool async)
 
Time::Timestamp getCreationTime ()
 
void setCreationTime (Time::Timestamp t)
 
Time::Timestamp getAccessedTime ()
 
void setAccessedTime (Time::Timestamp t)
 
Time::Timestamp getModifiedTime ()
 
void setModifiedTime (Time::Timestamp t)
 
String getName () const
 
void getName (String &s) const
 
virtual String getFullPath (bool bWithLabel=true)
 
virtual void truncate ()
 
size_t getSize ()
 
void setSize (size_t sz)
 
virtual bool isSymlink ()
 
virtual bool isDirectory ()
 
virtual bool isPipe () const
 
virtual bool isFifo () const
 
virtual bool isSocket () const
 
uintptr_t getInode () const
 
virtual void setInode (uintptr_t inode)
 
FilesystemgetFilesystem () const
 
void setFilesystem (Filesystem *pFs)
 
virtual void fileAttributeChanged ()
 
virtual void increaseRefCount (bool bIsWriter)
 
virtual void decreaseRefCount (bool bIsWriter)
 
void setPermissions (uint32_t perms)
 
uint32_t getPermissions () const
 
void setUid (size_t uid)
 
size_t getUid () const
 
void setGid (size_t gid)
 
size_t getGid () const
 
FilegetParent () const
 
void monitor (Thread *pThread, Event *pEvent)
 
void cullMonitorTargets (Thread *pThread)
 
virtual bool supports (const size_t command) const
 
virtual int command (const size_t command, void *buffer)
 
void enableDirect ()
 
void disableDirect ()
 
virtual void preallocate (size_t expectedSize, bool zero=true)
 
virtual Fileopen ()
 

Private Member Functions

virtual void performInject (char *buf, size_t len, bool canBlock)
 

Private Attributes

Filem_pTerminal
 
Buffer< char > m_ProcessedInput
 
size_t m_TerminalNumber
 

Additional Inherited Members

- Protected Member Functions inherited from ConsoleFile
void inject (char *buf, size_t len, bool canBlock)
 inject - inject bytes into the ring buffer
 
virtual void performEventTrigger (char cause)
 
size_t processInput (char *buf, size_t len)
 Input processing.
 
void inputLineDiscipline (char *buf, size_t len, size_t flags=~0U, const char *controlChars=0)
 Input line discipline. More...
 
- Protected Member Functions inherited from File
virtual uintptr_t readBlock (uint64_t location)
 
virtual void writeBlock (uint64_t location, uintptr_t addr)
 
virtual void extend (size_t newSize)
 
virtual void extend (size_t newSize, uint64_t location, uint64_t size)
 
void dataChanged ()
 
void getFilesystemLabel (HugeStaticString &s)
 
virtual void pinBlock (uint64_t location)
 
virtual void unpinBlock (uint64_t location)
 
void evict (uint64_t location)
 
void setPermissionsOnly (uint32_t perms)
 
void setUidOnly (size_t uid)
 
void setGidOnly (size_t gid)
 
- Static Protected Member Functions inherited from ConsoleFile
static size_t outputLineDiscipline (char *buf, size_t len, size_t maxSz, size_t flags=0)
 Output line discipline.
 
- Static Protected Member Functions inherited from File
static void writeCallback (CacheConstants::CallbackCause cause, uintptr_t loc, uintptr_t page, void *meta)
 
- Protected Attributes inherited from ConsoleFile
ConsoleFilem_pOther
 Other side of the console.
 
size_t m_Flags
 
char m_ControlChars [MAX_CONTROL_CHAR]
 
unsigned short m_Rows
 
unsigned short m_Cols
 
char m_LineBuffer [LINEBUFFER_MAXIMUM]
 Input line buffer.
 
size_t m_LineBufferSize
 Size of the input line buffer.
 
size_t m_LineBufferFirstNewline
 Location of the first newline in the line buffer. ~0 if none.
 
char m_Last
 Character that triggered an event.
 
Buffer< char > m_Buffer
 
- Protected Attributes inherited from File
String m_Name
 
Time::Timestamp m_AccessedTime
 
Time::Timestamp m_ModifiedTime
 
Time::Timestamp m_CreationTime
 
uintptr_t m_Inode
 
class Filesystemm_pFilesystem
 
size_t m_Size
 
Filem_pParent
 
size_t m_nWriters
 
size_t m_nReaders
 
size_t m_Uid
 
size_t m_Gid
 
uint32_t m_Permissions
 
HashTable< DataCacheKey, uintptr_t > m_DataCache
 
bool m_bDirect
 
Cache m_FillCache
 
Mutex m_Lock
 
List< MonitorTarget * > m_MonitorTargets
 

Detailed Description

Definition at line 263 of file Console.h.

Member Function Documentation

virtual char ConsolePhysicalFile::getLast ( )
inlinevirtual

getLast - get the most recent character we handled. This is to be used by event handlers, which will be called when a special character is handled. The event handler can then call this function to identify the character and perform the relevant processing it needs to.

Todo:
this is no good

Reimplemented from ConsoleFile.

Definition at line 284 of file Console.h.

References ConsoleFile::performInject(), and ConsoleFile::select().

void ConsolePhysicalFile::performInject ( char *  buf,
size_t  len,
bool  canBlock 
)
privatevirtual

Override to permit different injection semantics. The default is to call m_pOther->inject.

Reimplemented from ConsoleFile.

Definition at line 102 of file ConsolePhysical.cc.

References File::dataChanged().

uint64_t ConsolePhysicalFile::readBytewise ( uint64_t  location,
uint64_t  size,
uintptr_t  buffer,
bool  bCanBlock = true 
)
virtual

Reads bytes from the file, if isBytewise() == true.

Reimplemented from File.

Definition at line 37 of file ConsolePhysical.cc.

References Buffer< T, allowShortOperation >::canRead(), ConsoleFile::inputLineDiscipline(), Buffer< T, allowShortOperation >::read(), and File::write().

uint64_t ConsolePhysicalFile::writeBytewise ( uint64_t  location,
uint64_t  size,
uintptr_t  buffer,
bool  bCanBlock = true 
)
virtual

Writes bytes to the file, if isBytewise() == true.

Todo:
handle small writes
Todo:
disciplineSize can be bigger than size due to edits, how do we manage this instead of lying?

Reimplemented from File.

Definition at line 82 of file ConsolePhysical.cc.

References ConsoleFile::outputLineDiscipline().


The documentation for this class was generated from the following files: