23 #ifndef INCLUDED_GR_RUNTIME_BLOCK_H
24 #define INCLUDED_GR_RUNTIME_BLOCK_H
66 WORK_CALLED_PRODUCE = -2,
85 unsigned history()
const {
return d_history; }
109 virtual void forecast(
int noutput_items,
126 virtual int general_work(
int noutput_items,
139 virtual bool start();
156 void set_output_multiple(
int multiple);
177 void set_alignment(
int multiple);
180 void set_unaligned(
int na);
182 void set_is_unaligned(
bool u);
189 void consume(
int which_input,
int how_many_items);
195 void consume_each(
int how_many_items);
204 void produce(
int which_output,
int how_many_items);
215 void set_relative_rate(
double relative_rate);
234 virtual int fixed_rate_ninput_to_noutput(
int ninput);
241 virtual int fixed_rate_noutput_to_ninput(
int noutput);
246 uint64_t nitems_read(
unsigned int which_input);
251 uint64_t nitems_written(
unsigned int which_output);
284 int max_noutput_items();
292 void set_max_noutput_items(
int m);
309 void unset_max_noutput_items();
315 bool is_set_max_noutput_items();
324 void expand_minmax_buffer(
int port);
329 long max_output_buffer(
size_t i);
334 void set_max_output_buffer(
long max_output_buffer);
339 void set_max_output_buffer(
int port,
long max_output_buffer);
344 long min_output_buffer(
size_t i);
349 void set_min_output_buffer(
long min_output_buffer);
354 void set_min_output_buffer(
int port,
long min_output_buffer);
361 float pc_noutput_items();
366 float pc_noutput_items_avg();
371 float pc_noutput_items_var();
376 float pc_nproduced();
381 float pc_nproduced_avg();
386 float pc_nproduced_var();
391 float pc_input_buffers_full(
int which);
396 float pc_input_buffers_full_avg(
int which);
401 float pc_input_buffers_full_var(
int which);
406 std::vector<float> pc_input_buffers_full();
411 std::vector<float> pc_input_buffers_full_avg();
416 std::vector<float> pc_input_buffers_full_var();
421 float pc_output_buffers_full(
int which);
426 float pc_output_buffers_full_avg(
int which);
431 float pc_output_buffers_full_var(
int which);
436 std::vector<float> pc_output_buffers_full();
441 std::vector<float> pc_output_buffers_full_avg();
446 std::vector<float> pc_output_buffers_full_var();
451 float pc_work_time();
456 float pc_work_time_avg();
461 float pc_work_time_var();
466 void reset_perf_counters();
495 void set_processor_affinity(
const std::vector<int> &mask);
500 void unset_processor_affinity();
510 int active_thread_priority();
525 int d_output_multiple;
526 bool d_output_multiple_set;
529 double d_relative_rate;
533 bool d_max_noutput_items_set;
534 int d_max_noutput_items;
535 int d_min_noutput_items;
537 std::vector<int> d_affinity;
543 block(
const std::string &name,
559 inline void add_item_tag(
unsigned int which_output,
570 this->add_item_tag(which_output, tag);
579 void add_item_tag(
unsigned int which_output,
const tag_t &tag);
593 inline void remove_item_tag(
unsigned int which_input,
604 this->remove_item_tag(which_input, tag);
615 void remove_item_tag(
unsigned int which_input,
const tag_t &tag);
630 void get_tags_in_range(std::vector<tag_t> &v,
631 unsigned int which_input,
650 void get_tags_in_range(std::vector<tag_t> &v,
651 unsigned int which_input,