summaryrefslogtreecommitdiff
path: root/gr-analog/lib
diff options
context:
space:
mode:
authorTom Rondeau2013-02-26 12:00:47 -0500
committerTom Rondeau2013-02-26 12:00:47 -0500
commitd8e73d63c0af6ba6810319d866cab07b332d0e42 (patch)
tree3d050079c4046dd904c87b8b55317d58d527b0ab /gr-analog/lib
parentfa00fcc1dda7586024aebbf4caaf6347d3b56ef5 (diff)
downloadgnuradio-d8e73d63c0af6ba6810319d866cab07b332d0e42.tar.gz
gnuradio-d8e73d63c0af6ba6810319d866cab07b332d0e42.tar.bz2
gnuradio-d8e73d63c0af6ba6810319d866cab07b332d0e42.zip
core: adding a mutex as a protected member of gr_block for use in protecting set and work function access to variables.
This is used in gr-analog's noise_source and gr-filter's fir_filter_XXX since these two cause particular problems (in next's channel model). This shows the use of the mutex for general protection when needed.
Diffstat (limited to 'gr-analog/lib')
-rw-r--r--gr-analog/lib/noise_source_X_impl.cc.t16
-rw-r--r--gr-analog/lib/noise_source_X_impl.h.t4
2 files changed, 18 insertions, 2 deletions
diff --git a/gr-analog/lib/noise_source_X_impl.cc.t b/gr-analog/lib/noise_source_X_impl.cc.t
index 35dda9c5d..40e2517d2 100644
--- a/gr-analog/lib/noise_source_X_impl.cc.t
+++ b/gr-analog/lib/noise_source_X_impl.cc.t
@@ -54,11 +54,27 @@ namespace gr {
{
}
+ void
+ @IMPL_NAME@::set_type(noise_type_t type)
+ {
+ gruel::scoped_lock l(d_setlock);
+ d_type = type;
+ }
+
+ void
+ @IMPL_NAME@::set_amplitude(float ampl)
+ {
+ gruel::scoped_lock l(d_setlock);
+ d_ampl = ampl;
+ }
+
int
@IMPL_NAME@::work(int noutput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
+ gruel::scoped_lock l(d_setlock);
+
@TYPE@ *out = (@TYPE@*)output_items[0];
switch(d_type) {
diff --git a/gr-analog/lib/noise_source_X_impl.h.t b/gr-analog/lib/noise_source_X_impl.h.t
index 8bcc1dfde..3a0e8d6d7 100644
--- a/gr-analog/lib/noise_source_X_impl.h.t
+++ b/gr-analog/lib/noise_source_X_impl.h.t
@@ -41,8 +41,8 @@ namespace gr {
@IMPL_NAME@(noise_type_t type, float ampl, long seed = 0);
~@IMPL_NAME@();
- void set_type(noise_type_t type) { d_type = type; }
- void set_amplitude(float ampl) { d_ampl = ampl; }
+ void set_type(noise_type_t type);
+ void set_amplitude(float ampl);
noise_type_t type() const { return d_type; }
float amplitude() const { return d_ampl; }