11 #ifndef INCLUDED_GR_RUNTIME_BUFFER_SINGLE_MAPPED_H 12 #define INCLUDED_GR_RUNTIME_BUFFER_SINGLE_MAPPED_H 45 int space_available()
override;
47 void update_reader_block_history(
unsigned history,
int delay)
override;
53 bool input_blkd_cb_ready(
int items_required,
unsigned read_index)
override;
59 bool input_blocked_callback(
int items_required,
61 unsigned read_index)
override = 0;
66 bool output_blkd_cb_ready(
int output_multiple)
override;
72 bool output_blocked_callback(
int output_multiple,
bool force)
override = 0;
80 bool allocate_buffer(
int nitems)
override;
86 virtual bool do_allocate_buffer(
size_t final_nitems,
size_t sizeof_item) = 0;
95 assert(s < d_bufsize);
107 assert((
unsigned)s < d_bufsize);
116 uint64_t downstream_lcm_nitems,
118 block_sptr buf_owner);
145 uint64_t downstream_lcm_nitems,
146 uint32_t downstream_max_out_mult,
148 block_sptr buf_owner);
176 virtual bool input_blocked_callback_logic(
int items_required,
206 virtual bool output_blocked_callback_logic(
int output_multiple,
How we keep track of the readers of a gr::buffer.
Definition: buffer_reader.h:48
gr::logger_ptr d_debug_logger
Definition: buffer_single_mapped.h:33
std::shared_ptr< logger > logger_ptr
Definition: logger.h:250
block_sptr buf_owner()
Return the block that owns this buffer.
Definition: buffer_single_mapped.h:40
unsigned index_add(unsigned a, unsigned b) override
Increment read or write index for this buffer.
Definition: buffer_single_mapped.h:88
unsigned index_sub(unsigned a, unsigned b) override
Decrement read or write index for this buffer.
Definition: buffer_single_mapped.h:99
block_sptr d_buf_owner
Definition: buffer_single_mapped.h:120
GR_RUNTIME_API 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())
Allocate a buffer that holds at least nitems of size sizeof_item.
#define GR_RUNTIME_API
Definition: gnuradio-runtime/include/gnuradio/api.h:18
A single mapped buffer where wrapping conditions are handled explicitly via input/output_blocked_call...
Definition: buffer_single_mapped.h:29
gr::logger_ptr d_logger
Definition: buffer_single_mapped.h:32
Single writer, multiple reader fifo.
Definition: buffer.h:66
GNU Radio logging wrapper.
Definition: basic_block.h:29
std::unique_ptr< char[]> d_buffer
Definition: buffer_single_mapped.h:122
std::function< void *(void *, const void *, std::size_t)> mem_func_t
Definition: buffer.h:36