VSF Documented
Data Structures | Macros | Typedefs | Functions | Variables
vsf_pbuf_pool.h File Reference
#include "service/vsf_service_cfg.h"
#include "./vsf_pbuf.h"
#include "service/pool/vsf_pool.h"

Go to the source code of this file.

Data Structures

union  vsf_pbuf_pool_item_t
 
struct  vsf_pbuf_pool_t
 

Macros

#define __declare_pbuf_pool(__NAME)
 
#define __def_pbuf_pool(__NAME, __SIZE, ...)
 
#define __vsf_pbuf_pool_req_pbuf_evt(__NAME, __POOL)
 
#define __implement_pbuf_pool(__NAME)
 
#define __init_pbuf_pool(__NAME, __POOL, __ID, __COUNT, ...)
 
#define init_pbuf_pool(__NAME, __POOL, __ID, __COUNT, ...)    __init_pbuf_pool(__NAME, (__POOL), (__ID), (__COUNT), __VA_ARGS__)
 
#define __prepare_pbuf_pool(__NAME, __POOL, __ID, ...)
 
#define prepare_pbuf_pool(__NAME, __POOL, __ID, ...)    __prepare_pbuf_pool(__NAME, (__POOL), (__ID), __VA_ARGS__)
 
#define def_pbuf_pool(__NAME, __SIZE, ...)    __def_pbuf_pool(__NAME, (__SIZE), __VA_ARGS__)
 
#define declare_pbuf_pool(__NAME)   __declare_pbuf_pool(__NAME)
 
#define vsf_pbuf_pool_req_pbuf_evt(__NAME, __POOL)    __vsf_pbuf_pool_req_pbuf_evt(__NAME, (__POOL))
 
#define implement_pbuf_pool(...)   __implement_pbuf_pool(__VA_ARGS__)
 
#define vsf_pbuf_pool_adapter(__ID, __POOL)
 

Typedefs

typedef union vsf_pbuf_pool_item_t vsf_pbuf_pool_item_t
 
typedef struct vsf_pbuf_pool_t vsf_pbuf_pool_t
 

Functions

void vsf_pbuf_pool_init (vsf_pbuf_pool_t *this_ptr, uint32_t u32_item_size, uint_fast16_t u16_align, vsf_pool_cfg_t *pcfg)
 
bool vsf_pbuf_pool_add_buffer (vsf_pbuf_pool_t *this_ptr, void *buffer_ptr, uint_fast32_t u32_size, uint_fast16_t u16_item_size)
 
vsf_pbuf_t * vsf_pbuf_pool_alloc (vsf_pbuf_pool_t *)
 
void vsf_pbuf_pool_free (vsf_pbuf_pool_t *, vsf_pbuf_t *)
 
uint_fast32_t vsf_pbuf_get_pool_item_count (vsf_pbuf_pool_t *)
 
vsf_protect_region_tvsf_pbuf_pool_get_region (vsf_pbuf_pool_t *)
 
uintptr_t vsf_pbuf_pool_get_target (vsf_pbuf_pool_t *)
 

Variables

const i_pbuf_methods_t VSF_PBUF_ADAPTER_METHODS_STREAM_SRC
 

Macro Definition Documentation

◆ __declare_pbuf_pool

#define __declare_pbuf_pool (   __NAME)
Value:
typedef struct __NAME##_pool_item_t __NAME##_pool_item_t; \
typedef struct __NAME##_pool_t __NAME##_pool_t;

◆ __def_pbuf_pool

#define __def_pbuf_pool (   __NAME,
  __SIZE,
  ... 
)
Value:
struct __NAME##_pool_item_t { \
implement(vsf_pbuf_t); \
uint8_t u8_buffer[__SIZE]; \
}; \
struct __NAME##_pool_t { \
implement(vsf_pbuf_pool_t) \
__VA_ARGS__ \
};
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_pbuf_pool.h:152

◆ __vsf_pbuf_pool_req_pbuf_evt

#define __vsf_pbuf_pool_req_pbuf_evt (   __NAME,
  __POOL 
)
Value:
{ .handler_fn = __NAME##_req_pbuf_evt_handler, \
.target_ptr = (__POOL), \
}
Definition vsf_pbuf.h:83

◆ __implement_pbuf_pool

#define __implement_pbuf_pool (   __NAME)
Value:
vsf_pbuf_t *__NAME##_req_pbuf_evt_handler(void *target_ptr, \
{ \
vsf_pool(__NAME) *this_ptr = (vsf_pool(__NAME) *)target_ptr; \
VSF_SERVICE_ASSERT(NULL != this_ptr); \
&(this_ptr->use_as__vsf_pbuf_pool_t)) <= hwReserve) { \
return NULL; \
} \
return vsf_pbuf_pool_alloc(&(this_ptr->use_as__vsf_pbuf_pool_t)); \
}
#define NULL
Definition stddef.h:52
int int_fast32_t
Definition stdint.h:26
unsigned short uint_fast16_t
Definition stdint.h:25
int_fast32_t int_fast32_t uint_fast16_t hwReserve
Definition vsf_pbuf.h:80
int_fast32_t int_fast32_t nBestSize
Definition vsf_pbuf.h:79
int_fast32_t nNoLessThan
Definition vsf_pbuf.h:78
uint_fast32_t vsf_pbuf_get_pool_item_count(vsf_pbuf_pool_t *)
Definition vsf_pbuf_pool.c:85
vsf_pbuf_t * vsf_pbuf_pool_alloc(vsf_pbuf_pool_t *)
Definition vsf_pbuf_pool.c:70
#define vsf_pool(__name)
Definition vsf_pool.h:258

◆ __init_pbuf_pool

#define __init_pbuf_pool (   __NAME,
  __POOL,
  __ID,
  __COUNT,
  ... 
)
Value:
do { \
VSF_CAL_NO_INIT static vsf_pool_item(__NAME) \
__##__NAME##_data_buffer[__COUNT]; \
const vsf_pbuf_adapter_t *adapter_ptr = \
vsf_pbuf_adapter_get(__ID); \
vsf_pool_cfg_t cfg = { \
.target_ptr = (uintptr_t)adapter_ptr, \
.pool_name_ptr = #__NAME, \
__VA_ARGS__ \
}; \
\
vsf_pbuf_pool_init( &((__POOL)->use_as__vsf_pbuf_pool_t), \
sizeof(vsf_pool_item(__NAME)), \
&cfg); \
vsf_pbuf_pool_add_buffer( &((__POOL)->use_as__vsf_pbuf_pool_t), \
__##__NAME##_data_buffer, \
sizeof(__##__NAME##_data_buffer), \
sizeof(vsf_pool_item(__NAME))); \
} while(0)
#define VSF_CAL_ALIGN_OF(__TYPE)
Definition __compiler.h:188
uint32_t uintptr_t
Definition stdint.h:38
struct vsf_pbuf_adapter_t vsf_pbuf_adapter_t
Definition vsf_pbuf.h:152
#define vsf_pool_item(__name)
Definition vsf_pool.h:259
vsf_pool_cfg_t
Definition vsf_pool.h:539

◆ init_pbuf_pool

#define init_pbuf_pool (   __NAME,
  __POOL,
  __ID,
  __COUNT,
  ... 
)     __init_pbuf_pool(__NAME, (__POOL), (__ID), (__COUNT), __VA_ARGS__)

◆ __prepare_pbuf_pool

#define __prepare_pbuf_pool (   __NAME,
  __POOL,
  __ID,
  ... 
)
Value:
do { \
const vsf_pbuf_adapter_t *adapter_ptr = \
vsf_pbuf_adapter_get(__ID); \
vsf_pool_cfg_t cfg = { \
.target_ptr = (uintptr_t)adapter_ptr, \
.pool_name_ptr = #__NAME, \
__VA_ARGS__ \
}; \
\
vsf_pbuf_pool_init( &((__POOL)->use_as__vsf_pbuf_pool_t), \
sizeof(vsf_pool_item(__NAME)), \
&cfg); \
} while(0)
void vsf_pbuf_pool_item_init_event_handler(uintptr_t target_ptr, uintptr_t pbuf, uint_fast32_t s32_size)
Definition vsf_pbuf.c:380

◆ prepare_pbuf_pool

#define prepare_pbuf_pool (   __NAME,
  __POOL,
  __ID,
  ... 
)     __prepare_pbuf_pool(__NAME, (__POOL), (__ID), __VA_ARGS__)

◆ def_pbuf_pool

#define def_pbuf_pool (   __NAME,
  __SIZE,
  ... 
)     __def_pbuf_pool(__NAME, (__SIZE), __VA_ARGS__)

◆ declare_pbuf_pool

#define declare_pbuf_pool (   __NAME)    __declare_pbuf_pool(__NAME)

◆ vsf_pbuf_pool_req_pbuf_evt

#define vsf_pbuf_pool_req_pbuf_evt (   __NAME,
  __POOL 
)     __vsf_pbuf_pool_req_pbuf_evt(__NAME, (__POOL))

◆ implement_pbuf_pool

#define implement_pbuf_pool (   ...)    __implement_pbuf_pool(__VA_ARGS__)

◆ vsf_pbuf_pool_adapter

#define vsf_pbuf_pool_adapter (   __ID,
  __POOL 
)
Value:
{ \
.target_ptr = (__POOL), \
.ID = (__ID), \
}
const i_pbuf_methods_t VSF_PBUF_ADAPTER_METHODS_STREAM_SRC
Definition vsf_pbuf_pool.c:31

Typedef Documentation

◆ vsf_pbuf_pool_item_t

◆ vsf_pbuf_pool_t

Function Documentation

◆ vsf_pbuf_pool_init()

void vsf_pbuf_pool_init ( vsf_pbuf_pool_t this_ptr,
uint32_t  u32_item_size,
uint_fast16_t  u16_align,
vsf_pool_cfg_t pcfg 
)
extern

◆ vsf_pbuf_pool_add_buffer()

bool vsf_pbuf_pool_add_buffer ( vsf_pbuf_pool_t this_ptr,
void *  buffer_ptr,
uint_fast32_t  u32_size,
uint_fast16_t  u16_item_size 
)
extern

◆ vsf_pbuf_pool_alloc()

vsf_pbuf_t * vsf_pbuf_pool_alloc ( vsf_pbuf_pool_t this_ptr)
extern

◆ vsf_pbuf_pool_free()

void vsf_pbuf_pool_free ( vsf_pbuf_pool_t this_ptr,
vsf_pbuf_t *  item_ptr 
)
extern

◆ vsf_pbuf_get_pool_item_count()

uint_fast32_t vsf_pbuf_get_pool_item_count ( vsf_pbuf_pool_t this_ptr)
extern

◆ vsf_pbuf_pool_get_region()

vsf_protect_region_t * vsf_pbuf_pool_get_region ( vsf_pbuf_pool_t this_ptr)
extern

◆ vsf_pbuf_pool_get_target()

uintptr_t vsf_pbuf_pool_get_target ( vsf_pbuf_pool_t this_ptr)
extern

Variable Documentation

◆ VSF_PBUF_ADAPTER_METHODS_STREAM_SRC

const i_pbuf_methods_t VSF_PBUF_ADAPTER_METHODS_STREAM_SRC
extern