11 #ifndef INCLUDED_GR_RUNTIME_BLOCK_DETAIL_H 12 #define INCLUDED_GR_RUNTIME_BLOCK_DETAIL_H 42 bool sink_p()
const {
return d_noutputs == 0; }
43 bool source_p()
const {
return d_ninputs == 0; }
45 void set_done(
bool done);
46 bool done()
const {
return d_done; }
48 void set_input(
unsigned int which, buffer_reader_sptr reader);
49 buffer_reader_sptr
input(
unsigned int which)
51 if (which >= d_ninputs)
52 throw std::invalid_argument(
"block_detail::input");
53 return d_input[which];
56 void set_output(
unsigned int which, buffer_sptr
buffer);
57 buffer_sptr
output(
unsigned int which)
59 if (which >= d_noutputs)
60 throw std::invalid_argument(
"block_detail::output");
61 return d_output[which];
68 void consume(
int which_input,
int how_many_items);
74 void consume_each(
int how_many_items);
80 void produce(
int which_output,
int how_many_items);
86 void produce_each(
int how_many_items);
89 uint64_t nitems_read(
unsigned int which_input);
92 uint64_t nitems_written(
unsigned int which_output);
96 void reset_nitem_counters();
110 void add_item_tag(
unsigned int which_output,
const tag_t& tag);
123 void remove_item_tag(
unsigned int which_input,
const tag_t& tag,
long id);
140 void get_tags_in_range(std::vector<tag_t>&
v,
141 unsigned int which_input,
165 void get_tags_in_range(std::vector<tag_t>&
v,
166 unsigned int which_input,
179 void set_processor_affinity(
const std::vector<int>& mask);
184 void unset_processor_affinity();
205 for (
int i = 0; i < noutputs(); i++)
206 output(i)->decrement_active();
207 for (
int i = 0; i < ninputs(); i++)
208 input(i)->buffer()->decrement_active();
214 void start_perf_counters();
215 void stop_perf_counters(
int noutput_items,
int nproduced);
216 void reset_perf_counters();
219 float pc_noutput_items();
220 float pc_nproduced();
221 float pc_input_buffers_full(
size_t which);
222 std::vector<float> pc_input_buffers_full();
223 float pc_output_buffers_full(
size_t which);
224 std::vector<float> pc_output_buffers_full();
225 float pc_work_time();
227 float pc_noutput_items_avg();
228 float pc_nproduced_avg();
229 float pc_input_buffers_full_avg(
size_t which);
230 std::vector<float> pc_input_buffers_full_avg();
231 float pc_output_buffers_full_avg(
size_t which);
232 std::vector<float> pc_output_buffers_full_avg();
233 float pc_work_time_avg();
234 float pc_throughput_avg();
236 float pc_noutput_items_var();
237 float pc_nproduced_var();
238 float pc_input_buffers_full_var(
size_t which);
239 std::vector<float> pc_input_buffers_full_var();
240 float pc_output_buffers_full_var(
size_t which);
241 std::vector<float> pc_output_buffers_full_var();
242 float pc_work_time_var();
244 float pc_work_time_total();
249 int consumed()
const;
258 unsigned int d_ninputs;
259 unsigned int d_noutputs;
260 std::vector<buffer_reader_sptr> d_input;
261 std::vector<buffer_sptr> d_output;
266 float d_ins_noutput_items;
267 float d_avg_noutput_items;
268 float d_var_noutput_items;
269 float d_total_noutput_items;
272 float d_ins_nproduced;
273 float d_avg_nproduced;
274 float d_var_nproduced;
275 std::vector<float> d_ins_input_buffers_full;
276 std::vector<float> d_avg_input_buffers_full;
277 std::vector<float> d_var_input_buffers_full;
278 std::vector<float> d_ins_output_buffers_full;
279 std::vector<float> d_avg_output_buffers_full;
280 std::vector<float> d_var_output_buffers_full;
282 float d_ins_work_time;
283 float d_avg_work_time;
284 float d_var_work_time;
285 float d_total_work_time;
286 float d_avg_throughput;
289 block_detail(
unsigned int ninputs,
unsigned int noutputs);
294 unsigned int noutputs);
298 unsigned int noutputs);
bool done() const
Definition: block_detail.h:46
buffer_reader_sptr input(unsigned int which)
Definition: block_detail.h:49
std::shared_ptr< logger > logger_ptr
Definition: logger.h:250
GR_RUNTIME_API block_detail_sptr make_block_detail(unsigned int ninputs, unsigned int noutputs)
Implementation details to support the signal processing abstractionThis class contains implementation...
Definition: block_detail.h:35
gr::thread::gr_thread_t thread
Definition: block_detail.h:212
pthread_t gr_thread_t
a system-dependent typedef for the underlying thread type.
Definition: thread.h:50
bool source_p() const
Definition: block_detail.h:43
Definition: cc_common.h:35
#define GR_RUNTIME_API
Definition: gnuradio-runtime/include/gnuradio/api.h:18
GR_RUNTIME_API int set_thread_priority(gr_thread_t thread, int priority)
set current thread priority for a given thread ID
GR_RUNTIME_API long block_detail_ncurrently_allocated()
Single writer, multiple reader fifo.
Definition: buffer.h:66
GNU Radio logging wrapper.
Definition: basic_block.h:29
int d_produce_or
Definition: block_detail.h:247
gr::logger_ptr d_logger
Definition: block_detail.h:253
GR_RUNTIME_API int thread_priority(gr_thread_t thread)
get current thread priority for a given thread ID
void post_work_cleanup()
Definition: block_detail.h:202
signed long long high_res_timer_type
Typedef for the timer tick count.
Definition: high_res_timer.h:40
used by thread-per-block scheduler
Definition: tpb_detail.h:26
bool threaded
Definition: block_detail.h:211
int noutputs() const
Definition: block_detail.h:41
tpb_detail d_tpb
Definition: block_detail.h:246
buffer_sptr output(unsigned int which)
Definition: block_detail.h:57
bool sink_p() const
Definition: block_detail.h:42
int ninputs() const
Definition: block_detail.h:40
std::shared_ptr< pmt_base > pmt_t
typedef for shared pointer (transparent reference counting).
Definition: pmt.h:83