|
uint64_t | empty () |
|
uint64_t | empty (volatile uint64_t &position) |
|
void | flush () |
|
template<typename circular_t , typename ext_t > |
bool | force_write (volatile uint64_t &position, const ext_t *const *src, uint64_t bulk, unsigned int channels_circular=1, unsigned int channels_src=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
| multi channel interleaved bulk write into circular buffer with format conversion if applicable More...
|
|
template<typename circular_t , typename ext_t > |
bool | force_write (const ext_t *const *src, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int channels_src=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
template<typename circular_t , typename ext_t > |
bool | force_write (volatile uint64_t &position, const ext_t *src, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
| single channel More...
|
|
template<typename circular_t , typename ext_t > |
bool | force_write (const ext_t *src, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
template<typename data_t > |
bool | force_write (volatile uint64_t &position, const data_t *src, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
| single channel circular_t==ext_t More...
|
|
template<typename data_t > |
bool | force_write (const data_t *src, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
template<typename data_t > |
bool | force_write (const data_t *const *src, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int channels_src=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
| multi channel circular_t==ext_t More...
|
|
template<typename circular_t , typename src_t > |
bool | force_write (src_t *const *const *src, unsigned int clients, unsigned int channels=1, uint64_t bulk=1) |
| multi channel multi client bulk mix into circular buffer with format conversion if applicable src[client][channel][sample] More...
|
|
template<typename data_t > |
bool | force_write (data_t *const *const *src, uint64_t clients, uint64_t channels, uint64_t bulk) |
|
void | initialize (uint64_t backingstore_size) |
|
void | initialize () |
|
uint64_t | loop () const |
|
template<typename exception_t , typename callback_t > |
void | move (callback_t &callback, uint64_t max) throw (exception_t) |
|
template<typename data_t > |
bool | operator<< (const data_t &src) |
|
template<typename data_t > |
bool | operator>> (data_t &dst) |
|
template<typename circular_t , typename ext_t > |
bool | read (volatile uint64_t &position, ext_t *const *dst, uint64_t bulk, unsigned int channels_circular=1, unsigned int channels_dst=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
| multi channel interleaved bulk read from circular buffer with format conversion if applicable More...
|
|
template<typename circular_t , typename ext_t > |
bool | read (ext_t *const *dst, uint64_t bulk, unsigned int channels_circular=1, unsigned int channels_dst=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
template<typename circular_t , typename ext_t > |
bool | read (volatile uint64_t &position, ext_t *dst, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
template<typename circular_t , typename ext_t > |
bool | read (ext_t *dst, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
template<typename data_t > |
bool | read (volatile uint64_t &position, data_t *dst, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
template<typename data_t > |
bool | read (data_t *dst, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
template<typename data_t > |
bool | read (data_t *const *dst, uint64_t bulk, unsigned int channels_circular=1, unsigned int channels_dst=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
template<typename data_t > |
bool | read (volatile uint64_t &position, data_t *const *dst, uint64_t bulk, unsigned int channels_circular=1, unsigned int channels_dst=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
template<typename dst_t = char> |
dst_t * | simulate_read (volatile uint64_t &position, uint64_t bulk=1) |
|
template<typename dst_t = char> |
dst_t * | simulate_read (uint64_t bulk=1) |
|
char * | simulate_write (uint64_t bulk) |
| simulate write by advancing write idx and take care of wrap write optimization More...
|
|
uint64_t | used () |
|
uint64_t | used (volatile uint64_t &position) |
|
template<typename circular_t , typename ext_t > |
bool | write (volatile uint64_t &position, const ext_t *const *src, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int channels_src=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
| bulk write into circular buffer with format conversion if applicable More...
|
|
template<typename circular_t , typename ext_t > |
bool | write (const ext_t *const *src, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int channels_src=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
template<typename circular_t , typename ext_t > |
bool | write (volatile uint64_t &position, const ext_t *src, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
template<typename circular_t , typename ext_t > |
bool | write (const ext_t *src, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
template<typename data_t > |
bool | write (volatile uint64_t &position, const data_t *src, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
template<typename data_t > |
bool | write (const data_t *src, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
template<typename data_t > |
bool | write (const data_t *const *src, uint64_t bulk=1, unsigned int channels_circular=1, unsigned int channels_src=1, unsigned int circular_offset=0, unsigned int interleaved=1) |
|
kernel/user space shared circular buffer
this buffer is non-blocking for single-consumer/single-producer configurations; multiple producer write interleaved while obtaining shadow.tx; if shadow.tx==tx the producer is allowed to write into the buffer after advancing shadow.tx to the final tx position; once tx reaches shadow.tx the write is terminated and the producer can start a write cycle. multiple consumer each hold there own rx and read between rx and cycle.tx.