Loading...
Searching...
No Matches
gr::buffer_double_mapped Class Reference
Implementation Details

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
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
unsigned int | bufsize () const
| return size of this buffer in items
const char * | base () const
| return the base address of the buffer
virtual void * | write_pointer ()
| return pointer to write buffer.
virtual const void * | _read_pointer (unsigned int read_index)
| return pointer to read buffer.
void | update_write_pointer (int nitems)
| tell buffer that we wrote `nitems` into it
void | set_done (bool done)
bool | done () const
block_sptr | link ()
| Return the block that writes to this buffer.
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.
void | remove_item_tag (const tag_t &tag, long id)
| Removes an existing tag from the buffer.
void | prune_tags (uint64_t max_time)
| Removes all tags before `max_time` from buffer.
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 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.
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.
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.
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.
void | increment_active ()
| Increment the number of active pointers for this buffer.
void | decrement_active ()
| Decrement the number of active pointers for this buffer and signal anyone waiting when the count reaches zero.
void | on_lock (gr::thread::scoped_lock &lock) override
| "on_lock" function from the custom_lock_if.
void | on_unlock () override
| "on_unlock" function from the custom_lock_if.
void | set_transfer_type (const transfer_type &type)
| Assign buffer's transfer_type.
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.
unsigned | index_sub (unsigned a, unsigned b) override
| Decrement read or write index for this buffer.
Protected Member Functions inherited from gr::buffer
| 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.
void | drop_reader (buffer_reader *reader)
| disassociate `reader` from this buffer

## 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

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

override protected virtual

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

Reimplemented from gr::buffer.

## index_add()

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

inline override protected virtual

Increment read or write index for this buffer.

Implements gr::buffer.

References gr::buffer::d_bufsize.

## index_sub()

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

inline override protected virtual

Decrement read or write index for this buffer.

Implements gr::buffer.

References gr::buffer::d_bufsize.

## make_buffer()

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

References gr::buffer::link().

## post_work()

void gr::buffer_double_mapped::post_work | ( | int | nitems | ) |

inline override virtual

Inherited from buffer class.

Parameters

  nitems | is the number of items produced by the general_work() function.

Implements gr::buffer.

## space_available()

int gr::buffer_double_mapped::space_available | ( |  | ) |

override virtual

return number of items worth of space available for writing

Implements gr::buffer.

## Friends And Related Symbol Documentation

## buffer_reader

friend class buffer_reader

friend

References buffer_reader.

Referenced by buffer_reader.

## 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

References GR_RUNTIME_API, and gr::buffer::link().

## 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

References gr::buffer::link().

## 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

Referenced by gr::io_signature::make(), gr::io_signature::make(), gr::io_signature::make2(), and gr::io_signature::make3().

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

- buffer_double_mapped.h