Single writer, multiple reader fifo. More...
#include <gnuradio/buffer_double_mapped.h>
Public Member Functions | |
~buffer_double_mapped () override | |
int | space_available () override |
return number of items worth of space available for writing More... | |
void | post_work (int nitems) override |
Public Member Functions inherited from gr::buffer | |
~buffer () override | |
buffer_mapping_type | get_mapping_type () |
return the buffer's mapping type More... | |
virtual int | space_available ()=0 |
return number of items worth of space available for writing More... | |
unsigned int | bufsize () const |
return size of this buffer in items More... | |
const char * | base () const |
return the base address of the buffer More... | |
virtual void * | write_pointer () |
return pointer to write buffer. More... | |
virtual const void * | _read_pointer (unsigned int read_index) |
return pointer to read buffer. More... | |
void | update_write_pointer (int nitems) |
tell buffer that we wrote nitems into it More... | |
void | set_done (bool done) |
bool | done () const |
block_sptr | link () |
Return the block that writes to this buffer. More... | |
size_t | nreaders () const |
buffer_reader * | reader (size_t index) |
gr::thread::mutex * | mutex () |
uint64_t | nitems_written () |
void | reset_nitem_counter () |
size_t | get_sizeof_item () |
uint64_t | get_downstream_lcm_nitems () |
uint32_t | get_max_reader_output_multiple () |
virtual void | update_reader_block_history (unsigned history, int delay) |
void | add_item_tag (const tag_t &tag) |
Adds a new tag to the buffer. More... | |
void | remove_item_tag (const tag_t &tag, long id) |
Removes an existing tag from the buffer. More... | |
void | prune_tags (uint64_t max_time) |
Removes all tags before max_time from buffer. More... | |
std::multimap< uint64_t, tag_t >::iterator | get_tags_begin () |
std::multimap< uint64_t, tag_t >::iterator | get_tags_end () |
std::multimap< uint64_t, tag_t >::iterator | get_tags_lower_bound (uint64_t x) |
std::multimap< uint64_t, tag_t >::iterator | get_tags_upper_bound (uint64_t x) |
virtual void | post_work (int nitems)=0 |
Function to be executed after this object's owner completes the call to general_work() More... | |
virtual bool | input_blkd_cb_ready (int items_required, unsigned read_index) |
Returns true when the current thread is ready to call the callback, false otherwise. Note if input_blocked_callback is overridden then this function should also be overridden. More... | |
virtual bool | input_blocked_callback (int items_required, int items_avail, unsigned read_index) |
Callback function that the scheduler will call when it determines that the input is blocked. Override this function if needed. More... | |
virtual bool | output_blkd_cb_ready (int output_multiple) |
Returns true if the current thread is ready to execute output_blocked_callback(), false otherwise. Note if the default output_blocked_callback is overridden this function should also be overridden. More... | |
virtual bool | output_blocked_callback (int output_multiple, bool force=false) |
Callback function that the scheduler will call when it determines that the output is blocked. Override this function if needed. More... | |
void | increment_active () |
Increment the number of active pointers for this buffer. More... | |
void | decrement_active () |
Decrement the number of active pointers for this buffer and signal anyone waiting when the count reaches zero. More... | |
void | on_lock (gr::thread::scoped_lock &lock) override |
"on_lock" function from the custom_lock_if. More... | |
void | on_unlock () override |
"on_unlock" function from the custom_lock_if. More... | |
void | set_transfer_type (const transfer_type &type) |
Assign buffer's transfer_type. More... | |
Public Member Functions inherited from gr::custom_lock_if | |
virtual | ~custom_lock_if () |
virtual void | on_lock (gr::thread::scoped_lock &lock)=0 |
virtual void | on_unlock ()=0 |
Static Public Member Functions | |
static buffer_sptr | make_buffer (int nitems, size_t sizeof_item, uint64_t downstream_lcm_nitems, uint32_t downstream_max_out_mult, block_sptr link=block_sptr(), block_sptr buf_owner=block_sptr()) |
Public Attributes | |
gr::logger_ptr | d_logger |
gr::logger_ptr | d_debug_logger |
Public Attributes inherited from gr::buffer | |
gr::logger_ptr | d_logger |
gr::logger_ptr | d_debug_logger |
Static Public Attributes | |
static buffer_type | type |
Protected Member Functions | |
bool | allocate_buffer (int nitems) override |
unsigned | index_add (unsigned a, unsigned b) override |
Increment read or write index for this buffer. More... | |
unsigned | index_sub (unsigned a, unsigned b) override |
Decrement read or write index for this buffer. More... | |
Protected Member Functions inherited from gr::buffer | |
virtual unsigned | index_add (unsigned a, unsigned b)=0 |
Increment read or write index for this buffer. More... | |
virtual unsigned | index_sub (unsigned a, unsigned b)=0 |
Decrement read or write index for this buffer. More... | |
virtual bool | allocate_buffer (int nitems) |
buffer (buffer_mapping_type buftype, int nitems, size_t sizeof_item, uint64_t downstream_lcm_nitems, uint32_t downstream_max_out_mult, block_sptr link) | |
constructor is private. Use gr_make_buffer to create instances. More... | |
void | drop_reader (buffer_reader *reader) |
disassociate reader from this buffer More... | |
Friends | |
class | buffer_reader |
GR_RUNTIME_API buffer_sptr | make_buffer (int nitems, size_t sizeof_item, uint64_t downstream_lcm_nitems, block_sptr link, block_sptr buf_owner) |
GR_RUNTIME_API buffer_sptr | make_buffer_double_mapped (int nitems, size_t sizeof_item, uint64_t downstream_lcm_nitems, uint32_t downstream_max_out_mult, block_sptr link, block_sptr buf_owner) |
Additional Inherited Members | |
Protected Attributes inherited from gr::buffer | |
char * | d_base |
unsigned int | d_bufsize |
buffer_mapping_type | d_buf_map_type |
unsigned | d_max_reader_delay |
unsigned | d_max_reader_history |
bool | d_has_history |
size_t | d_sizeof_item |
std::vector< buffer_reader * > | d_readers |
std::weak_ptr< block > | d_link |
gr::thread::mutex | d_mutex |
unsigned int | d_write_index |
uint64_t | d_abs_write_offset |
bool | d_done |
std::multimap< uint64_t, tag_t > | d_item_tags |
uint64_t | d_last_min_items_read |
gr::thread::condition_variable | d_cv |
bool | d_callback_flag |
uint32_t | d_active_pointer_counter |
uint64_t | d_downstream_lcm_nitems |
uint64_t | d_write_multiple |
uint32_t | d_max_reader_output_multiple |
transfer_type | d_transfer_type |
Single writer, multiple reader fifo.
|
override |
|
overrideprotectedvirtual |
sets d_vmcircbuf, d_base, d_bufsize. returns true iff successful.
Reimplemented from gr::buffer.
|
inlineoverrideprotectedvirtual |
Increment read or write index for this buffer.
Implements gr::buffer.
|
inlineoverrideprotectedvirtual |
Decrement read or write index for this buffer.
Implements gr::buffer.
|
static |
|
inlineoverridevirtual |
Inherited from buffer class.
nitems | is the number of items produced by the general_work() function. |
Implements gr::buffer.
|
overridevirtual |
return number of items worth of space available for writing
Implements gr::buffer.
|
friend |
|
friend |
|
friend |
gr::logger_ptr gr::buffer_double_mapped::d_debug_logger |
gr::logger_ptr gr::buffer_double_mapped::d_logger |
|
static |