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

Classes

struct  VirtualTerminal
 

Public Types

enum  SwitchPermission { Allowed , Disallowed }
 
enum  SystemMode { Text , Graphics }
 

Public Member Functions

 VirtualTerminalManager (DevFsDirectory *parentDir)
 
bool initialise ()
 
bool activate (size_t n)
 Starts the process of activating the given tty.
 
bool reportPermission (size_t n, SwitchPermission perm)
 
bool acknowledgeAcquire (size_t n)
 
size_t openInactive ()
 
void lockSwitching (bool locked)
 
size_t getCurrentTerminalNumber () const
 
TextIO * getCurrentTerminal () const
 
File * getCurrentTerminalFile () const
 
struct vt_mode getTerminalMode (size_t n) const
 
bool setTerminalMode (size_t n, struct vt_mode mode)
 
bool isTerminal (size_t n) const
 
struct vt_stat getState () const
 
void setSystemMode (size_t n, SystemMode mode)
 
SystemMode getSystemMode (size_t n) const
 
void setInputMode (size_t n, TextIO::InputMode newMode)
 
TextIO::InputMode getInputMode (size_t n) const
 

Private Member Functions

bool sendSignal (size_t n, bool acq)
 
void switchTerminal (size_t n)
 

Private Attributes

VirtualTerminal m_Terminals [MAX_VT]
 
TextIO * m_pTty
 
TextIO * m_pTtys [MAX_VT]
 
File * m_pTtyFiles [MAX_VT]
 
struct vt_mode m_Modes [MAX_VT]
 
size_t m_CurrentTty
 
size_t m_WantedTty
 
size_t m_NumTtys
 
DevFsDirectory * m_ParentDir
 
bool m_bSwitchingLocked
 
Mutex m_Lock
 

Detailed Description

Definition at line 33 of file VirtualTerminal.h.

Member Enumeration Documentation

◆ SwitchPermission

enum VirtualTerminalManager::SwitchPermission

Definition at line 38 of file VirtualTerminal.h.

◆ SystemMode

enum VirtualTerminalManager::SystemMode

Definition at line 40 of file VirtualTerminal.h.

Constructor & Destructor Documentation

◆ VirtualTerminalManager()

VirtualTerminalManager::VirtualTerminalManager ( DevFsDirectory *  parentDir)

Definition at line 33 of file VirtualTerminal.cc.

◆ ~VirtualTerminalManager()

VirtualTerminalManager::~VirtualTerminalManager ( )
virtual

Definition at line 54 of file VirtualTerminal.cc.

Member Function Documentation

◆ acknowledgeAcquire()

bool VirtualTerminalManager::acknowledgeAcquire ( size_t  n)

Definition at line 194 of file VirtualTerminal.cc.

◆ activate()

bool VirtualTerminalManager::activate ( size_t  n)

Starts the process of activating the given tty.

If we are currently using a VT with VT_AUTO mode, this just directly switches over. However, if the current VT is in VT_PROCESS mode, this tracks the pending switchover and then signals the current VT. That owning process will respond with an ioctl that leads to a call to reportPermission() that may or may not block the transition.

Definition at line 149 of file VirtualTerminal.cc.

◆ getCurrentTerminal()

TextIO * VirtualTerminalManager::getCurrentTerminal ( ) const

Definition at line 250 of file VirtualTerminal.cc.

◆ getCurrentTerminalFile()

File * VirtualTerminalManager::getCurrentTerminalFile ( ) const

Definition at line 254 of file VirtualTerminal.cc.

◆ getCurrentTerminalNumber()

size_t VirtualTerminalManager::getCurrentTerminalNumber ( ) const

Definition at line 246 of file VirtualTerminal.cc.

◆ getInputMode()

TextIO::InputMode VirtualTerminalManager::getInputMode ( size_t  n) const

Definition at line 334 of file VirtualTerminal.cc.

◆ getState()

struct vt_stat VirtualTerminalManager::getState ( ) const

Definition at line 284 of file VirtualTerminal.cc.

◆ getSystemMode()

VirtualTerminalManager::SystemMode VirtualTerminalManager::getSystemMode ( size_t  n) const

Definition at line 320 of file VirtualTerminal.cc.

◆ getTerminalMode()

struct vt_mode VirtualTerminalManager::getTerminalMode ( size_t  n) const

Definition at line 258 of file VirtualTerminal.cc.

◆ initialise()

bool VirtualTerminalManager::initialise ( )

Definition at line 73 of file VirtualTerminal.cc.

◆ isTerminal()

bool VirtualTerminalManager::isTerminal ( size_t  n) const

Definition at line 125 of file VirtualTerminal.cc.

◆ lockSwitching()

void VirtualTerminalManager::lockSwitching ( bool  locked)

Lock switching altogether.

Definition at line 241 of file VirtualTerminal.cc.

◆ openInactive()

size_t VirtualTerminalManager::openInactive ( )

Find an inactive VT and open it, returning its number.

Definition at line 206 of file VirtualTerminal.cc.

References File::getName(), TextIO::initialise(), and TextIO::writeStr().

◆ reportPermission()

bool VirtualTerminalManager::reportPermission ( size_t  n,
SwitchPermission  perm 
)

Report permission to switch.

Definition at line 176 of file VirtualTerminal.cc.

References ProcessorBase::information().

◆ sendSignal()

bool VirtualTerminalManager::sendSignal ( size_t  n,
bool  acq 
)
private

Definition at line 343 of file VirtualTerminal.cc.

◆ setInputMode()

void VirtualTerminalManager::setInputMode ( size_t  n,
TextIO::InputMode  newMode 
)

Definition at line 325 of file VirtualTerminal.cc.

◆ setSystemMode()

void VirtualTerminalManager::setSystemMode ( size_t  n,
SystemMode  mode 
)

Definition at line 304 of file VirtualTerminal.cc.

◆ setTerminalMode()

bool VirtualTerminalManager::setTerminalMode ( size_t  n,
struct vt_mode  mode 
)

Definition at line 263 of file VirtualTerminal.cc.

◆ switchTerminal()

void VirtualTerminalManager::switchTerminal ( size_t  n)
private

Definition at line 129 of file VirtualTerminal.cc.

Member Data Documentation

◆ m_bSwitchingLocked

bool VirtualTerminalManager::m_bSwitchingLocked
private

Definition at line 111 of file VirtualTerminal.h.

◆ m_CurrentTty

size_t VirtualTerminalManager::m_CurrentTty
private

Definition at line 105 of file VirtualTerminal.h.

◆ m_Lock

Mutex VirtualTerminalManager::m_Lock
mutableprivate

Definition at line 113 of file VirtualTerminal.h.

◆ m_Modes

struct vt_mode VirtualTerminalManager::m_Modes[MAX_VT]
private

Definition at line 103 of file VirtualTerminal.h.

◆ m_NumTtys

size_t VirtualTerminalManager::m_NumTtys
private

Definition at line 107 of file VirtualTerminal.h.

◆ m_ParentDir

DevFsDirectory* VirtualTerminalManager::m_ParentDir
private

Definition at line 109 of file VirtualTerminal.h.

◆ m_pTty

TextIO* VirtualTerminalManager::m_pTty
private

Definition at line 99 of file VirtualTerminal.h.

◆ m_pTtyFiles

File* VirtualTerminalManager::m_pTtyFiles[MAX_VT]
private

Definition at line 102 of file VirtualTerminal.h.

◆ m_pTtys

TextIO* VirtualTerminalManager::m_pTtys[MAX_VT]
private

Definition at line 101 of file VirtualTerminal.h.

◆ m_Terminals

VirtualTerminal VirtualTerminalManager::m_Terminals[MAX_VT]
private

Definition at line 97 of file VirtualTerminal.h.

◆ m_WantedTty

size_t VirtualTerminalManager::m_WantedTty
private

Definition at line 106 of file VirtualTerminal.h.


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