IntrOS
Loading...
Searching...
No Matches
Memory pool

memory pools (objects of a fixed size) More...

Macros

#define OS_MEM_BUFFER(buf, limit, size)
 define memory pool data buffer
#define OS_MEM(mem, limit, size)
 define and initialize a memory pool object
#define static_MEM(mem, limit, size)
 static alias of OS_MEM()
#define MEM_INIT(limit, size)
 create and initialize a memory pool object
#define MEM_CREATE(limit, size)
 create and initialize a memory pool object
#define MEM_NEW   MEM_CREATE
 alias of MEM_CREATE()

Functions

void mem_init (mem_t *mem, size_t size, que_t *data, size_t bufsize)
 initialize a memory pool object
void mem_reset (mem_t *mem)
 reset the memory pool object and wake up all waiting tasks with 'E_STOPPED' event value
void mem_kill (mem_t *mem)
 alias of mem_reset()
int mem_take (mem_t *mem, void **data)
 try to get memory object from the memory pool object, don't wait if the memory pool object is empty
int mem_tryWait (mem_t *mem, void **data)
 alias of mem_take()
int mem_waitFor (mem_t *mem, void **data, cnt_t delay)
 try to get memory object from the memory pool object, wait for given duration of time while the memory pool object is empty
int mem_waitUntil (mem_t *mem, void **data, cnt_t time)
 try to get memory object from the memory pool object, wait until given timepoint while the memory pool object is empty
int mem_wait (mem_t *mem, void **data)
 try to get memory object from the memory pool object, wait indefinitely while the memory pool object is empty
void mem_give (mem_t *mem, void *data)
 transfer memory object to the memory pool object,

Detailed Description

memory pools (objects of a fixed size)

Macro Definition Documentation

◆ OS_MEM_BUFFER

#define OS_MEM_BUFFER ( buf,
limit,
size )
Value:
que_t buf[limit * (1 + MEM_SIZE(size))]

define memory pool data buffer

Parameters
bufname of the buffer (passed to the init function)
limitsize of a buffer (max number of objects)
sizesize of memory object (in bytes)

◆ OS_MEM

#define OS_MEM ( mem,
limit,
size )
Value:
static que_t mem##__buf[limit * (1 + MEM_SIZE(size))]; \
mem_t mem[] = { _MEM_INIT( limit, MEM_SIZE(size), mem##__buf ) }

define and initialize a memory pool object

Parameters
memname of a pointer to memory pool object
limitsize of a buffer (max number of objects)
sizesize of memory object (in bytes)

◆ static_MEM

#define static_MEM ( mem,
limit,
size )
Value:
static que_t mem##__buf[limit * (1 + MEM_SIZE(size))]; \
static mem_t mem[] = { _MEM_INIT( limit, MEM_SIZE(size), mem##__buf ) }

static alias of OS_MEM()

◆ MEM_INIT

#define MEM_INIT ( limit,
size )
Value:
_MEM_INIT( limit, MEM_SIZE(size), _MEM_DATA(limit, MEM_SIZE(size)) )

create and initialize a memory pool object

Parameters
limitsize of a buffer (max number of objects)
sizesize of memory object (in bytes)
Returns
memory pool object
Note
use only in 'C' code

◆ MEM_CREATE

#define MEM_CREATE ( limit,
size )
Value:
{ MEM_INIT ( limit, size ) }
#define MEM_INIT(limit, size)
create and initialize a memory pool object
Definition osmemorypool.h:145

create and initialize a memory pool object

Parameters
limitsize of a buffer (max number of objects)
sizesize of memory object (in bytes)
Returns
memory pool object as array (id)
Note
use only in 'C' code

Function Documentation

◆ mem_init()

void mem_init ( mem_t * mem,
size_t size,
que_t * data,
size_t bufsize )

initialize a memory pool object

Parameters
mempointer to memory pool object
sizesize of memory object (in bytes)
datamemory pool data buffer
bufsizesize of the data buffer (in bytes)

◆ mem_reset()

void mem_reset ( mem_t * mem)

reset the memory pool object and wake up all waiting tasks with 'E_STOPPED' event value

Parameters
mempointer to memory pool object
Note
use only in thread mode

◆ mem_take()

int mem_take ( mem_t * mem,
void ** data )

try to get memory object from the memory pool object, don't wait if the memory pool object is empty

Parameters
mempointer to memory pool object
datapointer to store the pointer to the memory object
Return values
E_SUCCESSpointer to memory object was successfully transferred to the data pointer
E_TIMEOUTmemory pool object is empty

◆ mem_waitFor()

int mem_waitFor ( mem_t * mem,
void ** data,
cnt_t delay )

try to get memory object from the memory pool object, wait for given duration of time while the memory pool object is empty

Parameters
mempointer to memory pool object
datapointer to store the pointer to the memory object
delayduration of time (maximum number of ticks to wait while the memory pool object is empty)
  • IMMEDIATE: don't wait if the memory pool object is empty
  • INFINITE: wait indefinitely while the memory pool object is empty
Return values
E_SUCCESSpointer to memory object was successfully transferred to the data pointer
E_STOPPEDmemory pool object was reseted before the specified timeout expired
E_TIMEOUTmemory pool object is empty and was not received data before the specified timeout expired

◆ mem_waitUntil()

int mem_waitUntil ( mem_t * mem,
void ** data,
cnt_t time )

try to get memory object from the memory pool object, wait until given timepoint while the memory pool object is empty

Parameters
mempointer to memory pool object
datapointer to store the pointer to the memory object
timetimepoint value
Return values
E_SUCCESSpointer to memory object was successfully transferred to the data pointer
E_STOPPEDmemory pool object was reseted before the specified timeout expired
E_TIMEOUTmemory pool object is empty and was not received data before the specified timeout expired

◆ mem_wait()

int mem_wait ( mem_t * mem,
void ** data )
inline

try to get memory object from the memory pool object, wait indefinitely while the memory pool object is empty

Parameters
mempointer to memory pool object
datapointer to store the pointer to the memory object
Return values
E_SUCCESSpointer to memory object was successfully transferred to the data pointer
E_STOPPEDmemory pool object was reseted

◆ mem_give()

void mem_give ( mem_t * mem,
void * data )

transfer memory object to the memory pool object,

Parameters
mempointer to memory pool object
datapointer to memory object