libethercat - an embeddable realtime EtherCAT-master library
Communicate with EtherCAT slaves attached to a Network interface.
Loading...
Searching...
No Matches
Pool

Data Structures

struct  pool_entry
 Pool queue entry. More...
 
struct  pool
 the datagram pool itself More...
 

Macros

#define LEC_MAX_POOL_DATA_SIZE   (1600)
 Maximum data size of ony pool entry.
 

Typedefs

typedef struct pool_entry pool_entry_t
 Pool queue entry.
 
typedef struct pool pool_t
 the datagram pool itself
 

Functions

 TAILQ_HEAD (pool_queue, pool_entry)
 queue head for pool queue
 
int pool_open (pool_t *pp, osal_size_t cnt, pool_entry_t *entries)
 Create a new data pool.
 
int pool_close (pool_t *pp)
 Destroys a datagram pool.
 
int pool_get (pool_t *pp, pool_entry_t **entry, osal_timer_t *timeout)
 Get a datagram from pool.
 
void pool_remove (pool_t *pp, pool_entry_t *entry)
 Remove entry from pool.
 
int pool_peek (pool_t *pp, pool_entry_t **entry)
 Peek next entry from pool.
 
void pool_put (pool_t *pp, pool_entry_t *entry)
 Put entry back to pool.
 
void pool_put_head (pool_t *pp, pool_entry_t *entry)
 Put entry back to pool in front.
 

Detailed Description

This modules contains EtherCAT data pools.

Typedef Documentation

◆ pool_entry_t

typedef struct pool_entry pool_entry_t

Pool queue entry.

\breif Pool entry type.

◆ pool_t

typedef struct pool pool_t

the datagram pool itself

Pool type.

Function Documentation

◆ pool_close()

int pool_close ( pool_t pp)

Destroys a datagram pool.

Parameters
[in]ppPointer to pool.
Return values
EC_OKOn success.

◆ pool_get()

int pool_get ( pool_t pp,
pool_entry_t **  entry,
osal_timer_t *  timeout 
)

Get a datagram from pool.

Parameters
[in]ppPointer to pool.
[out]entryReturns pointer to pool entry.
[in]timeoutTimeout waiting for free entry.
Return values
EC_OKOn success.
EC_ERROR_TIMEOUTTimeout occured waiting for pool entry.
EC_ERROR_UNAVAILABLEWaiting failed for other reason.

◆ pool_open()

int pool_open ( pool_t pp,
osal_size_t  cnt,
pool_entry_t entries 
)

Create a new data pool.

Parameters
[out]ppReturn pointer to newly created pool.
[in]cntNumber of entries in pool.
[in]data_sizeSize of data stored in each entry.
Return values
EC_OKOn success.

◆ pool_peek()

int pool_peek ( pool_t pp,
pool_entry_t **  entry 
)

Peek next entry from pool.

Parameters
[in]ppPointer to pool.
[out]entryReturns pointer to pool entry. Be carefull, entry relies still in pool.
Return values
EC_OKOn success.
EC_ERROR_UNAVAILABLEWaiting failed for other reason.

◆ pool_put()

void pool_put ( pool_t pp,
pool_entry_t entry 
)

Put entry back to pool.

Parameters
[in]ppPointer to pool.
[out]entryEntry to put back in pool.

◆ pool_put_head()

void pool_put_head ( pool_t pp,
pool_entry_t entry 
)

Put entry back to pool in front.

Parameters
[in]ppPointer to pool.
[out]entryEntry to put back in pool.

◆ pool_remove()

void pool_remove ( pool_t pp,
pool_entry_t entry 
)

Remove entry from pool.

Parameters
[in]ppPointer to pool.
[in]entryPool Entry to remove, got previously by pool_peek