Zth (libzth)
zth::impl::ContextArch< Impl > Class Template Reference

#include <arch_arm.h>

Inheritance diagram for zth::impl::ContextArch< Impl >:
zth::impl::ContextBase< Impl > zth::impl::ContextBase< Impl >

Public Types

typedef ContextBase< Impl > base
 
typedef ContextBase< Impl > base
 

Public Member Functions

size_t calcStackSize (size_t size) noexcept
 
void stackAlign (Stack &stack) noexcept
 
Impl & impl () noexcept
 Return Impl this. More...
 
Impl const & impl () const noexcept
 Return Impl this. More...
 
- Public Member Functions inherited from zth::impl::ContextBase< Impl >
ContextAttrattr () noexcept
 Return the context attributes, requested by the user. More...
 
ContextAttr const & attr () const noexcept
 Return the context attributes, requested by the user. More...
 
int create () noexcept
 Create context. More...
 
void destroy () noexcept
 Destroy and cleanup context. More...
 
int initStack (Stack &stack, Stack &usable) noexcept
 Allocate and initialize stack. More...
 
void deinitStack (Stack &stack) noexcept
 Deinit and free stack. More...
 
Stack const & stack () const noexcept
 Return the stack address. More...
 
Stack const & stackUsable () const noexcept
 Return the start of the actual usable stack. More...
 
size_t calcStackSize (size_t size) noexcept
 Compute the stack size, given the requested user size and current configuration. More...
 
void * allocStack (size_t size) noexcept
 Allocate requested size of stack memory. More...
 
void deallocStack (Stack &stack) noexcept
 Frees the previously allocated stack. More...
 
void stackAlign (Stack &stack) noexcept
 Compute and modify the stack alignment and size, within the allocated space. More...
 
void valgrindRegister () noexcept
 Register the current stack to valgrind. More...
 
void valgrindDeregister () noexcept
 Deregister the current stack from valgrind. More...
 
int stackGuardInit () noexcept
 Initialize guards around the stack memory. More...
 
void stackGuardDeinit () noexcept
 Release the guards around the memory. More...
 
void stackGuard () noexcept
 Configure the guard for the current fiber. More...
 
void stackGuard (Stack const &stack) noexcept
 Configure the guard for the given stack. More...
 
void * stackGuard (void *p) noexcept
 Configure the guard for the address. More...
 
void context_switch (Context &to) noexcept
 Perform a context switch. More...
 
void context_push_regs () noexcept
 Pre-sjlj context saving. More...
 
void context_pop_regs () noexcept
 Post-sjlj context restoring. More...
 
void context_prepare_jmp (Impl &to, jmp_buf &env) noexcept
 Pre-sjlj jump. More...
 
void die () noexcept
 Flag fiber as died after it returned from context_entry(). More...
 
bool alive () const noexcept
 Check if fiber is still running. More...
 
void * stack_switch (void *stack, size_t size, void *(*f)(void *) noexcept, void *arg) noexcept
 

Static Public Member Functions

static size_t pageSize () noexcept
 
static void * sp () noexcept
 
- Static Public Member Functions inherited from zth::impl::ContextBase< Impl >
static int init () noexcept
 One-time system initialization. More...
 
static void deinit () noexcept
 Final system cleanup. More...
 
static size_t pageSize () noexcept
 Get system's page size. More...
 
static bool stackGrowsDown (void const *reference)
 Checks if the stack grows down or up. More...
 
static void ** sp (Stack const &stack) noexcept
 Get the initial stack pointer for the given stack. More...
 
static void stack_push (void **&sp, void *p) noexcept
 Push data into the stack. More...
 
static void set_sp (jmp_buf &env, void **sp) noexcept
 Set the stack pointer in a jmp_buf. More...
 
static void set_pc (jmp_buf &env, void *sp) noexcept
 Set the program counter in a jmp_buf. More...
 
static void context_trampoline_from_jmp_buf ()
 Entry point to jump to from a (sig)jmp_buf. More...
 

Protected Member Functions

constexpr ContextArch (ContextAttr const &attr) noexcept
 
constexpr ContextArch (ContextAttr const &attr) noexcept
 
- Protected Member Functions inherited from zth::impl::ContextBase< Impl >
constexpr ContextBase (ContextAttr const &attr) noexcept
 
 ~ContextBase ()
 Dtor. More...
 
Impl & impl () noexcept
 Return Impl this. More...
 
Impl const & impl () const noexcept
 Return Impl this. More...
 

Detailed Description

template<typename Impl>
class zth::impl::ContextArch< Impl >

Definition at line 41 of file arch_arm.h.

Member Typedef Documentation

◆ base [1/2]

template<typename Impl >
typedef ContextBase<Impl> zth::impl::ContextArch< Impl >::base

Definition at line 43 of file arch_arm.h.

◆ base [2/2]

template<typename Impl >
typedef ContextBase<Impl> zth::impl::ContextArch< Impl >::base

Definition at line 24 of file arch_generic.h.

Constructor & Destructor Documentation

◆ ContextArch() [1/2]

template<typename Impl >
constexpr zth::impl::ContextArch< Impl >::ContextArch ( ContextAttr const &  attr)
inlineexplicitconstexprprotectednoexcept

Definition at line 48 of file arch_arm.h.

◆ ContextArch() [2/2]

template<typename Impl >
constexpr zth::impl::ContextArch< Impl >::ContextArch ( ContextAttr const &  attr)
inlineexplicitconstexprprotectednoexcept

Definition at line 27 of file arch_generic.h.

Member Function Documentation

◆ calcStackSize()

template<typename Impl >
size_t zth::impl::ContextArch< Impl >::calcStackSize ( size_t  size)
inlinenoexcept

Definition at line 65 of file arch_arm.h.

◆ impl() [1/2]

template<typename Impl >
Impl const& zth::impl::ContextBase< Impl >::impl
inlinenoexcept

Return Impl this.

Definition at line 101 of file context.h.

◆ impl() [2/2]

template<typename Impl >
Impl& zth::impl::ContextBase< Impl >::impl
inlinenoexcept

Return Impl this.

Definition at line 93 of file context.h.

◆ pageSize()

template<typename Impl >
static size_t zth::impl::ContextArch< Impl >::pageSize ( )
inlinestaticnoexcept

Definition at line 56 of file arch_arm.h.

◆ sp()

template<typename Impl >
static void* zth::impl::ContextArch< Impl >::sp ( )
inlinestaticnoexcept

Definition at line 116 of file arch_arm.h.

◆ stackAlign()

template<typename Impl >
void zth::impl::ContextArch< Impl >::stackAlign ( Stack stack)
inlinenoexcept

Definition at line 85 of file arch_arm.h.


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