Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Struct fcontext_t and related functions

struct stack_t
{
    void    *   sp;
    std::size_t size;
};

struct fcontext_t
{
    < platform specific >

    stack_t  fc_stack;
};

intptr_t jump_fcontext( fcontext_t * ofc, fcontext_t const* nfc, intptr_t vp, bool preserve_fpu = true);
fcontext_t * make_fcontext( void * sp, std::size_t size, void(* fn)(intptr_t) );
sp

Member:

Pointer to the beginning of the stack (depending of the architecture the stack grows downwards or upwards).

size

Member:

Size of the stack in bytes.

fc_stack

Member:

Tracks the memory for the context's stack.

intptr_t jump_fcontext( fcontext_t * ofc, fcontext_t * nfc, intptr_t p, bool preserve_fpu = true)

Effects:

Stores the current context data (stack pointer, instruction pointer, and CPU registers) to *ofc and restores the context data from *nfc, which implies jumping to *nfc's execution context. The intptr_t argument, p, is passed to the current context to be returned by the most recent call to jump_fcontext() in the same thread. The last argument controls if fpu registers have to be preserved.

Returns:

The third pointer argument passed to the most recent call to jump_fcontext(), if any.

fcontext_t * make_fcontext( void * sp, std::size_t size, void(*fn)(intptr_t))

Precondition:

Stack sp function pointer fn are valid (depending on the architecture sp points to the top or bottom of the stack) and size > 0.

Effects:

Creates an fcontext_t at the beginning of the stack and prepares the stack to execute the context-function fn.

Returns:

Returns a pointer to fcontext_t which is placed on the stack.


PrevUpHomeNext