Go to the documentation of this file.
18 #ifndef __SERVER_CORE_CORESERVER_H
19 #define __SERVER_CORE_CORESERVER_H
21 #include <FreeNOS/User.h>
113 virtual void waitIPI()
const = 0;
virtual Core::Result bootCore(uint coreId, CoreInfo *info)=0
Boot a processor core.
void createProcess(CoreMessage *msg)
Create a process on the current processor core.
MemoryChannel * m_fromMaster
Core::Result unloadKernel()
Unload operating system kernel program.
Index< CoreInfo, MaxCores > * m_coreInfo
Message format for communication with the CoreServer.
Core::Result prepareCoreInfo()
Prepare the CoreInfo array.
Memory::Range m_kernelImage
static const Size MaxCores
Maximum number of cores currently supported.
virtual Result initialize()
Initialize the server.
Core::Result loadKernel()
Load operating system kernel program.
Core::Result sendToSlave(uint coreId, CoreMessage *msg)
Send message to slave.
int runCore()
Routine for the slave processor core.
unsigned long Address
A memory address.
Abstract Factory pattern providing a creation function declaration.
unsigned int uint
Unsigned integer number.
Index< MemoryChannel, MaxCores > * m_toSlave
virtual void waitIPI() const =0
Wait for Inter-Processor-Interrupt.
Represents a single Core in a Central Processing Unit (CPU).
ExecutableFormat * m_kernel
CoreServer()
Class constructor function.
Core::Result bootAll()
Boot all processor cores.
virtual Core::Result discoverCores()=0
Discover processor cores.
Core::Result clearPages(Address addr, Size size)
Clear memory pages with zeroes.
unsigned int Size
Any sane size indicator cannot go negative.
void getCoreCount(CoreMessage *msg)
Get and fill the number of processor cores.
Unidirectional point-to-point channel using shared memory.
Core::Result setupChannels()
Setup communication channels between CoreServers.
Per-Core information structure.
Result
Result code for Actions.
Index< MemoryChannel, MaxCores > * m_fromSlave
Template class which serves incoming messages from Channels using MessageHandlers.
Core::Result test()
Run a ping-pong test.
Core::Result prepareCore(uint coreId, CoreInfo *info, ExecutableFormat::Region *regions)
Prepare processor core for booting.
Core::Result sendToMaster(CoreMessage *msg)
Send message to master.
static const Size MaxMessageRetry
Number of times to busy wait on receiving a message.
static const char * kernelPath
The default kernel for starting new cores.
virtual Core::Result sendIPI(uint coreId)=0
Send Inter-Processor-Interrupt.
MemoryChannel * m_toMaster
Core::Result receiveFromSlave(uint coreId, CoreMessage *msg)
Receive message from slave.
Core::Result receiveFromMaster(CoreMessage *msg)
Receive message from master.
ExecutableFormat::Region m_regions[16]