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 size_t getPhysicalConsoleNumber () const
 
virtual int select (bool bWriting, int timeout)
 select - check and optionally for a particular state.
 
ReadyMask queryReady (bool reading, bool writing) override
 
bool supportsReadinessNotifications () const override
 
void terminalReadinessChanged (ReadyMask mask)
 
size_t readableBytes (ConsoleIoState &state) override
 
- Public Member Functions inherited from ConsoleFile
 ConsoleFile (size_t consoleNumber, String consoleName, Filesystem *pFs)
 
 ConsoleFile (size_t consoleNumber, String consoleName, Filesystem *pFs, File *pParent)
 
SharedPointer< ConsoleIoState > captureOpenEpoch (bool waitForReopen=true)
 
bool beginRevocation (SharedPointer< ConsoleIoState > &retired)
 
void finishRevocation (const SharedPointer< ConsoleIoState > &retired, const SharedPointer< ConsoleIoState > &replacement)
 
uint64_t readEpoch (const SharedPointer< ConsoleIoState > &epoch, uint64_t size, uintptr_t buffer, bool canBlock)
 
uint64_t writeEpoch (const SharedPointer< ConsoleIoState > &epoch, uint64_t size, uintptr_t buffer, bool canBlock)
 
ReadyMask queryEpoch (const SharedPointer< ConsoleIoState > &epoch, bool reading, bool writing)
 
ReadinessGenerations epochGenerations (const SharedPointer< ConsoleIoState > &epoch)
 
SharedPointer< ConsoleControlState > controlState ()
 
void setControlState (const SharedPointer< ConsoleControlState > &state)
 
bool isCharacterDevice () const override
 
bool isConsole () const override
 
bool isPtySlave ()
 
bool isPtyMaster ()
 
virtual bool isSeekable () const
 
ReadinessGenerations readinessGenerations () override
 
void getControlCharacters (char *out)
 Grabs the current array of control characters.
 
virtual size_t getBlockSize () const
 
size_t getConsoleNumber () const
 
- 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
 
size_t readCached (uint64_t location, size_t size, uintptr_t buffer, bool(*prepare)(uintptr_t, size_t)=nullptr)
 
virtual uint64_t write (uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true) final
 
uint64_t append (uint64_t size, uintptr_t buffer, uint64_t &location, bool bCanBlock=true)
 
WriteGuard lockWrites ()
 
virtual physical_uintptr_t getPhysicalPage (size_t offset)
 
virtual bool isDirectPhysicalMapping () const
 
size_t physicalMappingFlags () const
 
virtual void returnPhysicalPage (size_t offset)
 
virtual bool tryBeginMappingRelease ()
 
void endMappingRelease ()
 
bool syncAndReturnPhysicalPage (size_t offset, bool async)
 
virtual bool sync ()
 
bool syncRange (size_t offset, size_t length)
 
virtual bool sync (size_t offset, bool async)
 
virtual bool syncPages (const uint64_t *offsets, size_t count)
 
Time::Timestamp getCreationTime ()
 
void setCreationTime (Time::Timestamp t)
 
Time::Timestamp getAccessedTime ()
 
void setAccessedTime (Time::Timestamp t)
 
Time::Timestamp getModifiedTime ()
 
void setModifiedTime (Time::Timestamp t)
 
void setTimes (Time::Timestamp accessed, Time::Timestamp modified, bool changeAccessed, bool changeModified)
 
virtual Attributes getAttributes () const
 
virtual XattrStatus getExtendedAttribute (const StringView &name, void *buffer, size_t capacity, size_t &required)
 
virtual XattrStatus listExtendedAttributes (void *buffer, size_t capacity, size_t &required)
 
virtual XattrStatus setExtendedAttribute (const StringView &name, const void *value, size_t length, unsigned flags)
 
virtual XattrStatus removeExtendedAttribute (const StringView &name)
 
virtual bool prepareSharedMapping (size_t offset, size_t length)
 
String getName () const
 
void getName (String &s) const
 
virtual void getFullPath (String &result, bool bWithMount=true)
 
virtual String getFullPath (bool bWithMount=true)
 
virtual void truncate ()
 
bool resize (size_t size)
 
virtual size_t getSize ()
 
void setSize (size_t sz)
 
virtual bool isSymlink ()
 
virtual bool isDirectory ()
 
virtual bool isBlockDevice () const
 
virtual uint64_t deviceNumber () const
 
virtual bool isPipe () const
 
virtual bool isFifo () const
 
virtual bool isSocket () const
 
bool supportsRegularFileOperations ()
 
virtual uint64_t maximumFileSize () const
 
virtual bool allowMapping (bool shared, bool writeRequested, bool &mayWrite)
 
bool acquireMappingUse (bool executable, bool sharedWrite)
 
void releaseMappingUse (bool executable, bool sharedWrite)
 
uintptr_t getInode () const
 
virtual void setInode (uintptr_t inode)
 
virtual uintptr_t futexIdentity ()
 
Filesystem * getFilesystem () const
 
void setFilesystem (Filesystem *pFs)
 
virtual void fileAttributeChanged ()
 
void publishEvent (FileEventMask mask, const StringView &name=StringView(), bool targetIsDirectory=false)
 
virtual FileHandleStatus subscribeInodeEvents (FileEventMask mask, const SharedPointer< FileEventObserver > &observer, FileEventSubscription &subscription)
 
virtual void finishInodeRetirement ()
 
virtual void increaseRefCount (bool bIsWriter)
 
virtual void decreaseRefCount (bool bIsWriter)
 
virtual bool retainVfsReference ()
 
virtual void releaseVfsReference ()
 
virtual bool isStableVfsRoot () const
 
void setPermissions (uint32_t perms)
 
uint32_t getPermissions () const
 
bool setOwnership (size_t uid, size_t gid, bool changeUid, bool changeGid)
 
void setUid (size_t uid)
 
size_t getUid () const
 
void setGid (size_t gid)
 
size_t getGid () const
 
File * getParent () const
 
void getNamespace (ParentLease &parent, String &name) const
 
void monitor (Thread *pThread, Event *pEvent)
 
void cullMonitorTargets (Thread *pThread)
 
void cullMonitorTargets (Event *pEvent)
 
virtual bool supports (const size_t command) const
 
virtual int command (const size_t command, void *buffer)
 
void markPageExternallyWritable (size_t offset)
 
size_t populateRange (size_t offset, size_t length)
 
void enableDirect ()
 
void disableDirect ()
 
virtual void preallocate (size_t expectedSize, bool zero=true)
 
bool allocateRange (size_t offset, size_t length, bool keepSize=false)
 
virtual File * open ()
 
virtual File * openForDescriptor (RetainedFile &owner)
 
- Public Member Functions inherited from ReadinessSource
MUST_USE_RESULT bool subscribeReadiness (ReadyMask interest, const SharedPointer< ReadinessObserver > &observer, ReadinessSubscription &subscription)
 
- Public Member Functions inherited from FileEventSource
MUST_USE_RESULT bool subscribeFileEvents (FileEventMask interest, const SharedPointer< FileEventObserver > &observer, FileEventSubscription &subscription)
 

Private Member Functions

void collectInput (ConsoleIoState &state, bool canBlock)
 
uint64_t readIo (ConsoleIoState &, uint64_t, uintptr_t, bool) override
 
uint64_t writeIo (ConsoleIoState &, uint64_t, uintptr_t, bool) override
 

Private Attributes

File * m_pTerminal
 
size_t m_TerminalNumber
 
SharedPointer< ReadinessObserver > m_TerminalReadinessObserver
 
ReadinessSubscription m_TerminalReadinessSubscription
 

Additional Inherited Members

- Public Types inherited from File
enum  AttributeMask : uint32_t {
  AccessTime = 1U << 0 , ModifyTime = 1U << 1 , ChangeTime = 1U << 2 , Owner = 1U << 3 ,
  Group = 1U << 4 , Permissions = 1U << 5
}
 
- Static Public Attributes inherited from File
static constexpr size_t MaxReadPages = 32
 
- Protected Member Functions inherited from ConsoleFile
void changed ()
 
ConsoleFile * stateOwner ()
 
size_t processInput (char *buf, size_t len)
 Input processing.
 
size_t inputLineDiscipline (ConsoleIoState &state, char *buf, size_t len, bool canBlock, size_t flags=~0U, const char *controlChars=nullptr)
 Input line discipline.
 
- Protected Member Functions inherited from File
bool tryAcquireFilesystemOperation (OperationBarrier::Lease &operation) const
 
virtual void updateAttributes (const Attributes &attributes, uint32_t mask)
 
virtual bool changeOwnership (size_t uid, size_t gid, bool changeUid, bool changeGid)
 
virtual bool allowPhysicalPage () const
 
virtual bool prepareWrite (uint64_t location, uint64_t size)
 
virtual bool allowResize (size_t oldSize, size_t newSize)
 
virtual bool prepareShrink (const ShrinkContext &context, UniquePointer< PreparedShrink > &prepared)
 
virtual bool resizeFile (size_t size)
 
virtual bool allocateFileRange (size_t offset, size_t length)
 
virtual Mutex & writeSerializationLock ()
 
virtual Mutex & dataMutationLock ()
 
virtual size_t & physicalPageLoans ()
 
bool clearDataCache ()
 
virtual uintptr_t readBlock (uint64_t location)
 
virtual bool readPage (uint64_t location, uintptr_t destination)
 
virtual bool readPages (ReadPage *pages, size_t count)
 
virtual void writeBlock (uint64_t location, uintptr_t addr)
 
virtual void writeBlocks (uint64_t location, uintptr_t addr, size_t length)
 
virtual void extend (size_t newSize)
 
virtual void extend (size_t newSize, uint64_t location, uint64_t size)
 
virtual void publishInodeEvent (const FileEvent &event)
 
void dataChanged ()
 
void getFilesystemLabel (HugeStaticString &s)
 
void enableFillCacheWriteback ()
 
void shutdownFillCacheWriteback ()
 
bool syncFillCache (size_t offset, bool async, bool &present)
 
virtual bool useFillCache () const
 
virtual MUST_USE_RESULT bool pinBlock (uint64_t location)
 
virtual MUST_USE_RESULT uintptr_t acquireCachedBlock (uint64_t location, bool retryChanged)
 
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)
 
void retainDetachedParent ()
 
void moveNamespace (const String &name, File *parent)
 
bool snapshotNamespace (ParentLease &parent, String &name, FileEventMask interest) const
 
virtual CacheState & cacheState ()
 
void setPhysicalMappingFlags (size_t flags)
 
- Protected Member Functions inherited from ReadinessSource
void notifyReadiness (ReadyMask mask)
 
void closeReadiness (ReadyMask mask=ReadyInvalid|ReadyHangup)
 
- Protected Member Functions inherited from FileEventSource
bool hasFileEventObservers (FileEventMask mask) const
 
void notifyFileEvent (const FileEvent &event)
 
void notifyFinalFileEvent (const FileEvent &event)
 
void beginFinalFileEvent (const FileEvent &event)
 
void drainFileEvents ()
 
void closeFileEvents ()
 
- 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 bool writeCallback (CacheConstants::CallbackCause cause, uintptr_t loc, uintptr_t page, void *meta)
 
static bool fillCacheCallback (CacheConstants::CallbackCause cause, uintptr_t loc, uintptr_t page, void *meta)
 
- Static Protected Member Functions inherited from FileEventSource
static bool anyFileEventObservers ()
 
- Protected Attributes inherited from ConsoleFile
ConsoleFile * m_pOther
 Other side of the console.
 
size_t m_Flags
 
char m_ControlChars [MAX_CONTROL_CHAR]
 
unsigned short m_Rows
 
unsigned short m_Cols
 
Mutex m_IoLock
 
ConditionVariable m_IoChanged
 
bool m_HangingUp
 
SharedPointer< ConsoleIoState > m_IoState
 
SharedPointer< ConsoleControlState > m_ControlState
 
- Protected Attributes inherited from File
String m_Name
 
Time::Timestamp m_AccessedTime
 
Time::Timestamp m_ModifiedTime
 
Time::Timestamp m_CreationTime
 
uintptr_t m_Inode
 
uintptr_t m_FutexIdentity = 0
 
class Filesystem * m_pFilesystem
 
size_t m_Size
 
File * m_pParent
 
Mutex m_MetadataLock
 
File * m_pDetachedParent
 
bool m_bDetachedParentHandled
 
size_t m_nWriters
 
size_t m_nReaders
 
size_t m_Uid
 
size_t m_Gid
 
uint32_t m_Permissions
 
CacheState m_CacheState
 
bool m_bDirect
 
Mutex m_WriteLock
 
Mutex m_DataMutationLock
 
size_t m_PhysicalPageLoans = 0
 
size_t m_PhysicalMappingFlags = 0
 
Mutex m_Lock
 
List< MonitorTarget * > m_MonitorTargets
 

Detailed Description

Definition at line 254 of file Console.h.

Constructor & Destructor Documentation

◆ ConsolePhysicalFile()

ConsolePhysicalFile::ConsolePhysicalFile ( size_t  nth,
File *  pTerminal,
String  consoleName,
Filesystem *  pFs 
)

Definition at line 49 of file ConsolePhysical.cc.

◆ ~ConsolePhysicalFile()

virtual ConsolePhysicalFile::~ConsolePhysicalFile ( )
inlinevirtual

Definition at line 257 of file Console.h.

Member Function Documentation

◆ collectInput()

void ConsolePhysicalFile::collectInput ( ConsoleIoState &  state,
bool  canBlock 
)
private

Definition at line 85 of file ConsolePhysical.cc.

◆ getPhysicalConsoleNumber()

virtual size_t ConsolePhysicalFile::getPhysicalConsoleNumber ( ) const
inlinevirtual

Reimplemented from ConsoleFile.

Definition at line 268 of file Console.h.

◆ isMaster()

virtual bool ConsolePhysicalFile::isMaster ( )
inlinevirtual

Implements ConsoleFile.

Definition at line 264 of file Console.h.

◆ queryReady()

ReadyMask ConsolePhysicalFile::queryReady ( bool  reading,
bool  writing 
)
inlineoverridevirtual

Return the current readiness state for this open endpoint.

Reimplemented from ConsoleFile.

Definition at line 274 of file Console.h.

References File::queryReady().

◆ readableBytes()

size_t ConsolePhysicalFile::readableBytes ( ConsoleIoState &  state)
overridevirtual

Reimplemented from ConsoleFile.

Definition at line 100 of file ConsolePhysical.cc.

◆ readBytewise()

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 149 of file ConsolePhysical.cc.

◆ readIo()

uint64_t ConsolePhysicalFile::readIo ( ConsoleIoState &  state,
uint64_t  size,
uintptr_t  buffer,
bool  canBlock 
)
overrideprivatevirtual

Implements ConsoleFile.

Definition at line 109 of file ConsolePhysical.cc.

◆ select()

int ConsolePhysicalFile::select ( bool  bWriting,
int  timeout 
)
virtual

select - check and optionally for a particular state.

Reimplemented from ConsoleFile.

Definition at line 159 of file ConsolePhysical.cc.

References Buffer< T, allowShortOperation >::canRead(), and File::select().

◆ supportsReadinessNotifications()

bool ConsolePhysicalFile::supportsReadinessNotifications ( ) const
inlineoverridevirtual

Whether readiness transitions are reported through ReadinessSource.

Reimplemented from ConsoleFile.

Definition at line 278 of file Console.h.

◆ terminalReadinessChanged()

void ConsolePhysicalFile::terminalReadinessChanged ( ReadyMask  mask)

Definition at line 66 of file ConsolePhysical.cc.

◆ writeBytewise()

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.

Reimplemented from File.

Definition at line 154 of file ConsolePhysical.cc.

◆ writeIo()

uint64_t ConsolePhysicalFile::writeIo ( ConsoleIoState &  state,
uint64_t  size,
uintptr_t  buffer,
bool  canBlock 
)
overrideprivatevirtual

Implements ConsoleFile.

Definition at line 124 of file ConsolePhysical.cc.

Member Data Documentation

◆ m_pTerminal

File* ConsolePhysicalFile::m_pTerminal
private

Definition at line 286 of file Console.h.

◆ m_TerminalNumber

size_t ConsolePhysicalFile::m_TerminalNumber
private

Definition at line 287 of file Console.h.

◆ m_TerminalReadinessObserver

SharedPointer<ReadinessObserver> ConsolePhysicalFile::m_TerminalReadinessObserver
private

Definition at line 288 of file Console.h.

◆ m_TerminalReadinessSubscription

ReadinessSubscription ConsolePhysicalFile::m_TerminalReadinessSubscription
private

Definition at line 289 of file Console.h.


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