|
uint64_t | empty () const |
|
uint64_t | empty (uint64_t position) const |
|
template<typename ext_t , typename circular_t = ext_t> |
hide_if_ptr< ext_t > | force_read (ext_t *const *dst, uint64_t bulk=1, uint32_t channels_circular=1, uint32_t channels_dst=1, uint32_t circular_offset=0, uint32_t interleaved=1) |
|
template<typename ext_t , typename circular_t = ext_t> |
hide_if_ptr< ext_t > | force_read (ext_t *dst, uint64_t bulk=1, uint32_t channels_circular=1, uint32_t circular_offset=0, uint32_t interleaved=1) |
|
template<typename ext_t , typename circular_t = ext_t> |
bool | force_read (volatile uint64_t &position, ext_t *const *dst, uint64_t bulk, uint32_t channels_circular=1, uint32_t channels_dst=1, uint32_t circular_offset=0, uint32_t interleaved=1) |
| multi channel interleaved bulk read from circular buffer with format conversion if applicable
|
|
template<typename ext_t , typename circular_t = ext_t> |
hide_if_ptr< ext_t > | force_read (volatile uint64_t &position, ext_t *dst, uint64_t bulk=1, uint32_t channels_circular=1, uint32_t circular_offset=0, uint32_t interleaved=1) |
|
template<typename ext_t , typename circular_t = ext_t> |
bool | force_write (const ext_t *const *src, uint64_t bulk=1, uint32_t channels_circular=1, uint32_t channels_src=1, uint32_t circular_offset=0, uint32_t interleaved=1) |
|
template<typename ext_t , typename circular_t = ext_t> |
hide_if_ptr< ext_t > | force_write (const ext_t *src, uint64_t bulk=1, uint32_t channels_circular=1, uint32_t circular_offset=0, uint32_t interleaved=1) |
|
template<typename data_t > |
bool | force_write (data_t *const *const *src, uint64_t clients, uint64_t channels, uint64_t bulk) |
|
template<typename circular_t , typename src_t > |
bool | force_write (src_t *const *const *src, uint32_t clients, uint32_t channels=1, uint64_t bulk=1) |
| multi channel multi client bulk mix into circular buffer with format conversion if applicable src[client][channel][sample]
|
|
template<typename ext_t , typename circular_t = ext_t> |
bool | force_write (volatile uint64_t &position, const ext_t *const *src, uint64_t bulk, uint32_t channels_circular=1, uint32_t channels_src=1, uint32_t circular_offset=0, uint32_t interleaved=1) |
| multi channel interleaved bulk write into circular buffer with format conversion if applicable
|
|
template<typename ext_t , typename circular_t = ext_t> |
hide_if_ptr< ext_t > | force_write (volatile uint64_t &position, const ext_t *src, uint64_t bulk=1, uint32_t channels_circular=1, uint32_t circular_offset=0, uint32_t interleaved=1) |
| single channel convenience access templates
|
|
void | initialize () |
|
void | initialize (uint64_t backingstore_size) |
|
uint64_t | loop () const |
|
template<typename callback_t > |
void | move (callback_t &callback, uint64_t max) |
|
template<typename data_t > |
hide_if_ptr< data_t > | operator<< (const data_t &src) |
|
template<typename data_t > |
hide_if_ptr< data_t > | operator>> (data_t &dst) |
|
template<typename ext_t , typename circular_t = ext_t> |
hide_if_ptr< ext_t > | read (ext_t *const *dst, uint64_t bulk=1, uint32_t channels_circular=1, uint32_t channels_dst=1, uint32_t circular_offset=0, uint32_t interleaved=1) |
|
template<typename ext_t , typename circular_t = ext_t> |
hide_if_ptr< ext_t > | read (ext_t *dst, uint64_t bulk=1, uint32_t channels_circular=1, uint32_t circular_offset=0, uint32_t interleaved=1) |
|
template<typename ext_t , typename circular_t = ext_t> |
hide_if_ptr< ext_t > | read (volatile uint64_t &position, ext_t *const *dst, uint64_t bulk=1, uint32_t channels_circular=1, uint32_t channels_dst=1, uint32_t circular_offset=0, uint32_t interleaved=1) |
|
template<typename ext_t , typename circular_t = ext_t> |
hide_if_ptr< ext_t > | read (volatile uint64_t &position, ext_t *dst, uint64_t bulk=1, uint32_t channels_circular=1, uint32_t circular_offset=0, uint32_t interleaved=1) |
|
template<typename dst_t = uint8_t> |
dst_t * | simulate_read (uint64_t bulk=1) |
|
template<typename dst_t = uint8_t> |
dst_t * | simulate_read (volatile uint64_t &position, uint64_t bulk) |
|
uint8_t * | simulate_write (uint64_t bulk) |
| simulate write by advancing write idx and take care of wrap write optimization
|
|
uint64_t | used () const |
|
uint64_t | used (uint64_t position) const |
|
template<typename ext_t , typename circular_t = ext_t> |
bool | write (const ext_t *const *src, uint64_t bulk=1, uint32_t channels_circular=1, uint32_t channels_src=1, uint32_t circular_offset=0, uint32_t interleaved=1) |
|
template<typename ext_t , typename circular_t = ext_t> |
hide_if_ptr< ext_t > | write (const ext_t *src, uint64_t bulk=1, uint32_t channels_circular=1, uint32_t circular_offset=0, uint32_t interleaved=1) |
|
template<typename ext_t , typename circular_t = ext_t> |
bool | write (volatile uint64_t &position, const ext_t *const *src, uint64_t bulk=1, uint32_t channels_circular=1, uint32_t channels_src=1, uint32_t circular_offset=0, uint32_t interleaved=1) |
| bulk write into circular buffer with format conversion if applicable
|
|
template<typename ext_t , typename circular_t = ext_t> |
hide_if_ptr< ext_t > | write (volatile uint64_t &position, const ext_t *src, uint64_t bulk=1, uint32_t channels_circular=1, uint32_t circular_offset=0, uint32_t 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.