dxd  dynax driver framework
3061
cross platform open source driver development framework

kernel/user space shared circular buffer More...
#include <dx_stream.h>
Public Types  
enum  format { format::pcm16 = 'pcm\x10', format::pcm24 = 'pcm\x18', format::pcm24in32hi ='pcmh', format::pcm24in32lo ='pcml', format::pcm32 = 'pcm\x20', format::midi = 'midi', format::invalid = 'none', format::audio = 'aud\0', format::any = 'any\0' } 
Public Member Functions  
template<typename circular_t , typename ext_t >  
DX_HIDE_IF_PTR (ext_t) read(ext_t *const *dst  
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t  DX_HIDE_IF_PTR (ext_t) force_write(volatile uint64_t &position 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t  DX_HIDE_IF_PTR (ext_t) force_write(const ext_t *src 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t  DX_HIDE_IF_PTR (ext_t) write(volatile uint64_t &position 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t  DX_HIDE_IF_PTR (ext_t) write(const ext_t *src 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t  DX_HIDE_IF_PTR (ext_t) read(volatile uint64_t &position 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int unsigned int unsigned int ext_t  DX_HIDE_IF_PTR (ext_t) read(ext_t *dst 
uint64_t  empty () 
uint64_t  empty (volatile uint64_t &position) 
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) 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int src_t bool  force_write (src_t *const *const *src, unsigned int clients, unsigned int channels=1, uint64_t bulk=1) 
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 callback_t >  
void  move (callback_t &callback, uint64_t max) 
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...  
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) 
Public Attributes  
uint64_t  bulk 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t  bulk =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t  bulk =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t  bulk =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t  bulk =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t  bulk =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t  bulk =1 
uint64_t unsigned int  channels_circular =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int  channels_circular =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int  channels_circular =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int  channels_circular =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int  channels_circular =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int  channels_circular =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int  channels_circular =1 
uint64_t unsigned int unsigned int  channels_dst =1 
uint64_t unsigned int unsigned int unsigned int  circular_offset =0 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int  circular_offset =0 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int  circular_offset =0 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int  circular_offset =0 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int  circular_offset =0 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int unsigned int  circular_offset =0 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int  circular_offset =0 
char  data [1] 
volatile uint64_t  dropout 
drop out counter More...  
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t *  dst 
uint64_t unsigned int unsigned int unsigned int unsigned int  interleaved 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int  interleaved 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int  interleaved 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int  interleaved 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int  interleaved 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int unsigned int unsigned int  interleaved 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int  interleaved 
volatile uint64_t  rx 
single consumers current read index More...  
uint64_t  size 
size of buffer in bytes More...  
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t *  src 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t *  src 
volatile int64_t  timestamp 
current rx/tx timestamp More...  
volatile uint64_t  tx 
producers current write index More...  
struct {  
volatile uint64_t count  
buffer wrap count More...  
volatile int64_t timestamp  
timestamp of last buffer wrap More...  
}  zero 
kernel/user space shared circular buffer
this buffer is nonblocking for singleconsumer/singleproducer 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.

strong 
dx::circular::DX_HIDE_IF_PTR  (  ext_t  )  const 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t dx::circular::DX_HIDE_IF_PTR  (  ext_t  )  volatile 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t dx::circular::DX_HIDE_IF_PTR  (  ext_t  )  const 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t dx::circular::DX_HIDE_IF_PTR  (  ext_t  )  volatile 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t dx::circular::DX_HIDE_IF_PTR  (  ext_t  )  const 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t dx::circular::DX_HIDE_IF_PTR  (  ext_t  )  volatile 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int unsigned int unsigned int ext_t dx::circular::DX_HIDE_IF_PTR  (  ext_t  ) 

inline 

inline 
multi channel interleaved bulk write into circular buffer with format conversion if applicable
return true if data fit into circular space

inline 

inline 

inline 

inline 

inline 

inline 

inline 

inline 
multi channel interleaved bulk read from circular buffer with format conversion if applicable
return true if enough data is available in circular space

inline 

inline 
bulk write into circular buffer with format conversion if applicable
return true if data fit into empty space

inline 
uint64_t dx::circular::bulk 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t dx::circular::bulk =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t dx::circular::bulk =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t dx::circular::bulk =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t dx::circular::bulk =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t dx::circular::bulk =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t dx::circular::bulk =1 
uint64_t unsigned int dx::circular::channels_circular =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int dx::circular::channels_circular =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int dx::circular::channels_circular =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int dx::circular::channels_circular =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int dx::circular::channels_circular =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int dx::circular::channels_circular =1 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int dx::circular::channels_circular =1 
uint64_t unsigned int unsigned int dx::circular::channels_dst =1 
uint64_t unsigned int unsigned int unsigned int dx::circular::circular_offset =0 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int dx::circular::circular_offset =0 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int dx::circular::circular_offset =0 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int dx::circular::circular_offset =0 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int dx::circular::circular_offset =0 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int unsigned int dx::circular::circular_offset =0 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int dx::circular::circular_offset =0 
volatile uint64_t dx::circular::count 
buffer wrap count
char dx::circular::data[1] 
volatile uint64_t dx::circular::dropout 
drop out counter
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t* dx::circular::dst 
uint64_t unsigned int unsigned int unsigned int unsigned int dx::circular::interleaved 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int dx::circular::interleaved 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int dx::circular::interleaved 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int dx::circular::interleaved 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int dx::circular::interleaved 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int unsigned int unsigned int dx::circular::interleaved 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int dx::circular::interleaved 
volatile uint64_t dx::circular::rx 
single consumers current read index
uint64_t dx::circular::size 
size of buffer in bytes
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t* dx::circular::src 
uint64_t unsigned int unsigned int unsigned int unsigned int ext_t const ext_t uint64_t unsigned int unsigned int unsigned int ext_t uint64_t unsigned int unsigned int unsigned int ext_t const ext_t* dx::circular::src 
volatile int64_t dx::circular::timestamp 
current rx/tx timestamp
timestamp of last buffer wrap
volatile uint64_t dx::circular::tx 
producers current write index
struct { ... } dx::circular::zero 
(c) copyright 2009 dynamic acoustics e.U.  generated on Wed Jan 22 2020 