Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Examples  

corelinux::ThreadContext Class Reference

ThreadContext describes the context in which the thread operates. More...

#include <ThreadContext.hpp>

Inheritance diagram for corelinux::ThreadContext

Inheritance graph
[legend]
Collaboration diagram for corelinux::ThreadContext:

Collaboration graph
[legend]
List of all members.

Public Methods

 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 for designating thread identity. More...

bool operator== ( ThreadContextCref ) const
 Equality matches the thread identifiers. 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 ThreadStategetState ( 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...


Static Public Methods

Int cloneFrameFunction ( ThreadContextPtr )
 The definitive thread frame entry point. More...


Protected Methods

 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...


Detailed Description

ThreadContext describes the context in which the thread operates.

Included are stack resource, shared address space flags, factory methods, and state indicators.


Constructor & Destructor Documentation

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.

Parameters:
CallerFunction   pointer to the callers thread routine.
Exceptions:
Assertion   if pointer is null

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.

Parameters:
CallerFunction   pointer to the callers thread routine.
Size   Request size for stack in number of bytes.
Exceptions:
Assertion   if routine pointer is null or callers stack size is negative.

corelinux::ThreadContext::ThreadContext ( ThreadContextCref aContext ) throw ( Assertion )
 

Copy constructor takes information from the context argument.

Parameters:
ThreadContext   reference to existing context
Exceptions:
ThreadNotWaitingException   if the argument context is not in a THREAD_WAITING_TO_START state.


Member Function Documentation

Int corelinux::ThreadContext::cloneFrameFunction ( ThreadContextPtr aPtr ) [static]
 

The definitive thread frame entry point.

This is the address that "clone" gets.

Parameters:
ThreadContext   pointer to a thread context
Returns:
Int return code

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.

Returns:
ThreadContext pointer to object.
Exceptions:
ThreadAllocationException   either for Stack or Context

void corelinux::ThreadContext::destroyContext ( ThreadContextPtr aContext ) throw ( Assertion )
 

Destroys the context instance.

A check is made to insure it is not a suicide.

Parameters:
ThreadContext   pointer to context to destroy
Exceptions:
Assertion   if self referenced

CallerFunctionPtr corelinux::ThreadContext::getCallerFunction ( void ) [protected]
 

Return the function pointer of the callers thread routine.

Returns:
CallerFunctionPtr

ThreadFrameFunctionPtr corelinux::ThreadContext::getFramePointer ( void ) [virtual]
 

Get the thread frame function pointer.

Returns:
ThreadFrameFunctionPtr pointer to instance or default thread frame

ThreadIdentifierCref corelinux::ThreadContext::getIdentifier ( void ) const
 

Get the identifier for the thread.

This is only valid once a thread is started

Returns:
ThreadIdentifier the id

Int corelinux::ThreadContext::getReturnCode ( void ) const
 

Return the code returned by the callers function.

This is only valid if the thread ended normally

Returns:
Int return code
See also:
ThreadState

Int corelinux::ThreadContext::getShareMask ( void ) const
 

Get the share mask for the thread which determines VM, FILES, FILESYSTEM, SIGNAL shares.

Returns:
Int

Size corelinux::ThreadContext::getStackSize ( void ) const
 

Get the size of the stack as defined by the context constructor.

Returns:
Size in bytes

const ThreadState & corelinux::ThreadContext::getState ( void ) const
 

Get the state of the thread as reflected in its context.

Returns:
ThreadState

corelinux::ThreadContext::operator ThreadIdentifierCref ( void ) const
 

Coerces ThreadContext to ThreadIdentifier.

Returns:
ThreadIdentifier reference

ThreadContextRef corelinux::ThreadContext::operator= ( ThreadIdentifier aIdentifier ) [protected]
 

Assignment operator for designating thread identity.

Parameters:
ThreadIdentifier   as retrieved from the OS
Returns:
ThreadContext reference to self

ThreadContextRef corelinux::ThreadContext::operator= ( ThreadContextCref aContext ) throw ( Assertion )
 

Assignment operator for designating thread identity.

Parameters:
ThreadContext   reference to existing context
Returns:
ThreadContext reference
Exceptions:
ThreadNotWaitingException   if the argument context is not in a THREAD_WAITING_TO_START state.

bool corelinux::ThreadContext::operator== ( CallerFunctionPtr aFunction ) const
 

Equality operator matches the callers function.

Parameters:
CallerFunctionPtr   a function reference
Returns:
bool true if same.

bool corelinux::ThreadContext::operator== ( ThreadIdentifierCref aIdentifier ) const
 

Equality matches the thread identifiers.

Parameters:
ThreadIdentifier   reference to identifier
Returns:
bool true if same

bool corelinux::ThreadContext::operator== ( ThreadContextCref aContext ) const
 

Equality matches the thread identifiers.

Parameters:
ThreadContext   reference to existing context
Returns:
bool true if same

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.

Parameters:
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.

Parameters:
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.

Parameters:
Int   return code value

void corelinux::ThreadContext::setShareMask ( Int aMask )
 

Change the sharing mask for the thread.

This is only effective when set prior to starting the thread.

Parameters:
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.

Parameters:
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.

Parameters:
ThreadState   the threads new state


The documentation for this class was generated from the following files:
This is the CoreLinux++ reference manual
Provided by The CoreLinux Consortium