44#include <libosal/queue.h>
46#include <libosal/types.h>
47#include <libosal/mutex.h>
48#include <libosal/semaphore.h>
60#define LEC_MAX_POOL_DATA_SIZE (1600)
ethercat master common stuff
TAILQ_HEAD(pool_queue, pool_entry)
queue head for pool queue
void pool_put_head(pool_t *pp, pool_entry_t *entry)
Put entry back to pool in front.
int pool_get(pool_t *pp, pool_entry_t **entry, osal_timer_t *timeout)
Get a datagram from pool.
#define LEC_MAX_POOL_DATA_SIZE
Maximum data size of ony pool entry.
Definition pool.h:60
void pool_put(pool_t *pp, pool_entry_t *entry)
Put entry back to pool.
int pool_peek(pool_t *pp, pool_entry_t **entry)
Peek next entry from pool.
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.
struct pool_entry pool_entry_t
Pool queue entry.
struct pool pool_t
the datagram pool itself
void pool_remove(pool_t *pp, pool_entry_t *entry)
Remove entry from pool.
ethercat master structure
Definition ec.h:188
index entry
Definition idx.h:54
Pool queue entry.
Definition pool.h:67
osal_uint8_t data[LEC_MAX_POOL_DATA_SIZE]
Data entry.
Definition pool.h:74
idx_entry_t * p_idx
Assigned datagram index.
Definition pool.h:70
void(* user_cb)(struct ec *pec, struct pool_entry *p_entry, struct ec_datagram *p_dg)
User callback.
Definition pool.h:68
TAILQ_ENTRY(pool_entry) qh
Queue handle of pool objects.
int user_arg
User argument for user_cb.
Definition pool.h:69
the datagram pool itself
Definition pool.h:81
osal_mutex_t _pool_lock
Pool lock.
Definition pool.h:84
osal_semaphore_t avail_cnt
Available datagrams in pool.
Definition pool.h:83
struct pool_queue avail
Queue with available datagrams.
Definition pool.h:82