FreeRTOS C-Addons  1.1.0
C-Addon functionality to FreeRTOS
Data Structures | Typedefs | Functions
zero_copy_queue.c File Reference
#include <stdlib.h>
#include "FreeRTOS.h"
#include "queue.h"
#include "mem_pool.h"
#include "zero_copy_queue.h"
Include dependency graph for zero_copy_queue.c:

Go to the source code of this file.

Data Structures

struct  PvtZeroCopyQueue_t_
 

Typedefs

typedef struct PvtZeroCopyQueue_t_ PvtZeroCopyQueue_t
 

Functions

ZeroCopyQueue_t ZcqCreateQueue (int ItemSize, int ItemCount, int Alignment)
 
void * ZcqAllocateItem (ZeroCopyQueue_t z)
 
void ZcqFreeItem (ZeroCopyQueue_t z, void *Item)
 
int ZcqEnqueueItem (ZeroCopyQueue_t z, void *Item, TickType_t Timeout)
 
void * ZcqDequeueItem (ZeroCopyQueue_t z, TickType_t Timeout)
 

Typedef Documentation

◆ PvtZeroCopyQueue_t

Function Documentation

◆ ZcqAllocateItem()

void* ZcqAllocateItem ( ZeroCopyQueue_t  zcq)

Allocate an item to use or queue.

Note that this can block, and cannnot be used from ISR context.

Parameters
zcqA handle to a ZeroCopyQueue_t.
Returns
A pointer or NULL on failure.

Definition at line 85 of file zero_copy_queue.c.

◆ ZcqCreateQueue()

ZeroCopyQueue_t ZcqCreateQueue ( int  itemSize,
int  itemCount,
int  Alignment 
)

Create a Zero Copy Queue.

Parameters
itemSizeMaximum size of the item.
itemCountWhat's the maximum number of items allowed?
AlignmentPower of 2 value denoting on which address boundary the memory will be aligned to. Must be at least sizeof(unsigned char *).
Returns
A Handle to the ZeroCopyQueue, or NULL on failure.

Definition at line 55 of file zero_copy_queue.c.

◆ ZcqDequeueItem()

void* ZcqDequeueItem ( ZeroCopyQueue_t  zcq,
TickType_t  Timeout 
)

Dequeue an item from ZcqEnqueueItem().

Parameters
zcqA handle to a ZeroCopyQueue_t.
TimeoutTimeout in FreeRTOS ticks.
Returns
An item obtained from ZcqAllocateItem() on success. NULL on failure.

Definition at line 130 of file zero_copy_queue.c.

◆ ZcqEnqueueItem()

int ZcqEnqueueItem ( ZeroCopyQueue_t  zcq,
void *  item,
TickType_t  Timeout 
)

Queue an item obtained from ZcqAllocateItem().

Parameters
zcqA handle to a ZeroCopyQueue_t.
itemAn item obtained from ZcqAllocateItem().
TimeoutTimeout in FreeRTOS ticks.
Returns
1 on success, 0 on failure.

Definition at line 113 of file zero_copy_queue.c.

◆ ZcqFreeItem()

void ZcqFreeItem ( ZeroCopyQueue_t  zcq,
void *  item 
)

Free a previously allocated item back into the base pool.

Note
This can block, and cannnot be used from ISR context.
There is no check that the memory passed in is valid.
Parameters
zcqA handle to a ZeroCopyQueue_t.
itemAn item obtained from ZcqAllocateItem().

Definition at line 100 of file zero_copy_queue.c.