diff options
author | Tom Rondeau <trondeau@vt.edu> | 2013-07-15 15:15:41 -0400 |
---|---|---|
committer | Tom Rondeau <tom@trondeau.com> | 2013-07-17 18:04:15 -0400 |
commit | 2a0b62dd7d73ad595d60fe2d2ede96befe9c65e6 (patch) | |
tree | bad9364f4ac617d35e6669aacc4e0153c81fe722 /gnuradio-runtime/lib | |
parent | b2cfe7d00a5c89670d16fd491af51ea3d8a2373e (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.cc | 18 | ||||
-rw-r--r-- | gnuradio-runtime/lib/hier_block2_detail.cc | 25 | ||||
-rw-r--r-- | gnuradio-runtime/lib/hier_block2_detail.h | 4 |
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; |