The Pedigree Project 0.1
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Static Private Attributes | Friends | List of all members
X64SyscallManager Class Reference

#include <SyscallManager.h>

+ Inheritance diagram for X64SyscallManager:
+ Collaboration diagram for X64SyscallManager:

Public Member Functions

virtual bool registerSyscallHandler (Service_t Service, SyscallHandler *pHandler, Registration &registration, FastEntry entry=nullptr)
 
uintptr_t syscall (Service_t service, uintptr_t function, uintptr_t p1, uintptr_t p2, uintptr_t p3, uintptr_t p4, uintptr_t p5)
 
- Public Member Functions inherited from SyscallManager
EXPORTED_PUBLIC bool requestThreadExit ()
 
EXPORTED_PUBLIC bool requestProcessExit (int status)
 
EXPORTED_PUBLIC bool requestEventReturn ()
 
EXPORTED_PUBLIC bool requestEventStatePop ()
 
EXPORTED_PUBLIC bool requestStateRestore (const ProcessorState &state)
 
EXPORTED_PUBLIC bool requestUserJump (uintptr_t instructionPointer, uintptr_t stackPointer)
 
EXPORTED_PUBLIC bool requestReboot (Machine::ShutdownType type=Machine::ShutdownType::Restart)
 

Static Public Member Functions

static X64SyscallManager & instance ()
 
static void initialiseProcessor () INITIALISATION_ONLY
 
- Static Public Member Functions inherited from SyscallManager
static EXPORTED_PUBLIC SyscallManager & instance ()
 

Private Member Functions

 X64SyscallManager () INITIALISATION_ONLY
 
 X64SyscallManager (const X64SyscallManager &)
 
X64SyscallManager & operator= (const X64SyscallManager &)
 
virtual ~X64SyscallManager ()
 

Static Private Member Functions

static void syscall (SyscallState &syscallState) USED
 

Static Private Attributes

static X64SyscallManager m_Instance
 

Friends

class ProcessorBase
 

Additional Inherited Members

- Public Types inherited from SyscallManager
enum  PostSyscallActionKind {
  NoPostSyscallAction , TerminateCurrentThread , ExitCurrentProcess , ReturnFromEvent ,
  PopEventState , RestoreProcessorState , JumpToUserspace , RebootSystem
}
 
using FastEntry = uintptr_t(*)(SyscallHandler *, SyscallState &)
 
- Protected Member Functions inherited from SyscallManager
bool registerHandler (Service_t service, SyscallHandler *pHandler, Registration &registration, FastEntry entry=nullptr)
 
ALWAYS_INLINE uintptr_t dispatchHandler (const HandlerLease &lease, SyscallState &state) const
 
bool closeHandler (Registration &registration)
 
bool unregisterHandler (Registration &registration)
 
bool acquireHandler (Service_t service, HandlerLease &lease, PostSyscallAction &action)
 
 SyscallManager ()
 
virtual ~SyscallManager ()
 

Detailed Description

The syscall manager on x64 processors

Definition at line 36 of file kernel/core/processor/x64/SyscallManager.h.

Constructor & Destructor Documentation

◆ X64SyscallManager() [1/2]

X64SyscallManager::X64SyscallManager ( )
private

The constructor

Definition at line 455 of file x64/SyscallManager.cc.

◆ X64SyscallManager() [2/2]

X64SyscallManager::X64SyscallManager ( const X64SyscallManager &  )
private

Copy constructor

Note
NOT implemented

◆ ~X64SyscallManager()

X64SyscallManager::~X64SyscallManager ( )
privatevirtual

The destructor

Definition at line 456 of file x64/SyscallManager.cc.

Member Function Documentation

◆ initialiseProcessor()

void X64SyscallManager::initialiseProcessor ( )
static

Initialises this processors syscall handling

Note
This should only be called from Processor::initialise1() and Multiprocessor::applicationProcessorStartup()

Definition at line 439 of file x64/SyscallManager.cc.

References X86CommonProcessor::readMachineSpecificRegister(), and X86CommonProcessor::writeMachineSpecificRegister().

◆ instance()

static X64SyscallManager & X64SyscallManager::instance ( )
inlinestatic

Get the X64SyscallManager class instance

Returns
instance of the X64SyscallManager class

Definition at line 42 of file kernel/core/processor/x64/SyscallManager.h.

References m_Instance.

◆ operator=()

X64SyscallManager & X64SyscallManager::operator= ( const X64SyscallManager &  )
private

Assignment operator

Note
NOT implemented

◆ registerSyscallHandler()

bool X64SyscallManager::registerSyscallHandler ( Service_t  Service,
SyscallHandler *  pHandler,
Registration &  registration,
FastEntry  entry = nullptr 
)
virtual

Register a syscall handler

Parameters
[in]Servicethe service number you want to register
[in]pHandlerthe interrupt handler
[in]entryoptional nonvirtual implementation of the same syscall contract
Returns
true, if successfully registered, false otherwise

Implements SyscallManager.

Definition at line 138 of file x64/SyscallManager.cc.

◆ syscall() [1/2]

uintptr_t X64SyscallManager::syscall ( Service_t  service,
uintptr_t  function,
uintptr_t  p1,
uintptr_t  p2,
uintptr_t  p3,
uintptr_t  p4,
uintptr_t  p5 
)
virtual

Called to execute a syscall.

Implements SyscallManager.

Definition at line 421 of file x64/SyscallManager.cc.

◆ syscall() [2/2]

void X64SyscallManager::syscall ( SyscallState &  syscallState)
staticprivate

Friends And Related Symbol Documentation

◆ ProcessorBase

friend class ProcessorBase
friend

Definition at line 37 of file kernel/core/processor/x64/SyscallManager.h.

Member Data Documentation

◆ m_Instance

X64SyscallManager X64SyscallManager::m_Instance
staticprivate

The instance of the syscall manager

Definition at line 76 of file kernel/core/processor/x64/SyscallManager.h.

Referenced by instance(), and syscall().


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