23 #ifndef INCLUDED_GR_RUNTIME_BLOCK_H
24 #define INCLUDED_GR_RUNTIME_BLOCK_H
66 WORK_CALLED_PRODUCE = -2,
85 unsigned history()
const;
86 void set_history(
unsigned history);
107 void declare_sample_delay(
int which,
unsigned delay);
113 void declare_sample_delay(
unsigned delay);
123 unsigned sample_delay(
int which)
const;
146 virtual void forecast(
int noutput_items,
163 virtual int general_work(
int noutput_items,
176 virtual bool start();
193 void set_output_multiple(
int multiple);
214 void set_alignment(
int multiple);
217 void set_unaligned(
int na);
219 void set_is_unaligned(
bool u);
226 void consume(
int which_input,
int how_many_items);
232 void consume_each(
int how_many_items);
241 void produce(
int which_output,
int how_many_items);
252 void set_relative_rate(
double relative_rate);
271 virtual int fixed_rate_ninput_to_noutput(
int ninput);
278 virtual int fixed_rate_noutput_to_ninput(
int noutput);
283 uint64_t nitems_read(
unsigned int which_input);
288 uint64_t nitems_written(
unsigned int which_output);
321 int max_noutput_items();
329 void set_max_noutput_items(
int m);
346 void unset_max_noutput_items();
352 bool is_set_max_noutput_items();
361 void expand_minmax_buffer(
int port);
366 long max_output_buffer(
size_t i);
371 void set_max_output_buffer(
long max_output_buffer);
376 void set_max_output_buffer(
int port,
long max_output_buffer);
381 long min_output_buffer(
size_t i);
386 void set_min_output_buffer(
long min_output_buffer);
391 void set_min_output_buffer(
int port,
long min_output_buffer);
398 float pc_noutput_items();
403 float pc_noutput_items_avg();
408 float pc_noutput_items_var();
413 float pc_nproduced();
418 float pc_nproduced_avg();
423 float pc_nproduced_var();
428 float pc_input_buffers_full(
int which);
433 float pc_input_buffers_full_avg(
int which);
438 float pc_input_buffers_full_var(
int which);
443 std::vector<float> pc_input_buffers_full();
448 std::vector<float> pc_input_buffers_full_avg();
453 std::vector<float> pc_input_buffers_full_var();
458 float pc_output_buffers_full(
int which);
463 float pc_output_buffers_full_avg(
int which);
468 float pc_output_buffers_full_var(
int which);
473 std::vector<float> pc_output_buffers_full();
478 std::vector<float> pc_output_buffers_full_avg();
483 std::vector<float> pc_output_buffers_full_var();
488 float pc_work_time();
493 float pc_work_time_avg();
498 float pc_work_time_var();
503 float pc_work_time_total();
508 void reset_perf_counters();
537 void set_processor_affinity(
const std::vector<int> &mask);
542 void unset_processor_affinity();
552 int active_thread_priority();
564 bool update_rate()
const;
569 int d_output_multiple;
570 bool d_output_multiple_set;
573 double d_relative_rate;
576 unsigned d_attr_delay;
578 bool d_max_noutput_items_set;
579 int d_max_noutput_items;
580 int d_min_noutput_items;
582 std::vector<int> d_affinity;
589 block(
const std::string &name,
605 inline void add_item_tag(
unsigned int which_output,
616 this->add_item_tag(which_output, tag);
625 void add_item_tag(
unsigned int which_output,
const tag_t &tag);
639 inline void remove_item_tag(
unsigned int which_input,
650 this->remove_item_tag(which_input, tag);
661 void remove_item_tag(
unsigned int which_input,
const tag_t &tag);
676 void get_tags_in_range(std::vector<tag_t> &v,
677 unsigned int which_input,
696 void get_tags_in_range(std::vector<tag_t> &v,
697 unsigned int which_input,
723 void get_tags_in_window(std::vector<tag_t> &v,
724 unsigned int which_input,
740 void get_tags_in_window(std::vector<tag_t> &v,
741 unsigned int which_input,
746 void enable_update_rate(
bool en);