GNU Radio Manual and C++ API Reference  3.10.9.1
The Free & Open Software Radio Ecosystem
gr::buffer_double_mapped Class Reference

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 ([[maybe_unused]] 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...
 
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_readerreader (size_t index)
 
gr::thread::mutexmutex ()
 
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, [[maybe_unused]] 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 ([[maybe_unused]] int items_required, [[maybe_unused]] 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 ([[maybe_unused]] int items_required, [[maybe_unused]] int items_avail, [[maybe_unused]] 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 ([[maybe_unused]] 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 ([[maybe_unused]] int output_multiple, [[maybe_unused]] 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 ()
 

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 bool allocate_buffer ([[maybe_unused]] 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< blockd_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_td_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
 

Detailed Description

Single writer, multiple reader fifo.

Constructor & Destructor Documentation

◆ ~buffer_double_mapped()

gr::buffer_double_mapped::~buffer_double_mapped ( )
override

Member Function Documentation

◆ allocate_buffer()

bool gr::buffer_double_mapped::allocate_buffer ( int  nitems)
overrideprotected

sets d_vmcircbuf, d_base, d_bufsize. returns true iff successful.

◆ index_add()

unsigned gr::buffer_double_mapped::index_add ( unsigned  a,
unsigned  b 
)
inlineoverrideprotectedvirtual

Increment read or write index for this buffer.

Implements gr::buffer.

◆ index_sub()

unsigned gr::buffer_double_mapped::index_sub ( unsigned  a,
unsigned  b 
)
inlineoverrideprotectedvirtual

Decrement read or write index for this buffer.

Implements gr::buffer.

◆ make_buffer()

static buffer_sptr gr::buffer_double_mapped::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() 
)
static

◆ post_work()

void gr::buffer_double_mapped::post_work ( [[maybe_unused] ] int  nitems)
inlineoverride

Inherited from buffer class.

Parameters
nitemsis the number of items produced by the general_work() function.

◆ space_available()

int gr::buffer_double_mapped::space_available ( )
overridevirtual

return number of items worth of space available for writing

Implements gr::buffer.

Friends And Related Function Documentation

◆ buffer_reader

friend class buffer_reader
friend

◆ make_buffer

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 
)
friend

◆ make_buffer_double_mapped

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 
)
friend

Member Data Documentation

◆ d_debug_logger

gr::logger_ptr gr::buffer_double_mapped::d_debug_logger

◆ d_logger

gr::logger_ptr gr::buffer_double_mapped::d_logger

◆ type

buffer_type gr::buffer_double_mapped::type
static

The documentation for this class was generated from the following file: