summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/lib
diff options
context:
space:
mode:
authorTom Rondeau <trondeau@vt.edu>2013-07-15 15:15:41 -0400
committerTom Rondeau <tom@trondeau.com>2013-07-17 18:04:15 -0400
commit2a0b62dd7d73ad595d60fe2d2ede96befe9c65e6 (patch)
treebad9364f4ac617d35e6669aacc4e0153c81fe722 /gnuradio-runtime/lib
parentb2cfe7d00a5c89670d16fd491af51ea3d8a2373e (diff)
runtime: added support for setting thread affinity to all blocks under a hier_block2.
grc: added field to all blocks to set the thread affinity to a list of processors. docs: updated docs on thread affinity for new features. Conflicts: grc/base/Block.py grc/python/flow_graph.tmpl
Diffstat (limited to 'gnuradio-runtime/lib')
-rw-r--r--gnuradio-runtime/lib/hier_block2.cc18
-rw-r--r--gnuradio-runtime/lib/hier_block2_detail.cc25
-rw-r--r--gnuradio-runtime/lib/hier_block2_detail.h4
3 files changed, 47 insertions, 0 deletions
diff --git a/gnuradio-runtime/lib/hier_block2.cc b/gnuradio-runtime/lib/hier_block2.cc
index f26da18e54..e0acba30a0 100644
--- a/gnuradio-runtime/lib/hier_block2.cc
+++ b/gnuradio-runtime/lib/hier_block2.cc
@@ -157,4 +157,22 @@ namespace gr {
return new_ffg;
}
+ void
+ hier_block2::set_processor_affinity(const std::vector<int> &mask)
+ {
+ d_detail->set_processor_affinity(mask);
+ }
+
+ void
+ hier_block2::unset_processor_affinity()
+ {
+ d_detail->unset_processor_affinity();
+ }
+
+ std::vector<int>
+ hier_block2::processor_affinity()
+ {
+ return d_detail->processor_affinity();
+ }
+
} /* namespace gr */
diff --git a/gnuradio-runtime/lib/hier_block2_detail.cc b/gnuradio-runtime/lib/hier_block2_detail.cc
index 83207d978c..85b848101c 100644
--- a/gnuradio-runtime/lib/hier_block2_detail.cc
+++ b/gnuradio-runtime/lib/hier_block2_detail.cc
@@ -654,4 +654,29 @@ namespace gr {
d_owner->unlock();
}
+ void
+ hier_block2_detail::set_processor_affinity(const std::vector<int> &mask)
+ {
+ basic_block_vector_t tmp = d_fg->calc_used_blocks();
+ for(basic_block_viter_t p = tmp.begin(); p != tmp.end(); p++) {
+ (*p)->set_processor_affinity(mask);
+ }
+ }
+
+ void
+ hier_block2_detail::unset_processor_affinity()
+ {
+ basic_block_vector_t tmp = d_fg->calc_used_blocks();
+ for(basic_block_viter_t p = tmp.begin(); p != tmp.end(); p++) {
+ (*p)->unset_processor_affinity();
+ }
+ }
+
+ std::vector<int>
+ hier_block2_detail::processor_affinity()
+ {
+ basic_block_vector_t tmp = d_fg->calc_used_blocks();
+ return tmp[0]->processor_affinity();
+ }
+
} /* namespace gr */
diff --git a/gnuradio-runtime/lib/hier_block2_detail.h b/gnuradio-runtime/lib/hier_block2_detail.h
index 99bf6e8ef1..806738360f 100644
--- a/gnuradio-runtime/lib/hier_block2_detail.h
+++ b/gnuradio-runtime/lib/hier_block2_detail.h
@@ -54,6 +54,10 @@ namespace gr {
void unlock();
void flatten_aux(flat_flowgraph_sptr sfg) const;
+ void set_processor_affinity(const std::vector<int> &mask);
+ void unset_processor_affinity();
+ std::vector<int> processor_affinity();
+
private:
// Private implementation data
hier_block2 *d_owner;