Implementation details to support the signal processing abstraction. More...
#include <gnuradio/block_detail.h>
Public Member Functions | |
~block_detail () | |
int | ninputs () const |
int | noutputs () const |
bool | sink_p () const |
bool | source_p () const |
void | set_done (bool done) |
bool | done () const |
void | set_input (unsigned int which, buffer_reader_sptr reader) |
buffer_reader_sptr | input (unsigned int which) |
void | set_output (unsigned int which, buffer_sptr buffer) |
buffer_sptr | output (unsigned int which) |
void | consume (int which_input, int how_many_items) |
Tell the scheduler how_many_items of input stream which_input were consumed. More... | |
void | consume_each (int how_many_items) |
Tell the scheduler how_many_items were consumed on each input stream. More... | |
void | produce (int which_output, int how_many_items) |
Tell the scheduler how_many_items were produced on output stream which_output . More... | |
void | produce_each (int how_many_items) |
Tell the scheduler how_many_items were produced on each output stream. More... | |
uint64_t | nitems_read (unsigned int which_input) |
uint64_t | nitems_written (unsigned int which_output) |
void | reset_nitem_counters () |
void | clear_tags () |
void | add_item_tag (unsigned int which_output, const tag_t &tag) |
Adds a new tag to the given output stream. More... | |
void | remove_item_tag (unsigned int which_input, const tag_t &tag, long id) |
Removes a tag from the given input stream. More... | |
void | get_tags_in_range (std::vector< tag_t > &v, unsigned int which_input, uint64_t abs_start, uint64_t abs_end, long id) |
Given a [start,end), returns a vector of all tags in the range. More... | |
void | get_tags_in_range (std::vector< tag_t > &v, unsigned int which_input, uint64_t abs_start, uint64_t abs_end, const pmt::pmt_t &key, long id) |
Given a [start,end), returns a vector of all tags in the range with a given key. More... | |
void | set_processor_affinity (const std::vector< int > &mask) |
Set core affinity of block to the cores in the vector mask. More... | |
void | unset_processor_affinity () |
Unset core affinity. More... | |
int | thread_priority () |
Get the current thread priority. More... | |
int | set_thread_priority (int priority) |
Set the current thread priority. More... | |
void | post_work_cleanup () |
void | start_perf_counters () |
void | stop_perf_counters (int noutput_items, int nproduced) |
void | reset_perf_counters () |
float | pc_noutput_items () |
float | pc_nproduced () |
float | pc_input_buffers_full (size_t which) |
std::vector< float > | pc_input_buffers_full () |
float | pc_output_buffers_full (size_t which) |
std::vector< float > | pc_output_buffers_full () |
float | pc_work_time () |
float | pc_noutput_items_avg () |
float | pc_nproduced_avg () |
float | pc_input_buffers_full_avg (size_t which) |
std::vector< float > | pc_input_buffers_full_avg () |
float | pc_output_buffers_full_avg (size_t which) |
std::vector< float > | pc_output_buffers_full_avg () |
float | pc_work_time_avg () |
float | pc_throughput_avg () |
float | pc_noutput_items_var () |
float | pc_nproduced_var () |
float | pc_input_buffers_full_var (size_t which) |
std::vector< float > | pc_input_buffers_full_var () |
float | pc_output_buffers_full_var (size_t which) |
std::vector< float > | pc_output_buffers_full_var () |
float | pc_work_time_var () |
float | pc_work_time_total () |
int | consumed () const |
Public Attributes | |
bool | threaded |
gr::thread::gr_thread_t | thread |
tpb_detail | d_tpb |
int | d_produce_or |
gr::logger_ptr | d_logger |
gr::logger_ptr | d_debug_logger |
Friends | |
struct | tpb_detail |
GR_RUNTIME_API block_detail_sptr | make_block_detail (unsigned int ninputs, unsigned int noutputs) |
Implementation details to support the signal processing abstraction.
This class contains implementation detail that should be "out of sight" of almost all users of GNU Radio. This decoupling also means that we can make changes to the guts without having to recompile everything.
gr::block_detail::~block_detail | ( | ) |
void gr::block_detail::add_item_tag | ( | unsigned int | which_output, |
const tag_t & | tag | ||
) |
Adds a new tag to the given output stream.
Calls gr::buffer::add_item_tag(), which appends the tag onto its deque.
which_output | an integer of which output stream to attach the tag |
tag | the tag object to add |
void gr::block_detail::clear_tags | ( | ) |
void gr::block_detail::consume | ( | int | which_input, |
int | how_many_items | ||
) |
Tell the scheduler how_many_items
of input stream which_input
were consumed.
void gr::block_detail::consume_each | ( | int | how_many_items | ) |
Tell the scheduler how_many_items
were consumed on each input stream.
int gr::block_detail::consumed | ( | ) | const |
|
inline |
void gr::block_detail::get_tags_in_range | ( | std::vector< tag_t > & | v, |
unsigned int | which_input, | ||
uint64_t | abs_start, | ||
uint64_t | abs_end, | ||
const pmt::pmt_t & | key, | ||
long | id | ||
) |
Given a [start,end), returns a vector of all tags in the range with a given key.
Calls get_tags_in_range(which_input, abs_start, abs_end) to get a vector of tags from the buffers. This function then provides a secondary filter to the tags to extract only tags with the given 'key'.
Tags are tuples of: (item count, source id, key, value)
v | a vector reference to return tags into |
which_input | an integer of which input stream to pull from |
abs_start | a uint64 count of the start of the range of interest |
abs_end | a uint64 count of the end of the range of interest |
key | a PMT symbol to select only tags of this key |
id | Block ID |
void gr::block_detail::get_tags_in_range | ( | std::vector< tag_t > & | v, |
unsigned int | which_input, | ||
uint64_t | abs_start, | ||
uint64_t | abs_end, | ||
long | id | ||
) |
Given a [start,end), returns a vector of all tags in the range.
Pass-through function to gr::buffer_reader to get a vector of tags in given range. Range of counts is from start to end-1.
Tags are tuples of: (item count, source id, key, value)
v | a vector reference to return tags into |
which_input | an integer of which input stream to pull from |
abs_start | a uint64 count of the start of the range of interest |
abs_end | a uint64 count of the end of the range of interest |
id | Block ID |
|
inline |
|
inline |
uint64_t gr::block_detail::nitems_read | ( | unsigned int | which_input | ) |
uint64_t gr::block_detail::nitems_written | ( | unsigned int | which_output | ) |
|
inline |
|
inline |
std::vector<float> gr::block_detail::pc_input_buffers_full | ( | ) |
float gr::block_detail::pc_input_buffers_full | ( | size_t | which | ) |
std::vector<float> gr::block_detail::pc_input_buffers_full_avg | ( | ) |
float gr::block_detail::pc_input_buffers_full_avg | ( | size_t | which | ) |
std::vector<float> gr::block_detail::pc_input_buffers_full_var | ( | ) |
float gr::block_detail::pc_input_buffers_full_var | ( | size_t | which | ) |
float gr::block_detail::pc_noutput_items | ( | ) |
float gr::block_detail::pc_noutput_items_avg | ( | ) |
float gr::block_detail::pc_noutput_items_var | ( | ) |
float gr::block_detail::pc_nproduced | ( | ) |
float gr::block_detail::pc_nproduced_avg | ( | ) |
float gr::block_detail::pc_nproduced_var | ( | ) |
std::vector<float> gr::block_detail::pc_output_buffers_full | ( | ) |
float gr::block_detail::pc_output_buffers_full | ( | size_t | which | ) |
std::vector<float> gr::block_detail::pc_output_buffers_full_avg | ( | ) |
float gr::block_detail::pc_output_buffers_full_avg | ( | size_t | which | ) |
std::vector<float> gr::block_detail::pc_output_buffers_full_var | ( | ) |
float gr::block_detail::pc_output_buffers_full_var | ( | size_t | which | ) |
float gr::block_detail::pc_throughput_avg | ( | ) |
float gr::block_detail::pc_work_time | ( | ) |
float gr::block_detail::pc_work_time_avg | ( | ) |
float gr::block_detail::pc_work_time_total | ( | ) |
float gr::block_detail::pc_work_time_var | ( | ) |
|
inline |
Post general_work() cleanup to decrement the active counts for all inputs and outputs.
void gr::block_detail::produce | ( | int | which_output, |
int | how_many_items | ||
) |
Tell the scheduler how_many_items
were produced on output stream which_output
.
void gr::block_detail::produce_each | ( | int | how_many_items | ) |
Tell the scheduler how_many_items
were produced on each output stream.
void gr::block_detail::remove_item_tag | ( | unsigned int | which_input, |
const tag_t & | tag, | ||
long | id | ||
) |
Removes a tag from the given input stream.
Calls gr::buffer::remove_item_tag(). The tag in question will then no longer appear on subsequent calls of get_tags_in_range().
which_input | an integer of which input stream to remove the tag from |
tag | the tag object to add |
id | The unique block ID (use gr::block::unique_id()) |
void gr::block_detail::reset_nitem_counters | ( | ) |
void gr::block_detail::reset_perf_counters | ( | ) |
void gr::block_detail::set_done | ( | bool | done | ) |
void gr::block_detail::set_input | ( | unsigned int | which, |
buffer_reader_sptr | reader | ||
) |
void gr::block_detail::set_output | ( | unsigned int | which, |
buffer_sptr | buffer | ||
) |
void gr::block_detail::set_processor_affinity | ( | const std::vector< int > & | mask | ) |
Set core affinity of block to the cores in the vector mask.
mask | a vector of ints of the core numbers available to this block. |
int gr::block_detail::set_thread_priority | ( | int | priority | ) |
Set the current thread priority.
priority | the new thread priority to set |
|
inline |
|
inline |
void gr::block_detail::start_perf_counters | ( | ) |
void gr::block_detail::stop_perf_counters | ( | int | noutput_items, |
int | nproduced | ||
) |
int gr::block_detail::thread_priority | ( | ) |
Get the current thread priority.
void gr::block_detail::unset_processor_affinity | ( | ) |
Unset core affinity.
|
friend |
|
friend |
gr::logger_ptr gr::block_detail::d_debug_logger |
gr::logger_ptr gr::block_detail::d_logger |
int gr::block_detail::d_produce_or |
tpb_detail gr::block_detail::d_tpb |
gr::thread::gr_thread_t gr::block_detail::thread |
bool gr::block_detail::threaded |