CoreLinux++
0.4.32
|
ThreadContext describes the context in which the thread operates. More...
#include <ThreadContext.hpp>
Public Member Functions | |
ThreadContext (CallerFunctionPtr) throw ( Assertion ) | |
Default constructor only requires a caller entry point function. More... | |
ThreadContext (CallerFunctionPtr, Size) throw ( Assertion ) | |
Constructor which allows the caller to define the stack. More... | |
ThreadContext (ThreadContextCref) throw ( Assertion ) | |
Copy constructor takes information from the context argument. More... | |
virtual | ~ThreadContext (void) |
Virtual destructor. | |
ThreadContextRef | operator= (ThreadContextCref) throw ( Assertion ) |
Assignment operator changes the context. More... | |
bool | operator== (ThreadContextCref) const |
Equality operator compares contexts. More... | |
bool | operator== (ThreadIdentifierCref) const |
Equality matches the thread identifiers. More... | |
bool | operator== (CallerFunctionPtr) const |
Equality operator matches the callers function. More... | |
operator ThreadIdentifierCref (void) const | |
Coerces ThreadContext to ThreadIdentifier. More... | |
const ThreadState & | getState (void) const |
Get the state of the thread as reflected in its context. More... | |
Size | getStackSize (void) const |
Get the size of the stack as defined by the context constructor. More... | |
Int | getShareMask (void) const |
Get the share mask for the thread which determines VM, FILES, FILESYSTEM, SIGNAL shares. More... | |
Int | getReturnCode (void) const |
Return the code returned by the callers function. More... | |
ThreadIdentifierCref | getIdentifier (void) const |
Get the identifier for the thread. More... | |
virtual ThreadFrameFunctionPtr | getFramePointer (void) |
Get the thread frame function pointer. More... | |
BytePtr | getStack (void) |
Get the stack pointer. | |
BytePtr * | getStackTop (void) |
Get the top of stack pointer. | |
void | setShareMask (Int) |
Change the sharing mask for the thread. More... | |
void | setFrameFunction (ThreadFrameFunctionPtr) |
Allows the caller to substitute the thread frame entry point. More... | |
void | setContextFunctions (ThreadContextCreatePtr, ThreadContextDestroyPtr) |
Allows the caller to substitute the routines which create and destroy the managed ThreadContext object. More... | |
void | setStackFunctions (ThreadStackCreatePtr, ThreadStackDestroyPtr) |
Allows the caller to substitute the routines which create and destroy the managed ThreadContext stack object. More... | |
void | setReturnCode (Int) |
Set the return code for the thread. More... | |
void | setThreadState (ThreadState) |
Set the state for the thread. More... | |
ThreadContextPtr | createContext (void) throw ( ThreadException ) |
Create a instance of ourself, we also invoke the create stack method so the instance is ready to be used to run a thread. More... | |
void | destroyContext (ThreadContextPtr) throw ( Assertion ) |
Destroys the context instance. More... | |
![]() | |
Synchronized (void) | |
Default constructor. | |
Synchronized (SynchronizedCref) | |
Copy constructor. | |
virtual | ~Synchronized (void) |
Virtual Destructor. | |
SynchronizedRef | operator= (SynchronizedCref) |
Assignment operator. | |
bool | operator== (SynchronizedCref) const |
Equality operator. | |
Static Public Member Functions | |
static Int | cloneFrameFunction (ThreadContextPtr) |
The definitive thread frame entry point. More... | |
Protected Member Functions | |
ThreadContext (void) throw ( Assertion ) | |
Default constructor throws NEVER_GET_HERE. | |
ThreadContextRef | operator= (ThreadIdentifier) |
Assignment operator for designating thread identity. More... | |
CallerFunctionPtr | getCallerFunction (void) |
Return the function pointer of the callers thread routine. More... | |
![]() | |
Guard | access (void) const throw (SemaphoreException) |
Access returns a instance of Guard which is block scoped to the caller. More... | |
Additional Inherited Members | |
![]() | |
typedef Guard * | GuardPtr |
typedef const Guard * | GuardCptr |
typedef Guard & | GuardRef |
typedef const Guard & | GuardCref |
ThreadContext describes the context in which the thread operates.
Included are stack resource, shared address space flags, factory methods, and state indicators.
corelinux::ThreadContext::ThreadContext | ( | CallerFunctionPtr | aFuncPtr | ) | |
throw | ( | Assertion | |||
) |
Default constructor only requires a caller entry point function.
Defaults in effect are 8k stack which is allocated by the system, and all resources of the caller are shared by the new thread.
CallerFunction | pointer to the callers thread routine. |
Assertion | if pointer is null |
References corelinux::THREAD_WAITING_TO_START.
corelinux::ThreadContext::ThreadContext | ( | CallerFunctionPtr | aFuncPtr, |
Size | aStackSize | ||
) | |||
throw | ( | Assertion | |
) |
Constructor which allows the caller to define the stack.
All resources of the caller are shared by the new thread.
CallerFunction | pointer to the callers thread routine. |
Size | Request size for stack in number of bytes. |
Assertion | if routine pointer is null or callers stack size is negative. |
References corelinux::THREAD_WAITING_TO_START.
corelinux::ThreadContext::ThreadContext | ( | ThreadContextCref | aContext | ) | |
throw | ( | Assertion | |||
) |
Copy constructor takes information from the context argument.
ThreadContext | reference to existing context |
ThreadNotWaitingException | if the argument context is not in a THREAD_WAITING_TO_START state. |
References corelinux::THREAD_WAITING_TO_START.
|
static |
The definitive thread frame entry point.
This is the address that "clone" gets.
ThreadContext | pointer to a thread context |
References getFramePointer(), getReturnCode(), corelinux::Thread::getThreadIdentifier(), setReturnCode(), setThreadState(), corelinux::THREAD_EXCEPTION, corelinux::THREAD_NORMAL_EXIT, and corelinux::THREAD_RUNNING.
Referenced by corelinux::Thread::startThread().
ThreadContextPtr corelinux::ThreadContext::createContext | ( | void | ) | ||
throw | ( | ThreadException | |||
) |
Create a instance of ourself, we also invoke the create stack method so the instance is ready to be used to run a thread.
ThreadAllocationException | either for Stack or Context |
References destroyContext().
Referenced by corelinux::Thread::startThread().
void corelinux::ThreadContext::destroyContext | ( | ThreadContextPtr | aContext | ) | |
throw | ( | Assertion | |||
) |
Destroys the context instance.
A check is made to insure it is not a suicide.
ThreadContext | pointer to context to destroy |
Assertion | if self referenced |
Referenced by createContext(), and corelinux::Thread::startThread().
|
protected |
Return the function pointer of the callers thread routine.
|
virtual |
Get the thread frame function pointer.
Referenced by cloneFrameFunction().
ThreadIdentifierCref corelinux::ThreadContext::getIdentifier | ( | void | ) | const |
Get the identifier for the thread.
This is only valid once a thread is started
Referenced by corelinux::Thread::getThreadPriority(), and corelinux::Thread::setThreadPriority().
Int corelinux::ThreadContext::getReturnCode | ( | void | ) | const |
Return the code returned by the callers function.
This is only valid if the thread ended normally
Referenced by cloneFrameFunction().
Int corelinux::ThreadContext::getShareMask | ( | void | ) | const |
Get the share mask for the thread which determines VM, FILES, FILESYSTEM, SIGNAL shares.
Referenced by corelinux::Thread::startThread().
Size corelinux::ThreadContext::getStackSize | ( | void | ) | const |
Get the size of the stack as defined by the context constructor.
const ThreadState & corelinux::ThreadContext::getState | ( | void | ) | const |
Get the state of the thread as reflected in its context.
Referenced by corelinux::Thread::destroyThreadContext().
corelinux::ThreadContext::operator ThreadIdentifierCref | ( | void | ) | const |
Coerces ThreadContext to ThreadIdentifier.
ThreadContextRef corelinux::ThreadContext::operator= | ( | ThreadContextCref | aContext | ) | |
throw | ( | Assertion | |||
) |
Assignment operator changes the context.
ThreadContext | reference to existing context |
ThreadNotWaitingException | if the argument context is not in a THREAD_WAITING_TO_START state. |
References corelinux::THREAD_WAITING_TO_START.
|
protected |
Assignment operator for designating thread identity.
ThreadIdentifier | as retrieved from the OS |
bool corelinux::ThreadContext::operator== | ( | ThreadContextCref | aContext | ) | const |
Equality operator compares contexts.
ThreadContext | reference to existing context |
bool corelinux::ThreadContext::operator== | ( | ThreadIdentifierCref | aIdentifier | ) | const |
Equality matches the thread identifiers.
ThreadIdentifier | reference to identifier |
bool corelinux::ThreadContext::operator== | ( | CallerFunctionPtr | aFunction | ) | const |
Equality operator matches the callers function.
CallerFunctionPtr | a function reference |
void corelinux::ThreadContext::setContextFunctions | ( | ThreadContextCreatePtr | aCreate, |
ThreadContextDestroyPtr | aDestroy | ||
) |
Allows the caller to substitute the routines which create and destroy the managed ThreadContext object.
The call to create the object comes in at the startThread prior to stack allocation, the call to destroy the object comes from startThread exception and error handling, or when requested by the caller.
ThreadContextCreatePtr | the function pointer to set, If this argument is NULLPTR the default handlers are set for create and destroy. |
ThreadContextDestroyPtr | to the function pointer to set. If this argument is NULLPTR the default handlers are set for create and destroy. |
void corelinux::ThreadContext::setFrameFunction | ( | ThreadFrameFunctionPtr | aFrame | ) |
Allows the caller to substitute the thread frame entry point.
ThreadFrameFunctionPtr | points to the new frame function that is called when starting a thread. If this argument is NULLPTR the default handler is set. |
void corelinux::ThreadContext::setReturnCode | ( | Int | aReturnCode | ) |
Set the return code for the thread.
Int | return code value |
Referenced by cloneFrameFunction(), and corelinux::Thread::startThread().
void corelinux::ThreadContext::setShareMask | ( | Int | aMask | ) |
Change the sharing mask for the thread.
This is only effective when set prior to starting the thread.
Int | mask of values for thread resource sharing and signal disposition |
void corelinux::ThreadContext::setStackFunctions | ( | ThreadStackCreatePtr | aCreate, |
ThreadStackDestroyPtr | aDestroy | ||
) |
Allows the caller to substitute the routines which create and destroy the managed ThreadContext stack object.
The call to create the stack object comes in at the startThread prior to threading, the call to destroy the object comes from startThread exception and error handling, or when the destruction of the ThreadContext is imanent.
ThreadStackCreatePtr | pointer to set. If this argument is NULLPTR the default handlers are set for create and destroy. |
ThreadStackDestroyPtr | the function pointer to set. If this argument is NULLPTR the default handlers are set for create and destroy. |
void corelinux::ThreadContext::setThreadState | ( | ThreadState | aState | ) |
Set the state for the thread.
ThreadState | the threads new state |
Referenced by cloneFrameFunction(), and corelinux::Thread::startThread().