Shared Persistent Heap Data Environment Manual 1.4.0
Loading...
Searching...
No Matches
Macros | Typedefs | Functions
sassimplestack.h File Reference

Shared Address Space Simple Stack. Allocate a SAS block as stack. More...

#include "sastype.h"

Go to the source code of this file.

Macros

#define __C__
 ignore this macro behind the curtain
 

Typedefs

typedef void * SASSimpleStack_t
 Handle to SAS Simple Stack.
 

Functions

__C__ SASSimpleStack_t SASSimpleStackInit (void *heap_block, block_size_t block_size)
 Initialize a shared storage block as a simple stack.
 
__C__ SASSimpleStack_t SASSimpleStackCreate (block_size_t stack_size)
 Allocate a SAS block as a simple stack.
 
__C__ int SASSimpleStackDestroy (SASSimpleStack_t stack)
 Destroy a SASSimpleStack_t and free the shared storage block.
 
__C__ block_size_t SASSimpleStackFreeSpace (SASSimpleStack_t stack)
 Return the block free space not currently allocated to the stack.
 
__C__ void * SASSimpleStackAlloc (SASSimpleStack_t stack, block_size_t alloc_size)
 Atomically allocate a sub range of a SAS Simple Stack as a push down stack.
 
__C__ void * SASSimpleStackNearAlloc (void *near_stack, block_size_t alloc_size)
 Atomically allocate a sub range of a SAS Simple Stack as a push down stack.
 
__C__ int SASSimpleStackDealloc (SASSimpleStack_t stack, void *stack_pointer)
 Atomically deallocate a sub range of a SAS Simple Stack by reseting the stack top.
 
__C__ int SASSimpleStackDestroyNoLock (SASSimpleStack_t stack)
 Destroy a SASSimpleStack_t and free the shared storage block.
 
__C__ block_size_t SASSimpleStackFreeSpaceNoLock (SASSimpleStack_t stack)
 Return the block free space not currently allocated to the stack.
 
__C__ void * SASSimpleStackAllocNoLock (SASSimpleStack_t stack, block_size_t alloc_size)
 Allocate a sub range of a SAS Simple Stack as s push down stack.
 
__C__ void * SASSimpleStackNearAllocNoLock (void *near_stack, block_size_t alloc_size)
 Allocate a sub range of a SAS Simple Stack as a push down stack.
 
__C__ int SASSimpleStackDeallocNoLock (SASSimpleStack_t stack, void *stack_pointer)
 Deallocate a sub range of a SAS Simple Stack by reseting the stack top.
 

Detailed Description

Shared Address Space Simple Stack. Allocate a SAS block as stack.

!

Typedef Documentation

◆ SASSimpleStack_t

typedef void* SASSimpleStack_t

Handle to SAS Simple Stack.

The type is SAS_RUNTIME_SIMPLESTACK

Function Documentation

◆ SASSimpleStackAlloc()

__C__ void * SASSimpleStackAlloc ( SASSimpleStack_t  stack,
block_size_t  alloc_size 
)
extern

Atomically allocate a sub range of a SAS Simple Stack as a push down stack.

@param stack Handle of a SAS Simple Stack.
@param alloc_size size of the simple space within the block.
@return Address of the allocated space or NULL if the stack is full.

◆ SASSimpleStackAllocNoLock()

__C__ void * SASSimpleStackAllocNoLock ( SASSimpleStack_t  stack,
block_size_t  alloc_size 
)
extern

Allocate a sub range of a SAS Simple Stack as s push down stack.

@param stack Handle of a SAS Simple Stack.
@param alloc_size size of the simple space within the block.
@return Address of the allocated space or NULL if the stack is full.

◆ SASSimpleStackCreate()

__C__ SASSimpleStack_t SASSimpleStackCreate ( block_size_t  stack_size)
extern

Allocate a SAS block as a simple stack.

Initialize the control blocks within the specified storage
block as a Simple Stack.
The storage block must be power of two in size.
The type should be SAS_RUNTIME_SIMPLESPACE.

@param stack_size size of the simple space within the block.
@return a handle to the created SASSimpleStack_t.

◆ SASSimpleStackDealloc()

__C__ int SASSimpleStackDealloc ( SASSimpleStack_t  stack,
void *  stack_pointer 
)
extern

Atomically deallocate a sub range of a SAS Simple Stack by reseting the stack top.

@param stack Handle of a SAS Simple Stack.
@param stack_pointer The new stack top.
@return  a 0 value indicates success, otherwise failure.

◆ SASSimpleStackDeallocNoLock()

__C__ int SASSimpleStackDeallocNoLock ( SASSimpleStack_t  stack,
void *  stack_pointer 
)
extern

Deallocate a sub range of a SAS Simple Stack by reseting the stack top.

@param stack Handle of a SAS Simple Stack.
@param stack_pointer The new stack top.
@return  a 0 value indicates success, otherwise failure.

◆ SASSimpleStackDestroy()

__C__ int SASSimpleStackDestroy ( SASSimpleStack_t  stack)
extern

Destroy a SASSimpleStack_t and free the shared storage block.

The sas_type_t must be SAS_RUNTIME_SIMPLESTACK.
Destroy holds an exclusive write while clearing the control blocks
and freeing the SAS block.

@param stack handle of the SASSimpleSpace_t to be destroyed.
@return a 0 value indicates success, otherwise failure.

◆ SASSimpleStackDestroyNoLock()

__C__ int SASSimpleStackDestroyNoLock ( SASSimpleStack_t  stack)
extern

Destroy a SASSimpleStack_t and free the shared storage block.

The sas_type_t must be SAS_RUNTIME_SIMPLESTACK.

@param stack handle of the SASSimpleSpace_t to be destroyed.
@return a 0 value indicates success, otherwise failure.

◆ SASSimpleStackFreeSpace()

__C__ block_size_t SASSimpleStackFreeSpace ( SASSimpleStack_t  stack)
extern

Return the block free space not currently allocated to the stack.

@param stack Handle of a SAS Simple Stack.
@return the size of the remaining free space.

◆ SASSimpleStackFreeSpaceNoLock()

__C__ block_size_t SASSimpleStackFreeSpaceNoLock ( SASSimpleStack_t  stack)
extern

Return the block free space not currently allocated to the stack.

@param stack Handle of a SAS Simple Stack.
@return the size of the remaining free space.

◆ SASSimpleStackInit()

__C__ SASSimpleStack_t SASSimpleStackInit ( void *  heap_block,
block_size_t  block_size 
)
extern

Initialize a shared storage block as a simple stack.

Initialize the control blocks within the specified storage
block as a Simple Stack.
The storage block must be power of two in size and have the
same power of two (or better) alignment.
The type should be SAS_RUNTIME_SIMPLESTACK.

@param heap_block a block of allocated SAS storage.
@param block_size power of two size of the heap to be initialized.
@return a handle to the initialized SASSimpleStack_t

◆ SASSimpleStackNearAlloc()

__C__ void * SASSimpleStackNearAlloc ( void *  near_stack,
block_size_t  alloc_size 
)
extern

Atomically allocate a sub range of a SAS Simple Stack as a push down stack.

Find the associated SASSimpleStack_t control block and use it to
allocate stack space.

@param near_stack Handle of a SAS Simple Stack.
@param alloc_size size of the simple space within the block.
@return Address of the allocated space or NULL if the stack is full.

◆ SASSimpleStackNearAllocNoLock()

__C__ void * SASSimpleStackNearAllocNoLock ( void *  near_stack,
block_size_t  alloc_size 
)
extern

Allocate a sub range of a SAS Simple Stack as a push down stack.

Find the associated SASSimpleStack_t control block and use it to
allocate stack space.

@param near_stack Handle of a SAS Simple Stack.
@param alloc_size size of the simple space within the block.
@return Address of the allocated space or NULL if the stack is full.