FreeNOS
Public Member Functions
SingleCoreServer Class Reference

Implements a CoreServer for a single core only. More...

#include <SingleCoreServer.h>

Inheritance diagram for SingleCoreServer:
CoreServer ChannelServer< CoreServer, CoreMessage > AbstractFactory< CoreServer >

Public Member Functions

 SingleCoreServer ()
 Class constructor function. More...
 
virtual Result initialize ()
 Initialize the server. More...
 
virtual Core::Result bootCore (uint coreId, CoreInfo *info)
 Boot a processor core. More...
 
virtual Core::Result discoverCores ()
 Discover processor cores. More...
 
virtual void waitIPI () const
 Wait for Inter-Processor-Interrupt. More...
 
virtual Core::Result sendIPI (uint coreId)
 Send Inter-Processor-Interrupt. More...
 
- Public Member Functions inherited from CoreServer
 CoreServer ()
 Class constructor function. More...
 
Core::Result test ()
 Run a ping-pong test. More...
 
int runCore ()
 Routine for the slave processor core. More...
 
- Public Member Functions inherited from ChannelServer< CoreServer, CoreMessage >
 ChannelServer (CoreServer *inst)
 Constructor function. More...
 
virtual ~ChannelServer ()
 Destructor function. More...
 
int run ()
 Enters an infinite loop, serving incoming requests. More...
 
void setTimeout (const uint msec)
 Set a sleep timeout. More...
 

Additional Inherited Members

- Public Types inherited from ChannelServer< CoreServer, CoreMessage >
enum  Result
 Result codes. More...
 
- Static Public Member Functions inherited from AbstractFactory< CoreServer >
static CoreServercreate ()
 Abstract function to create an instance of T. More...
 
- Protected Types inherited from ChannelServer< CoreServer, CoreMessage >
typedef void(CoreServer ::* IPCHandlerFunction) (CoreMessage *)
 Member function pointer inside Base, to handle IPC messages. More...
 
typedef void(CoreServer ::* IRQHandlerFunction) (Size)
 Member function pointer inside Base, to handle interrupts. More...
 
- Protected Member Functions inherited from ChannelServer< CoreServer, CoreMessage >
void addIPCHandler (const Size slot, IPCHandlerFunction h, const bool sendReply=true)
 Register a new IPC message action handler. More...
 
void addIRQHandler (const Size slot, IRQHandlerFunction h)
 Register a new IRQ message vector handler. More...
 
virtual void timeout ()
 Called when sleep timeout is reached. More...
 
virtual bool retryRequests ()
 Retry any pending requests. More...
 
virtual void onProcessTerminated (const ProcessID pid)
 Called whenever another Process is terminated. More...
 
void retryAllRequests ()
 Keep retrying requests until all served. More...
 
- Protected Attributes inherited from CoreServer
CoreManagerm_cores
 
- Protected Attributes inherited from ChannelServer< CoreServer, CoreMessage >
CoreServerm_instance
 Server object instance. More...
 
ChannelClientm_client
 Client for sending replies. More...
 
ChannelRegistrym_registry
 Contains registered channels. More...
 
MemoryChannel m_kernelEvent
 Kernel event channel. More...
 
Index< MessageHandler< IPCHandlerFunction >, MaximumHandlerCountm_ipcHandlers
 IPC handler functions. More...
 
Index< MessageHandler< IRQHandlerFunction >, MaximumHandlerCountm_irqHandlers
 IRQ handler functions. More...
 
ProcessID m_self
 ProcessID of ourselves. More...
 
Timer::Info m_time
 System timer value. More...
 
Timer::Info m_expiry
 System timer expiration value. More...
 

Detailed Description

Implements a CoreServer for a single core only.

Definition at line 35 of file SingleCoreServer.h.

Constructor & Destructor Documentation

◆ SingleCoreServer()

SingleCoreServer::SingleCoreServer ( )

Class constructor function.

Definition at line 29 of file SingleCoreServer.cpp.

Member Function Documentation

◆ bootCore()

Core::Result SingleCoreServer::bootCore ( uint  coreId,
CoreInfo info 
)
virtual

Boot a processor core.

Parameters
coreIdCore identifier number
infoCoreInfo pointer containing specific core information
Returns
Result code

Implements CoreServer.

Definition at line 39 of file SingleCoreServer.cpp.

References Core::BootError, coreId, and Core::Success.

◆ discoverCores()

Core::Result SingleCoreServer::discoverCores ( )
virtual

Discover processor cores.

Returns
Result code

Implements CoreServer.

Definition at line 44 of file SingleCoreServer.cpp.

References Core::Success.

◆ initialize()

SingleCoreServer::Result SingleCoreServer::initialize ( )
virtual

Initialize the server.

Returns
Result code

Reimplemented from CoreServer.

Definition at line 34 of file SingleCoreServer.cpp.

References ChannelServer< CoreServer, CoreMessage >::Success.

◆ sendIPI()

Core::Result SingleCoreServer::sendIPI ( uint  coreId)
virtual

Send Inter-Processor-Interrupt.

Parameters
coreIdCore identifier number
Returns
Result code

Implements CoreServer.

Definition at line 53 of file SingleCoreServer.cpp.

References Core::IOError.

◆ waitIPI()

void SingleCoreServer::waitIPI ( ) const
virtual

Wait for Inter-Processor-Interrupt.

Implements CoreServer.

Definition at line 49 of file SingleCoreServer.cpp.


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