summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rondeau <trondeau@vt.edu>2013-03-29 17:31:06 -0400
committerJohnathan Corgan <johnathan@corganlabs.com>2013-04-01 16:23:06 -0700
commitf74d3dae8f2ec423c61932b4ad0359f98b996a51 (patch)
tree1e16eb3537829248c177b04209acce3fe2bead96
parenteea0e411411303ea94953c5cd8454c4139a474ff (diff)
gruel: moved gruel into subdirs of gnuradio-runtime.
PMTs are handled slightly different and are installed into their own module and include dir.
-rw-r--r--CMakeLists.txt5
-rw-r--r--docs/doxygen/Doxyfile.in2
-rw-r--r--docs/doxygen/other/metadata.dox2
-rw-r--r--docs/doxygen/other/pmt.dox4
-rw-r--r--docs/doxygen/other/thread_affinity.dox8
-rw-r--r--gnuradio-runtime/CMakeLists.txt2
-rw-r--r--gnuradio-runtime/apps/CMakeLists.txt1
-rw-r--r--gnuradio-runtime/include/CMakeLists.txt8
-rw-r--r--gnuradio-runtime/include/attributes.h (renamed from gruel/src/include/gruel/attributes.h)6
-rw-r--r--gnuradio-runtime/include/gr_basic_block.h4
-rw-r--r--gnuradio-runtime/include/gr_block.h4
-rw-r--r--gnuradio-runtime/include/gr_block_detail.h6
-rw-r--r--gnuradio-runtime/include/gr_buffer.h8
-rw-r--r--gnuradio-runtime/include/gr_feval.h2
-rw-r--r--gnuradio-runtime/include/gr_msg_accepter.h6
-rw-r--r--gnuradio-runtime/include/gr_msg_queue.h8
-rw-r--r--gnuradio-runtime/include/gr_prefs.h4
-rw-r--r--gnuradio-runtime/include/gr_py_feval.h2
-rw-r--r--gnuradio-runtime/include/gr_realtime.h4
-rw-r--r--gnuradio-runtime/include/gr_runtime_api.h2
-rw-r--r--gnuradio-runtime/include/gr_tags.h2
-rw-r--r--gnuradio-runtime/include/gr_tpb_detail.h16
-rw-r--r--gnuradio-runtime/include/high_res_timer.h (renamed from gruel/src/include/gruel/high_res_timer.h)58
-rw-r--r--gnuradio-runtime/include/messages/CMakeLists.txt31
-rw-r--r--gnuradio-runtime/include/messages/msg_accepter.h56
-rw-r--r--gnuradio-runtime/include/messages/msg_accepter_msgq.h (renamed from gruel/src/include/gruel/msg_accepter_msgq.h)41
-rw-r--r--gnuradio-runtime/include/messages/msg_passing.h123
-rw-r--r--gnuradio-runtime/include/messages/msg_producer.h (renamed from gruel/src/include/gruel/msg_producer.h)51
-rw-r--r--gnuradio-runtime/include/messages/msg_queue.h95
-rw-r--r--gnuradio-runtime/include/pmt/CMakeLists.txt (renamed from gruel/src/python/__init__.py)22
-rw-r--r--gnuradio-runtime/include/pmt/api.h33
-rw-r--r--gnuradio-runtime/include/pmt/pmt.h (renamed from gruel/src/include/gruel/pmt.h)524
-rw-r--r--gnuradio-runtime/include/pmt/pmt_pool.h (renamed from gruel/src/include/gruel/pmt_pool.h)8
-rw-r--r--gnuradio-runtime/include/pmt/pmt_sugar.h (renamed from gruel/src/include/gruel/pmt_sugar.h)13
-rw-r--r--gnuradio-runtime/include/realtime.h (renamed from gruel/src/include/gruel/realtime.h)18
-rw-r--r--gnuradio-runtime/include/rpccallbackregister_base.h8
-rw-r--r--gnuradio-runtime/include/rpcpmtconverters_ice.h2
-rw-r--r--gnuradio-runtime/include/rpcregisterhelpers.h4
-rw-r--r--gnuradio-runtime/include/sys_pri.h (renamed from gruel/src/include/gruel/sys_pri.h)18
-rw-r--r--gnuradio-runtime/include/thread/CMakeLists.txt29
-rw-r--r--gnuradio-runtime/include/thread/thread.h144
-rw-r--r--gnuradio-runtime/include/thread/thread_body_wrapper.h (renamed from gruel/src/include/gruel/thread_body_wrapper.h)75
-rw-r--r--gnuradio-runtime/include/thread/thread_group.h48
-rw-r--r--gnuradio-runtime/lib/CMakeLists.txt11
-rw-r--r--gnuradio-runtime/lib/gr_basic_block.cc6
-rw-r--r--gnuradio-runtime/lib/gr_block_detail.cc12
-rw-r--r--gnuradio-runtime/lib/gr_block_executor.cc6
-rw-r--r--gnuradio-runtime/lib/gr_buffer.cc14
-rw-r--r--gnuradio-runtime/lib/gr_flowgraph.cc1
-rw-r--r--gnuradio-runtime/lib/gr_msg_queue.cc6
-rw-r--r--gnuradio-runtime/lib/gr_realtime.cc3
-rw-r--r--gnuradio-runtime/lib/gr_scheduler_sts.cc4
-rw-r--r--gnuradio-runtime/lib/gr_scheduler_sts.h4
-rw-r--r--gnuradio-runtime/lib/gr_scheduler_tpb.cc4
-rw-r--r--gnuradio-runtime/lib/gr_scheduler_tpb.h4
-rw-r--r--gnuradio-runtime/lib/gr_sptr_magic.cc8
-rw-r--r--gnuradio-runtime/lib/gr_top_block_impl.cc6
-rw-r--r--gnuradio-runtime/lib/gr_top_block_impl.h4
-rw-r--r--gnuradio-runtime/lib/gr_tpb_thread_body.cc10
-rw-r--r--gnuradio-runtime/lib/messages/CMakeLists.txt29
-rw-r--r--gnuradio-runtime/lib/messages/msg_accepter.cc (renamed from gruel/src/lib/msg/msg_accepter.cc)18
-rw-r--r--gnuradio-runtime/lib/messages/msg_accepter_msgq.cc (renamed from gruel/src/lib/msg/msg_accepter_msgq.cc)36
-rw-r--r--gnuradio-runtime/lib/messages/msg_producer.cc (renamed from gruel/src/lib/msg/msg_producer.cc)18
-rw-r--r--gnuradio-runtime/lib/messages/msg_queue.cc105
-rw-r--r--gnuradio-runtime/lib/pmt/CMakeLists.txt (renamed from gruel/src/lib/pmt/CMakeLists.txt)16
-rw-r--r--gnuradio-runtime/lib/pmt/gen-serial-tags.py (renamed from gruel/src/lib/pmt/gen-serial-tags.py)0
-rwxr-xr-xgnuradio-runtime/lib/pmt/generate_unv.py (renamed from gruel/src/lib/pmt/generate_unv.py)4
-rw-r--r--gnuradio-runtime/lib/pmt/pmt-serial-tags.scm (renamed from gruel/src/lib/pmt/pmt-serial-tags.scm)0
-rw-r--r--gnuradio-runtime/lib/pmt/pmt.cc (renamed from gruel/src/lib/pmt/pmt.cc)15
-rw-r--r--gnuradio-runtime/lib/pmt/pmt_int.h (renamed from gruel/src/lib/pmt/pmt_int.h)4
-rw-r--r--gnuradio-runtime/lib/pmt/pmt_io.cc (renamed from gruel/src/lib/pmt/pmt_io.cc)3
-rw-r--r--gnuradio-runtime/lib/pmt/pmt_pool.cc (renamed from gruel/src/lib/pmt/pmt_pool.cc)3
-rw-r--r--gnuradio-runtime/lib/pmt/pmt_serialize.cc (renamed from gruel/src/lib/pmt/pmt_serialize.cc)5
-rw-r--r--gnuradio-runtime/lib/pmt/qa_pmt.cc (renamed from gruel/src/lib/pmt/qa_pmt.cc)0
-rw-r--r--gnuradio-runtime/lib/pmt/qa_pmt.h (renamed from gruel/src/lib/pmt/qa_pmt.h)2
-rw-r--r--gnuradio-runtime/lib/pmt/qa_pmt_prims.cc (renamed from gruel/src/lib/pmt/qa_pmt_prims.cc)16
-rw-r--r--gnuradio-runtime/lib/pmt/qa_pmt_prims.h (renamed from gruel/src/lib/pmt/qa_pmt_prims.h)4
-rw-r--r--gnuradio-runtime/lib/pmt/unv_qa_template.cc.t (renamed from gruel/src/lib/pmt/unv_qa_template.cc.t)0
-rw-r--r--gnuradio-runtime/lib/pmt/unv_template.cc.t (renamed from gruel/src/lib/pmt/unv_template.cc.t)0
-rw-r--r--gnuradio-runtime/lib/pmt/unv_template.h.t (renamed from gruel/src/lib/pmt/unv_template.h.t)0
-rw-r--r--gnuradio-runtime/lib/qa_runtime.h2
-rw-r--r--gnuradio-runtime/lib/qa_sincos.cc2
-rw-r--r--gnuradio-runtime/lib/realtime.cc (renamed from gruel/src/lib/realtime.cc)22
-rw-r--r--gnuradio-runtime/lib/rpcserver_ice.cc2
-rw-r--r--gnuradio-runtime/lib/sys_pri.cc (renamed from gruel/src/lib/sys_pri.cc)8
-rw-r--r--gnuradio-runtime/lib/thread/CMakeLists.txt (renamed from gruel/src/lib/msg/CMakeLists.txt)11
-rw-r--r--gnuradio-runtime/lib/thread/thread.cc238
-rw-r--r--gnuradio-runtime/lib/thread/thread_body_wrapper.cc (renamed from gruel/src/lib/thread_body_wrapper.cc)68
-rw-r--r--gnuradio-runtime/lib/thread/thread_group.cc98
-rw-r--r--gnuradio-runtime/python/CMakeLists.txt1
-rw-r--r--gnuradio-runtime/python/gnuradio/gr/hier_block2.py6
-rw-r--r--gnuradio-runtime/python/gnuradio/gr/tag_utils.py3
-rw-r--r--gnuradio-runtime/python/pmt/CMakeLists.txt (renamed from gruel/src/python/CMakeLists.txt)20
-rw-r--r--gnuradio-runtime/python/pmt/__init__.py (renamed from gruel/src/python/pmt/__init__.py)0
-rw-r--r--gnuradio-runtime/python/pmt/pmt_to_python.py (renamed from gruel/src/python/pmt/pmt_to_python.py)0
-rwxr-xr-xgnuradio-runtime/python/pmt/qa_pmt.py (renamed from gruel/src/python/qa_pmt.py)2
-rwxr-xr-xgnuradio-runtime/python/pmt/qa_pmt_to_python.py (renamed from gruel/src/python/qa_pmt_to_python.py)2
-rw-r--r--gnuradio-runtime/swig/CMakeLists.txt31
-rw-r--r--gnuradio-runtime/swig/gr_basic_block.i1
-rw-r--r--gnuradio-runtime/swig/gr_feval.i2
-rw-r--r--gnuradio-runtime/swig/gr_intrusive_ptr.i (renamed from gruel/src/swig/gr_intrusive_ptr.i)0
-rw-r--r--gnuradio-runtime/swig/gr_realtime.i8
-rw-r--r--gnuradio-runtime/swig/gruel_common.i (renamed from gruel/src/swig/gruel_common.i)0
-rw-r--r--gnuradio-runtime/swig/pmt_swig.i (renamed from gruel/src/swig/pmt_swig.i)12
-rw-r--r--gr-analog/include/analog/api.h2
-rw-r--r--gr-analog/lib/CMakeLists.txt1
-rw-r--r--gr-analog/lib/fastnoise_source_X_impl.cc.t6
-rw-r--r--gr-analog/lib/noise_source_X_impl.cc.t6
-rw-r--r--gr-analog/lib/qa_analog.h2
-rw-r--r--gr-analog/swig/CMakeLists.txt1
-rw-r--r--gr-atsc/include/atsc/api.h2
-rw-r--r--gr-atsc/lib/CMakeLists.txt1
-rw-r--r--gr-atsc/swig/CMakeLists.txt1
-rw-r--r--gr-audio/examples/c++/CMakeLists.txt1
-rw-r--r--gr-audio/include/audio/api.h2
-rw-r--r--gr-audio/lib/CMakeLists.txt1
-rw-r--r--gr-audio/lib/osx/circular_buffer.h24
-rw-r--r--gr-audio/lib/osx/osx_sink.cc8
-rw-r--r--gr-audio/lib/osx/osx_sink.h4
-rw-r--r--gr-audio/lib/osx/osx_source.cc8
-rw-r--r--gr-audio/lib/osx/osx_source.h4
-rw-r--r--gr-audio/lib/portaudio/portaudio_sink.cc6
-rw-r--r--gr-audio/lib/portaudio/portaudio_sink.h6
-rw-r--r--gr-audio/lib/portaudio/portaudio_source.cc8
-rw-r--r--gr-audio/lib/portaudio/portaudio_source.h6
-rw-r--r--gr-audio/swig/CMakeLists.txt1
-rw-r--r--gr-blocks/grc/blocks_message_strobe.xml2
-rw-r--r--gr-blocks/grc/blocks_random_pdu.xml2
-rw-r--r--gr-blocks/include/blocks/api.h2
-rw-r--r--gr-blocks/include/blocks/pdu.h2
-rw-r--r--gr-blocks/lib/CMakeLists.txt1
-rw-r--r--gr-blocks/lib/annotator_raw_impl.cc4
-rw-r--r--gr-blocks/lib/annotator_raw_impl.h4
-rw-r--r--gr-blocks/lib/delay_impl.cc4
-rw-r--r--gr-blocks/lib/delay_impl.h4
-rw-r--r--gr-blocks/lib/file_meta_sink_impl.cc6
-rw-r--r--gr-blocks/lib/file_meta_sink_impl.h4
-rw-r--r--gr-blocks/lib/file_meta_source_impl.cc8
-rw-r--r--gr-blocks/lib/file_meta_source_impl.h6
-rw-r--r--gr-blocks/lib/file_sink_base.cc8
-rw-r--r--gr-blocks/lib/file_source_impl.cc10
-rw-r--r--gr-blocks/lib/message_debug_impl.cc4
-rw-r--r--gr-blocks/lib/message_debug_impl.h6
-rw-r--r--gr-blocks/lib/qa_blocks.h2
-rw-r--r--gr-blocks/lib/qa_rotator.cc2
-rw-r--r--gr-blocks/lib/qa_set_msg_handler.cc2
-rw-r--r--gr-blocks/lib/socket_pdu_impl.cc2
-rw-r--r--gr-blocks/lib/stream_pdu_base.cc2
-rw-r--r--gr-blocks/lib/stream_pdu_base.h6
-rw-r--r--gr-blocks/lib/tag_debug_impl.cc6
-rw-r--r--gr-blocks/lib/tag_debug_impl.h4
-rw-r--r--gr-blocks/lib/tcp_connection.h2
-rw-r--r--gr-blocks/lib/udp_sink_impl.cc6
-rw-r--r--gr-blocks/lib/udp_sink_impl.h2
-rw-r--r--gr-blocks/lib/udp_source_impl.cc8
-rw-r--r--gr-blocks/lib/udp_source_impl.h8
-rw-r--r--gr-blocks/lib/vector_map_impl.cc2
-rw-r--r--gr-blocks/lib/vector_map_impl.h4
-rw-r--r--gr-blocks/lib/wavfile_sink_impl.cc12
-rw-r--r--gr-blocks/python/parse_file_metadata.py7
-rw-r--r--gr-blocks/python/qa_python_message_passing.py3
-rw-r--r--gr-blocks/swig/CMakeLists.txt1
-rw-r--r--gr-blocks/tests/CMakeLists.txt1
-rw-r--r--gr-channels/CMakeLists.txt1
-rw-r--r--gr-channels/include/channels/api.h2
-rw-r--r--gr-channels/lib/CMakeLists.txt1
-rw-r--r--gr-channels/swig/CMakeLists.txt1
-rw-r--r--gr-comedi/include/comedi/api.h2
-rw-r--r--gr-comedi/lib/CMakeLists.txt1
-rw-r--r--gr-comedi/src/CMakeLists.txt1
-rw-r--r--gr-comedi/swig/CMakeLists.txt1
-rw-r--r--gr-digital/include/digital/api.h2
-rw-r--r--gr-digital/lib/CMakeLists.txt1
-rw-r--r--gr-digital/lib/constellation_receiver_cb_impl.h2
-rw-r--r--gr-digital/lib/map_bb_impl.cc4
-rw-r--r--gr-digital/lib/map_bb_impl.h4
-rw-r--r--gr-digital/lib/mpsk_receiver_cc_impl.h2
-rwxr-xr-xgr-digital/python/qa_crc32_bb.py3
-rwxr-xr-xgr-digital/python/qa_header_payload_demux.py3
-rwxr-xr-xgr-digital/python/qa_ofdm_carrier_allocator_cvc.py3
-rwxr-xr-xgr-digital/python/qa_ofdm_chanest_vcvc.py3
-rwxr-xr-xgr-digital/python/qa_ofdm_cyclic_prefixer.py3
-rwxr-xr-xgr-digital/python/qa_ofdm_frame_equalizer_vcvc.py3
-rwxr-xr-xgr-digital/python/qa_ofdm_serializer_vcc.py3
-rwxr-xr-xgr-digital/python/qa_packet_headergenerator_bb.py3
-rwxr-xr-xgr-digital/python/qa_packet_headerparser_b.py3
-rw-r--r--gr-digital/python/utils/tagged_streams.py25
-rw-r--r--gr-digital/swig/CMakeLists.txt1
-rw-r--r--gr-fcd/examples/c++/CMakeLists.txt1
-rw-r--r--gr-fcd/include/fcd/fcd_api.h2
-rw-r--r--gr-fcd/lib/CMakeLists.txt1
-rw-r--r--gr-fcd/lib/fcd_source_c_impl.cc2
-rw-r--r--gr-fcd/swig/CMakeLists.txt1
-rw-r--r--gr-fec/CMakeLists.txt1
-rw-r--r--gr-fec/include/fec/api.h2
-rw-r--r--gr-fec/lib/CMakeLists.txt1
-rw-r--r--gr-fec/swig/CMakeLists.txt1
-rw-r--r--gr-fft/CMakeLists.txt1
-rw-r--r--gr-fft/include/fft/api.h2
-rw-r--r--gr-fft/lib/CMakeLists.txt1
-rw-r--r--gr-fft/swig/CMakeLists.txt1
-rw-r--r--gr-filter/CMakeLists.txt1
-rw-r--r--gr-filter/include/filter/api.h2
-rw-r--r--gr-filter/lib/CMakeLists.txt1
-rw-r--r--gr-filter/lib/fir_filter_XXX_impl.cc.t4
-rw-r--r--gr-filter/lib/pfb_arb_resampler_ccf_impl.cc8
-rw-r--r--gr-filter/lib/pfb_arb_resampler_ccf_impl.h4
-rw-r--r--gr-filter/lib/pfb_arb_resampler_fff_impl.cc8
-rw-r--r--gr-filter/lib/pfb_arb_resampler_fff_impl.h4
-rw-r--r--gr-filter/lib/pfb_channelizer_ccf_impl.cc6
-rw-r--r--gr-filter/lib/pfb_channelizer_ccf_impl.h4
-rw-r--r--gr-filter/lib/pfb_decimator_ccf_impl.cc4
-rw-r--r--gr-filter/lib/pfb_decimator_ccf_impl.h4
-rw-r--r--gr-filter/lib/pfb_interpolator_ccf_impl.cc2
-rw-r--r--gr-filter/lib/pfb_interpolator_ccf_impl.h4
-rw-r--r--gr-filter/lib/pfb_synthesizer_ccf_impl.cc6
-rw-r--r--gr-filter/lib/pfb_synthesizer_ccf_impl.h4
-rw-r--r--gr-filter/lib/qa_filter.h2
-rw-r--r--gr-filter/swig/CMakeLists.txt1
-rw-r--r--gr-noaa/include/noaa/api.h2
-rw-r--r--gr-noaa/lib/CMakeLists.txt1
-rw-r--r--gr-noaa/swig/CMakeLists.txt1
-rw-r--r--gr-pager/include/pager/api.h2
-rw-r--r--gr-pager/lib/CMakeLists.txt1
-rw-r--r--gr-pager/swig/CMakeLists.txt1
-rw-r--r--gr-qtgui/CMakeLists.txt1
-rw-r--r--gr-qtgui/include/qtgui/SpectrumGUIClass.h12
-rw-r--r--gr-qtgui/include/qtgui/TimeRasterDisplayPlot.h2
-rw-r--r--gr-qtgui/include/qtgui/WaterfallDisplayPlot.h8
-rw-r--r--gr-qtgui/include/qtgui/api.h2
-rw-r--r--gr-qtgui/include/qtgui/qtgui_types.h10
-rw-r--r--gr-qtgui/include/qtgui/spectrumUpdateEvents.h20
-rw-r--r--gr-qtgui/lib/CMakeLists.txt1
-rw-r--r--gr-qtgui/lib/SpectrumGUIClass.cc66
-rw-r--r--gr-qtgui/lib/WaterfallDisplayPlot.cc8
-rw-r--r--gr-qtgui/lib/const_sink_c_impl.cc8
-rw-r--r--gr-qtgui/lib/const_sink_c_impl.h10
-rw-r--r--gr-qtgui/lib/freq_sink_c_impl.cc8
-rw-r--r--gr-qtgui/lib/freq_sink_c_impl.h10
-rw-r--r--gr-qtgui/lib/freq_sink_f_impl.cc10
-rw-r--r--gr-qtgui/lib/freq_sink_f_impl.h10
-rw-r--r--gr-qtgui/lib/sink_c_impl.cc10
-rw-r--r--gr-qtgui/lib/sink_c_impl.h6
-rw-r--r--gr-qtgui/lib/sink_f_impl.cc2
-rw-r--r--gr-qtgui/lib/sink_f_impl.h2
-rw-r--r--gr-qtgui/lib/spectrumUpdateEvents.cc12
-rw-r--r--gr-qtgui/lib/spectrumdisplayform.cc4
-rw-r--r--gr-qtgui/lib/time_raster_sink_b_impl.cc6
-rw-r--r--gr-qtgui/lib/time_raster_sink_b_impl.h8
-rw-r--r--gr-qtgui/lib/time_raster_sink_c_impl.cc6
-rw-r--r--gr-qtgui/lib/time_raster_sink_c_impl.h8
-rw-r--r--gr-qtgui/lib/time_raster_sink_f_impl.cc6
-rw-r--r--gr-qtgui/lib/time_raster_sink_f_impl.h8
-rw-r--r--gr-qtgui/lib/time_sink_c_impl.cc10
-rw-r--r--gr-qtgui/lib/time_sink_c_impl.h10
-rw-r--r--gr-qtgui/lib/time_sink_f_impl.cc10
-rw-r--r--gr-qtgui/lib/time_sink_f_impl.h10
-rw-r--r--gr-qtgui/lib/waterfall_sink_c_impl.cc6
-rw-r--r--gr-qtgui/lib/waterfall_sink_c_impl.h8
-rw-r--r--gr-qtgui/lib/waterfall_sink_f_impl.cc6
-rw-r--r--gr-qtgui/lib/waterfall_sink_f_impl.h8
-rw-r--r--gr-qtgui/lib/waterfalldisplayform.cc2
-rw-r--r--gr-qtgui/swig/CMakeLists.txt1
-rw-r--r--gr-shd/lib/CMakeLists.txt1
-rw-r--r--gr-shd/swig/CMakeLists.txt1
-rw-r--r--gr-trellis/include/trellis/api.h2
-rw-r--r--gr-trellis/lib/CMakeLists.txt1
-rw-r--r--gr-trellis/src/lib/CMakeLists.txt1
-rw-r--r--gr-trellis/swig/CMakeLists.txt1
-rw-r--r--gr-uhd/examples/c++/CMakeLists.txt1
-rw-r--r--gr-uhd/lib/CMakeLists.txt1
-rw-r--r--gr-uhd/lib/amsg_source_impl.cc2
-rw-r--r--gr-uhd/lib/amsg_source_impl.h4
-rw-r--r--gr-uhd/swig/CMakeLists.txt1
-rw-r--r--gr-utils/python/gr_read_file_metadata2
-rw-r--r--gr-utils/python/modtool/gr-newmod/CMakeLists.txt4
-rw-r--r--gr-utils/python/modtool/gr-newmod/include/howto/api.h2
-rw-r--r--gr-utils/python/modtool/gr-newmod/lib/qa_howto.h2
-rw-r--r--gr-utils/python/modtool/gr-newmod/swig/CMakeLists.txt4
-rw-r--r--gr-video-sdl/include/video_sdl/api.h2
-rw-r--r--gr-video-sdl/lib/CMakeLists.txt1
-rw-r--r--gr-video-sdl/src/CMakeLists.txt1
-rw-r--r--gr-video-sdl/swig/CMakeLists.txt1
-rw-r--r--gr-vocoder/include/vocoder/api.h2
-rw-r--r--gr-vocoder/lib/CMakeLists.txt1
-rw-r--r--gr-vocoder/swig/CMakeLists.txt1
-rw-r--r--gr-wavelet/include/wavelet/api.h2
-rw-r--r--gr-wavelet/lib/CMakeLists.txt1
-rw-r--r--gr-wavelet/swig/CMakeLists.txt1
-rw-r--r--gr-wxgui/include/wxgui/api.h2
-rw-r--r--gr-wxgui/lib/CMakeLists.txt1
-rw-r--r--gr-wxgui/lib/histo_sink_f_impl.cc6
-rw-r--r--gr-wxgui/lib/histo_sink_f_impl.h2
-rw-r--r--gr-wxgui/swig/CMakeLists.txt1
-rw-r--r--gruel/CMakeLists.txt1
-rw-r--r--gruel/src/include/gruel/api.h2
-rw-r--r--gruel/src/include/gruel/msg_accepter.h53
-rw-r--r--gruel/src/include/gruel/msg_passing.h116
-rw-r--r--gruel/src/include/gruel/msg_queue.h91
-rw-r--r--gruel/src/include/gruel/thread.h139
-rw-r--r--gruel/src/include/gruel/thread_group.h45
-rw-r--r--gruel/src/lib/CMakeLists.txt2
-rw-r--r--gruel/src/lib/msg/msg_queue.cc103
-rw-r--r--gruel/src/lib/thread.cc226
-rw-r--r--gruel/src/lib/thread_group.cc99
305 files changed, 2144 insertions, 1982 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3776a3e9a5..aa55418b1b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -256,10 +256,8 @@ install(
########################################################################
# The following dependency libraries are needed by all gr modules:
########################################################################
-list(APPEND GR_TEST_TARGET_DEPS volk gruel gnuradio-runtime)
+list(APPEND GR_TEST_TARGET_DEPS volk gnuradio-runtime)
list(APPEND GR_TEST_PYTHON_DIRS
- ${CMAKE_SOURCE_DIR}/gruel/src/python
- ${CMAKE_BINARY_DIR}/gruel/src/swig
${CMAKE_BINARY_DIR}/gnuradio-runtime/python
${CMAKE_SOURCE_DIR}/gnuradio-runtime/python
${CMAKE_BINARY_DIR}/gnuradio-runtime/swig
@@ -275,7 +273,6 @@ list(APPEND GR_TEST_PYTHON_DIRS
# Add subdirectories (in order of deps)
########################################################################
add_subdirectory(docs)
-add_subdirectory(gruel)
add_subdirectory(gnuradio-runtime)
add_subdirectory(gr-blocks)
add_subdirectory(grc)
diff --git a/docs/doxygen/Doxyfile.in b/docs/doxygen/Doxyfile.in
index ccd647134b..afb194d1fb 100644
--- a/docs/doxygen/Doxyfile.in
+++ b/docs/doxygen/Doxyfile.in
@@ -1254,7 +1254,7 @@ SEARCH_INCLUDES = YES
# contain include files that are not input files but should be processed by
# the preprocessor.
-INCLUDE_PATH = @abs_top_builddir@/gruel/src/lib/pmt/
+INCLUDE_PATH = @abs_top_builddir@/gnuradio-runtime/lib/pmt/
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
diff --git a/docs/doxygen/other/metadata.dox b/docs/doxygen/other/metadata.dox
index 76553c696a..03ebe591e4 100644
--- a/docs/doxygen/other/metadata.dox
+++ b/docs/doxygen/other/metadata.dox
@@ -309,7 +309,7 @@ into the metadata to keep track of later. The date in this case is
encoded as a vector of uint16 with [day, month, year].
\code
- from gruel import pmt
+ import pmt
from gnuradio import blocks
key = pmt.intern("date")
diff --git a/docs/doxygen/other/pmt.dox b/docs/doxygen/other/pmt.dox
index ba97863a08..04f58aafc8 100644
--- a/docs/doxygen/other/pmt.dox
+++ b/docs/doxygen/other/pmt.dox
@@ -173,7 +173,7 @@ reference to the old dictionary. This just keeps our number of
variables small.
\code
-from gruel import pmt
+import pmt
key0 = pmt.intern("int")
val0 = pmt.from_long(123)
@@ -303,7 +303,7 @@ ready to be written to a file and then deserialize it back to its
original PMT.
\code
-from gruel import pmt
+import pmt
key0 = pmt.intern("int")
val0 = pmt.from_long(123)
diff --git a/docs/doxygen/other/thread_affinity.dox b/docs/doxygen/other/thread_affinity.dox
index 235266febd..2f31d9ce53 100644
--- a/docs/doxygen/other/thread_affinity.dox
+++ b/docs/doxygen/other/thread_affinity.dox
@@ -6,8 +6,8 @@ In the thread-per-block scheduler, you can set the block's core
affinity. Each block can be pinned to a group cores or be set back
to use the standard kernel scheduler.
-The implementation is done by adding new functions to the GRUEL
-library:
+The implementation is done by adding new functions to the threading
+section of the gnuradio-runtime library:
\code
gr_thread_t get_current_thread_id();
@@ -21,7 +21,7 @@ library:
The ability to set a thread's affinity to a core or groups of cores is
not implemented in the Boost thread library, and so we have made our
-own portability library. In particular, the gruel::gr_thread_t type is
+own portability library. In particular, the gr::thread::gr_thread_t type is
defined as the thread type for the given system. The other functions
are designed to be portable as well by calling the specific
implementation for the thread affinity for a particular platform.
@@ -43,7 +43,7 @@ Each block has two new data members:
- threaded: a boolean value that is true if the block is attached to a
thread.
-- thread: a gruel::gr_thread_t handle to the block's thread.
+- thread: a gr::thread::gr_thread_t handle to the block's thread.
A block can set and unset it's affinity at any time using the
following member functions:
diff --git a/gnuradio-runtime/CMakeLists.txt b/gnuradio-runtime/CMakeLists.txt
index 96b844b193..e659ce94fc 100644
--- a/gnuradio-runtime/CMakeLists.txt
+++ b/gnuradio-runtime/CMakeLists.txt
@@ -34,7 +34,6 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/ConfigChecks.cmake)
include(GrComponent)
GR_REGISTER_COMPONENT("gnuradio-runtime" ENABLE_GNURADIO_RUNTIME
Boost_FOUND
- ENABLE_GRUEL
ENABLE_VOLK
PYTHONINTERP_FOUND
)
@@ -78,7 +77,6 @@ GR_REGISTER_COMPONENT("gr-ctrlport" ENABLE_GR_CTRLPORT
SWIG_FOUND
SWIG_VERSION_CHECK
ICE_FOUND
- ENABLE_GRUEL
ENABLE_GNURADIO_RUNTIME
)
diff --git a/gnuradio-runtime/apps/CMakeLists.txt b/gnuradio-runtime/apps/CMakeLists.txt
index 9efd3f2b69..3dea7268ff 100644
--- a/gnuradio-runtime/apps/CMakeLists.txt
+++ b/gnuradio-runtime/apps/CMakeLists.txt
@@ -22,7 +22,6 @@
########################################################################
include_directories(
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gnuradio-runtime/include/CMakeLists.txt b/gnuradio-runtime/include/CMakeLists.txt
index 77b284705a..832522f92c 100644
--- a/gnuradio-runtime/include/CMakeLists.txt
+++ b/gnuradio-runtime/include/CMakeLists.txt
@@ -17,6 +17,10 @@
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
+add_subdirectory(messages)
+add_subdirectory(pmt)
+add_subdirectory(thread)
+
########################################################################
# Install header files
########################################################################
@@ -87,6 +91,10 @@ install(FILES
rpcserver_ice.h
rpcserver_selector.h
runtime_block_gateway.h
+ attributes.h
+ high_res_timer.h
+ realtime.h
+ sys_pri.h
DESTINATION ${GR_INCLUDE_DIR}/gnuradio
COMPONENT "runtime_devel"
)
diff --git a/gruel/src/include/gruel/attributes.h b/gnuradio-runtime/include/attributes.h
index baa5521c81..5baa52e7d3 100644
--- a/gruel/src/include/gruel/attributes.h
+++ b/gnuradio-runtime/include/attributes.h
@@ -19,8 +19,8 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef INCLUDED_GRUEL_ATTRIBUTES_H
-#define INCLUDED_GRUEL_ATTRIBUTES_H
+#ifndef INCLUDED_GNURADIO_ATTRIBUTES_H
+#define INCLUDED_GNURADIO_ATTRIBUTES_H
////////////////////////////////////////////////////////////////////////
// Cross-platform attribute macros
@@ -71,4 +71,4 @@
# pragma warning(disable: 4290) // C++ exception specification ignored except to indicate a function is not __declspec(nothrow)
#endif
-#endif /* INCLUDED_GRUEL_ATTRIBUTES_H */
+#endif /* INCLUDED_GNURADIO_ATTRIBUTES_H */
diff --git a/gnuradio-runtime/include/gr_basic_block.h b/gnuradio-runtime/include/gr_basic_block.h
index 1fa8bb9d7a..beb54dbb6b 100644
--- a/gnuradio-runtime/include/gr_basic_block.h
+++ b/gnuradio-runtime/include/gr_basic_block.h
@@ -33,7 +33,7 @@
#include <deque>
#include <map>
#include <gr_io_signature.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
#include <boost/foreach.hpp>
#include <boost/thread/condition_variable.hpp>
#include <iostream>
@@ -68,7 +68,7 @@ class GR_RUNTIME_API gr_basic_block : public gr_msg_accepter, public boost::enab
typedef std::map<pmt::pmt_t, msg_queue_t, pmt::comperator>::iterator msg_queue_map_itr;
std::map<pmt::pmt_t, boost::shared_ptr<boost::condition_variable>, pmt::comperator> msg_queue_ready;
- gruel::mutex mutex; //< protects all vars
+ gr::thread::mutex mutex; //< protects all vars
protected:
friend class gr_flowgraph;
diff --git a/gnuradio-runtime/include/gr_block.h b/gnuradio-runtime/include/gr_block.h
index a25bb4a528..77ca3f3f72 100644
--- a/gnuradio-runtime/include/gr_block.h
+++ b/gnuradio-runtime/include/gr_block.h
@@ -668,9 +668,9 @@ class GR_RUNTIME_API gr_block : public gr_basic_block {
/*! Used by block's setters and work functions to make
* setting/resetting of parameters thread-safe.
*
- * Used by calling gruel::scoped_lock l(d_setlock);
+ * Used by calling gr::thread::scoped_lock l(d_setlock);
*/
- gruel::mutex d_setlock;
+ gr::thread::mutex d_setlock;
/*! Used by blocks to access the logger system.
*/
diff --git a/gnuradio-runtime/include/gr_block_detail.h b/gnuradio-runtime/include/gr_block_detail.h
index d24148f951..14886c0a74 100644
--- a/gnuradio-runtime/include/gr_block_detail.h
+++ b/gnuradio-runtime/include/gr_block_detail.h
@@ -27,7 +27,7 @@
#include <gr_runtime_types.h>
#include <gr_tpb_detail.h>
#include <gr_tags.h>
-#include <gruel/high_res_timer.h>
+#include <high_res_timer.h>
#include <stdexcept>
/*!
@@ -169,7 +169,7 @@ class GR_RUNTIME_API gr_block_detail {
void unset_processor_affinity();
bool threaded; // set if thread is currently running.
- gruel::gr_thread_t thread; // portable thread handle
+ gr::thread::gr_thread_t thread; // portable thread handle
void start_perf_counters();
void stop_perf_counters(int noutput_items, int nproduced);
@@ -225,7 +225,7 @@ class GR_RUNTIME_API gr_block_detail {
std::vector<float> d_ins_output_buffers_full;
std::vector<float> d_avg_output_buffers_full;
std::vector<float> d_var_output_buffers_full;
- gruel::high_res_timer_type d_start_of_work, d_end_of_work;
+ gr::high_res_timer_type d_start_of_work, d_end_of_work;
float d_ins_work_time;
float d_avg_work_time;
float d_var_work_time;
diff --git a/gnuradio-runtime/include/gr_buffer.h b/gnuradio-runtime/include/gr_buffer.h
index 1a10ba6d8d..810879b7ea 100644
--- a/gnuradio-runtime/include/gr_buffer.h
+++ b/gnuradio-runtime/include/gr_buffer.h
@@ -26,7 +26,7 @@
#include <gr_runtime_api.h>
#include <gr_runtime_types.h>
#include <boost/weak_ptr.hpp>
-#include <gruel/thread.h>
+#include <thread/thread.h>
#include <gr_tags.h>
#include <deque>
@@ -89,7 +89,7 @@ class GR_RUNTIME_API gr_buffer {
size_t nreaders() const { return d_readers.size(); }
gr_buffer_reader* reader(size_t index) { return d_readers[index]; }
- gruel::mutex *mutex() { return &d_mutex; }
+ gr::thread::mutex *mutex() { return &d_mutex; }
uint64_t nitems_written() { return d_abs_write_offset; }
@@ -142,7 +142,7 @@ class GR_RUNTIME_API gr_buffer {
// The mutex protects d_write_index, d_abs_write_offset, d_done, d_item_tags
// and the d_read_index's and d_abs_read_offset's in the buffer readers.
//
- gruel::mutex d_mutex;
+ gr::thread::mutex d_mutex;
unsigned int d_write_index; // in items [0,d_bufsize)
uint64_t d_abs_write_offset; // num items written since the start
bool d_done;
@@ -254,7 +254,7 @@ class GR_RUNTIME_API gr_buffer_reader {
void set_done (bool done) { d_buffer->set_done (done); }
bool done () const { return d_buffer->done (); }
- gruel::mutex *mutex() { return d_buffer->mutex(); }
+ gr::thread::mutex *mutex() { return d_buffer->mutex(); }
uint64_t nitems_read() { return d_abs_read_offset; }
diff --git a/gnuradio-runtime/include/gr_feval.h b/gnuradio-runtime/include/gr_feval.h
index af11ca2a2a..07df592e58 100644
--- a/gnuradio-runtime/include/gr_feval.h
+++ b/gnuradio-runtime/include/gr_feval.h
@@ -24,7 +24,7 @@
#include <gr_runtime_api.h>
#include <gr_complex.h>
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
/*!
* \brief base class for evaluating a function: double -> double
diff --git a/gnuradio-runtime/include/gr_msg_accepter.h b/gnuradio-runtime/include/gr_msg_accepter.h
index 8db28bb747..e7feac4686 100644
--- a/gnuradio-runtime/include/gr_msg_accepter.h
+++ b/gnuradio-runtime/include/gr_msg_accepter.h
@@ -23,14 +23,14 @@
#define INCLUDED_GR_MSG_ACCEPTER_H
#include <gr_runtime_api.h>
-#include <gruel/msg_accepter.h>
-#include <gruel/pmt.h>
+#include <messages/msg_accepter.h>
+#include <pmt/pmt.h>
/*!
* \brief Accepts messages and inserts them into a message queue, then notifies
* subclass gr_basic_block there is a message pending.
*/
-class GR_RUNTIME_API gr_msg_accepter : public gruel::msg_accepter
+class GR_RUNTIME_API gr_msg_accepter : public gr::messages::msg_accepter
{
public:
gr_msg_accepter();
diff --git a/gnuradio-runtime/include/gr_msg_queue.h b/gnuradio-runtime/include/gr_msg_queue.h
index 127186ec51..ac85729c81 100644
--- a/gnuradio-runtime/include/gr_msg_queue.h
+++ b/gnuradio-runtime/include/gr_msg_queue.h
@@ -24,7 +24,7 @@
#include <gr_runtime_api.h>
#include <gr_msg_handler.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
class gr_msg_queue;
typedef boost::shared_ptr<gr_msg_queue> gr_msg_queue_sptr;
@@ -37,9 +37,9 @@ GR_RUNTIME_API gr_msg_queue_sptr gr_make_msg_queue(unsigned int limit=0);
*/
class GR_RUNTIME_API gr_msg_queue : public gr_msg_handler {
- gruel::mutex d_mutex;
- gruel::condition_variable d_not_empty;
- gruel::condition_variable d_not_full;
+ gr::thread::mutex d_mutex;
+ gr::thread::condition_variable d_not_empty;
+ gr::thread::condition_variable d_not_full;
gr_message_sptr d_head;
gr_message_sptr d_tail;
unsigned int d_count; // # of messages in queue.
diff --git a/gnuradio-runtime/include/gr_prefs.h b/gnuradio-runtime/include/gr_prefs.h
index 7ca0991ca8..0f82c46fae 100644
--- a/gnuradio-runtime/include/gr_prefs.h
+++ b/gnuradio-runtime/include/gr_prefs.h
@@ -26,7 +26,7 @@
#include <gr_runtime_api.h>
#include <string>
#include <map>
-#include <gruel/thread.h>
+#include <thread/thread.h>
typedef std::map< std::string, std::map<std::string, std::string> > gr_config_map_t;
typedef std::map< std::string, std::map<std::string, std::string> >::iterator gr_config_map_itr;
@@ -135,7 +135,7 @@ public:
virtual char * option_to_env(std::string section, std::string option);
private:
- gruel::mutex d_mutex;
+ gr::thread::mutex d_mutex;
gr_config_map_t d_config_map;
};
diff --git a/gnuradio-runtime/include/gr_py_feval.h b/gnuradio-runtime/include/gr_py_feval.h
index cf7c7bfbe5..f2f6c801a8 100644
--- a/gnuradio-runtime/include/gr_py_feval.h
+++ b/gnuradio-runtime/include/gr_py_feval.h
@@ -1,4 +1,4 @@
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
class gr_py_feval_dd : public gr_feval_dd
{
diff --git a/gnuradio-runtime/include/gr_realtime.h b/gnuradio-runtime/include/gr_realtime.h
index fcdb5222cc..a1e5af69c4 100644
--- a/gnuradio-runtime/include/gr_realtime.h
+++ b/gnuradio-runtime/include/gr_realtime.h
@@ -24,9 +24,9 @@
#define INCLUDED_GR_REALTIME_H
#include <gr_runtime_api.h>
-#include <gruel/realtime.h>
+#include <realtime.h>
-typedef gruel::rt_status_t gr_rt_status_t;
+typedef gr::rt_status_t gr_rt_status_t;
/*!
* \brief If possible, enable high-priority "real time" scheduling.
diff --git a/gnuradio-runtime/include/gr_runtime_api.h b/gnuradio-runtime/include/gr_runtime_api.h
index 32c53bd723..f4e1a4ea5b 100644
--- a/gnuradio-runtime/include/gr_runtime_api.h
+++ b/gnuradio-runtime/include/gr_runtime_api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_GR_RUNTIME_API_H
#define INCLUDED_GR_RUNTIME_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_core_EXPORTS
# define GR_RUNTIME_API __GR_ATTR_EXPORT
diff --git a/gnuradio-runtime/include/gr_tags.h b/gnuradio-runtime/include/gr_tags.h
index 278a5a53ae..668b2bf248 100644
--- a/gnuradio-runtime/include/gr_tags.h
+++ b/gnuradio-runtime/include/gr_tags.h
@@ -23,7 +23,7 @@
#define INCLUDED_GR_TAGS_H
#include <gr_runtime_api.h>
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
struct GR_RUNTIME_API gr_tag_t{
diff --git a/gnuradio-runtime/include/gr_tpb_detail.h b/gnuradio-runtime/include/gr_tpb_detail.h
index 398e18cdc8..f6f20917c9 100644
--- a/gnuradio-runtime/include/gr_tpb_detail.h
+++ b/gnuradio-runtime/include/gr_tpb_detail.h
@@ -22,9 +22,9 @@
#define INCLUDED_GR_TPB_DETAIL_H
#include <gr_runtime_api.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
#include <deque>
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
class gr_block_detail;
@@ -33,11 +33,11 @@ class gr_block_detail;
*/
struct GR_RUNTIME_API gr_tpb_detail {
- gruel::mutex mutex; //< protects all vars
+ gr::thread::mutex mutex; //< protects all vars
bool input_changed;
- gruel::condition_variable input_cond;
+ gr::thread::condition_variable input_cond;
bool output_changed;
- gruel::condition_variable output_cond;
+ gr::thread::condition_variable output_cond;
public:
gr_tpb_detail()
@@ -61,7 +61,7 @@ public:
//! Called by us
void clear_changed()
{
- gruel::scoped_lock guard(mutex);
+ gr::thread::scoped_lock guard(mutex);
input_changed = false;
output_changed = false;
}
@@ -71,7 +71,7 @@ private:
//! Used by notify_downstream
void set_input_changed()
{
- gruel::scoped_lock guard(mutex);
+ gr::thread::scoped_lock guard(mutex);
input_changed = true;
input_cond.notify_one();
}
@@ -79,7 +79,7 @@ private:
//! Used by notify_upstream
void set_output_changed()
{
- gruel::scoped_lock guard(mutex);
+ gr::thread::scoped_lock guard(mutex);
output_changed = true;
output_cond.notify_one();
}
diff --git a/gruel/src/include/gruel/high_res_timer.h b/gnuradio-runtime/include/high_res_timer.h
index a885520b68..fc7b007c61 100644
--- a/gruel/src/include/gruel/high_res_timer.h
+++ b/gnuradio-runtime/include/high_res_timer.h
@@ -1,5 +1,6 @@
+/* -*- c++ -*- */
/*
- * Copyright 2011 Free Software Foundation, Inc.
+ * Copyright 2011,2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -18,10 +19,11 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#ifndef INCLUDED_GRUEL_HIGH_RES_TIMER_H
-#define INCLUDED_GRUEL_HIGH_RES_TIMER_H
+#ifndef INCLUDED_GNURADIO_HIGH_RES_TIMER_H
+#define INCLUDED_GNURADIO_HIGH_RES_TIMER_H
+
+namespace gr {
-namespace gruel {
//! Typedef for the timer tick count
typedef signed long long high_res_timer_type;
@@ -34,64 +36,64 @@ namespace gruel {
//! Get the tick count at the epoch
high_res_timer_type high_res_timer_epoch(void);
-} /* namespace gruel */
+} /* namespace gr */
////////////////////////////////////////////////////////////////////////
// Use architecture defines to determine the implementation
////////////////////////////////////////////////////////////////////////
#if defined(linux) || defined(__linux) || defined(__linux__)
- #define GRUEL_HRT_USE_CLOCK_GETTIME
+ #define GNURADIO_HRT_USE_CLOCK_GETTIME
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
- #define GRUEL_HRT_USE_QUERY_PERFORMANCE_COUNTER
+ #define GNURADIO_HRT_USE_QUERY_PERFORMANCE_COUNTER
#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
- #define GRUEL_HRT_USE_MACH_ABSOLUTE_TIME
+ #define GNURADIO_HRT_USE_MACH_ABSOLUTE_TIME
#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
- #define GRUEL_HRT_USE_CLOCK_GETTIME
+ #define GNURADIO_HRT_USE_CLOCK_GETTIME
#else
- #define GRUEL_HRT_USE_MICROSEC_CLOCK
+ #define GNURADIO_HRT_USE_MICROSEC_CLOCK
#endif
////////////////////////////////////////////////////////////////////////
-#ifdef GRUEL_HRT_USE_CLOCK_GETTIME
+#ifdef GNURADIO_HRT_USE_CLOCK_GETTIME
#include <ctime>
- inline gruel::high_res_timer_type gruel::high_res_timer_now(void){
+ inline gr::high_res_timer_type gr::high_res_timer_now(void){
timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
return ts.tv_sec*high_res_timer_tps() + ts.tv_nsec;
}
- inline gruel::high_res_timer_type gruel::high_res_timer_tps(void){
+ inline gr::high_res_timer_type gr::high_res_timer_tps(void){
return 1000000000UL;
}
-#endif /* GRUEL_HRT_USE_CLOCK_GETTIME */
+#endif /* GNURADIO_HRT_USE_CLOCK_GETTIME */
////////////////////////////////////////////////////////////////////////
-#ifdef GRUEL_HRT_USE_MACH_ABSOLUTE_TIME
+#ifdef GNURADIO_HRT_USE_MACH_ABSOLUTE_TIME
#include <mach/mach_time.h>
- inline gruel::high_res_timer_type gruel::high_res_timer_now(void){
+ inline gr::high_res_timer_type gr::high_res_timer_now(void){
return mach_absolute_time();
}
- inline gruel::high_res_timer_type gruel::high_res_timer_tps(void){
+ inline gr::high_res_timer_type gr::high_res_timer_tps(void){
mach_timebase_info_data_t info;
mach_timebase_info(&info);
- return gruel::high_res_timer_type(info.numer*1000000000UL)/info.denom;
+ return gr::high_res_timer_type(info.numer*1000000000UL)/info.denom;
}
#endif
////////////////////////////////////////////////////////////////////////
-#ifdef GRUEL_HRT_USE_QUERY_PERFORMANCE_COUNTER
+#ifdef GNURADIO_HRT_USE_QUERY_PERFORMANCE_COUNTER
#include <Windows.h>
- inline gruel::high_res_timer_type gruel::high_res_timer_now(void){
+ inline gr::high_res_timer_type gr::high_res_timer_now(void){
LARGE_INTEGER counts;
QueryPerformanceCounter(&counts);
return counts.QuadPart;
}
- inline gruel::high_res_timer_type gruel::high_res_timer_tps(void){
+ inline gr::high_res_timer_type gr::high_res_timer_tps(void){
LARGE_INTEGER freq;
QueryPerformanceFrequency(&freq);
return freq.QuadPart;
@@ -99,15 +101,15 @@ namespace gruel {
#endif
////////////////////////////////////////////////////////////////////////
-#ifdef GRUEL_HRT_USE_MICROSEC_CLOCK
+#ifdef GNURADIO_HRT_USE_MICROSEC_CLOCK
#include <boost/date_time/posix_time/posix_time.hpp>
- inline gruel::high_res_timer_type gruel::high_res_timer_now(void){
+ inline gr::high_res_timer_type gr::high_res_timer_now(void){
static const boost::posix_time::ptime epoch(boost::posix_time::from_time_t(0));
return (boost::posix_time::microsec_clock::universal_time() - epoch).ticks();
}
- inline gruel::high_res_timer_type gruel::high_res_timer_tps(void){
+ inline gr::high_res_timer_type gr::high_res_timer_tps(void){
return boost::posix_time::time_duration::ticks_per_second();
}
#endif
@@ -115,10 +117,10 @@ namespace gruel {
////////////////////////////////////////////////////////////////////////
#include <boost/date_time/posix_time/posix_time.hpp>
-inline gruel::high_res_timer_type gruel::high_res_timer_epoch(void){
- static const double hrt_ticks_per_utc_ticks = gruel::high_res_timer_tps()/double(boost::posix_time::time_duration::ticks_per_second());
+inline gr::high_res_timer_type gr::high_res_timer_epoch(void){
+ static const double hrt_ticks_per_utc_ticks = gr::high_res_timer_tps()/double(boost::posix_time::time_duration::ticks_per_second());
boost::posix_time::time_duration utc = boost::posix_time::microsec_clock::universal_time() - boost::posix_time::from_time_t(0);
- return gruel::high_res_timer_now() - utc.ticks()*hrt_ticks_per_utc_ticks;
+ return gr::high_res_timer_now() - utc.ticks()*hrt_ticks_per_utc_ticks;
}
-#endif /* INCLUDED_GRUEL_HIGH_RES_TIMER_H */
+#endif /* INCLUDED_GNURADIO_HIGH_RES_TIMER_H */
diff --git a/gnuradio-runtime/include/messages/CMakeLists.txt b/gnuradio-runtime/include/messages/CMakeLists.txt
new file mode 100644
index 0000000000..f79f2bd24f
--- /dev/null
+++ b/gnuradio-runtime/include/messages/CMakeLists.txt
@@ -0,0 +1,31 @@
+# Copyright 2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# Install header files
+########################################################################
+install(FILES
+ msg_accepter.h
+ msg_accepter_msgq.h
+ msg_passing.h
+ msg_producer.h
+ msg_queue.h
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio/messages
+ COMPONENT "runtime_devel"
+)
diff --git a/gnuradio-runtime/include/messages/msg_accepter.h b/gnuradio-runtime/include/messages/msg_accepter.h
new file mode 100644
index 0000000000..d3e89daf74
--- /dev/null
+++ b/gnuradio-runtime/include/messages/msg_accepter.h
@@ -0,0 +1,56 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2009,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef INCLUDED_MSG_ACCEPTER_H
+#define INCLUDED_MSG_ACCEPTER_H
+
+#include <gr_runtime_api.h>
+#include <pmt/pmt.h>
+#include <boost/shared_ptr.hpp>
+
+namespace gr {
+ namespace messages {
+
+ /*!
+ * \brief Virtual base class that accepts messages
+ */
+ class GR_RUNTIME_API msg_accepter
+ {
+ public:
+ msg_accepter() {};
+ virtual ~msg_accepter();
+
+ /*!
+ * \brief send \p msg to \p msg_accepter on port \p which_port
+ *
+ * Sending a message is an asynchronous operation. The \p post
+ * call will not wait for the message either to arrive at the
+ * destination or to be received.
+ */
+ virtual void post(pmt::pmt_t which_port, pmt::pmt_t msg) = 0;
+ };
+
+ typedef boost::shared_ptr<msg_accepter> msg_accepter_sptr;
+
+ } /* namespace messages */
+} /* namespace gr */
+
+#endif /* INCLUDED_MSG_ACCEPTER_H */
diff --git a/gruel/src/include/gruel/msg_accepter_msgq.h b/gnuradio-runtime/include/messages/msg_accepter_msgq.h
index 6b9bcf4dbc..5d1d4f7e27 100644
--- a/gruel/src/include/gruel/msg_accepter_msgq.h
+++ b/gnuradio-runtime/include/messages/msg_accepter_msgq.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2009 Free Software Foundation, Inc.
+ * Copyright 2009,2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -22,29 +22,32 @@
#ifndef INCLUDED_MSG_ACCEPTER_MSGQ_H
#define INCLUDED_MSG_ACCEPTER_MSGQ_H
-#include <gruel/api.h>
-#include <gruel/msg_accepter.h>
-#include <gruel/msg_queue.h>
+#include <gr_runtime_api.h>
+#include <messages/msg_accepter.h>
+#include <messages/msg_queue.h>
-namespace gruel {
+namespace gr {
+ namespace messages {
- /*!
- * \brief Concrete class that accepts messages and inserts them into a message queue.
- */
- class GRUEL_API msg_accepter_msgq : public msg_accepter
- {
- protected:
- msg_queue_sptr d_msg_queue;
+ /*!
+ * \brief Concrete class that accepts messages and inserts them
+ * into a message queue.
+ */
+ class GR_RUNTIME_API msg_accepter_msgq : public msg_accepter
+ {
+ protected:
+ msg_queue_sptr d_msg_queue;
- public:
- msg_accepter_msgq(msg_queue_sptr msgq);
- ~msg_accepter_msgq();
+ public:
+ msg_accepter_msgq(msg_queue_sptr msgq);
+ ~msg_accepter_msgq();
- virtual void post(pmt::pmt_t msg);
+ virtual void post(pmt::pmt_t msg);
- msg_queue_sptr msg_queue() const { return d_msg_queue; }
- };
+ msg_queue_sptr msg_queue() const { return d_msg_queue; }
+ };
-} /* namespace gruel */
+ } /* namespace messages */
+} /* namespace gr */
#endif /* INCLUDED_MSG_ACCEPTER_MSGQ_H */
diff --git a/gnuradio-runtime/include/messages/msg_passing.h b/gnuradio-runtime/include/messages/msg_passing.h
new file mode 100644
index 0000000000..3bfccda339
--- /dev/null
+++ b/gnuradio-runtime/include/messages/msg_passing.h
@@ -0,0 +1,123 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2009,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef INCLUDED_MSG_PASSING_H
+#define INCLUDED_MSG_PASSING_H
+
+/*!
+ * \brief Include this header to use the message passing features
+ */
+
+#include <gr_runtime_api.h>
+#include <pmt/pmt.h>
+#include <messages/msg_accepter.h>
+
+namespace gr {
+ namespace messages {
+
+ /*!
+ * \brief send message to msg_accepter
+ *
+ * \param accepter is the target of the send.
+ * \param which_port A pmt symbol describing the port by name.
+ * \param msg is the message to send. It's usually a pmt tuple.
+ *
+ * Sending a message is an asynchronous operation. The \p send
+ * call will not wait for the message either to arrive at the
+ * destination or to be received.
+ *
+ * \returns msg
+ */
+ static inline pmt::pmt_t
+ send(msg_accepter_sptr accepter, const pmt::pmt_t &which_port,
+ const pmt::pmt_t &msg)
+ {
+ accepter->post(which_port, msg);
+ return msg;
+ }
+
+ /*!
+ * \brief send message to msg_accepter
+ *
+ * \param accepter is the target of the send.
+ * \param which_port A pmt symbol describing the port by name.
+ * \param msg is the message to send. It's usually a pmt tuple.
+ *
+ * Sending a message is an asynchronous operation. The \p send
+ * call will not wait for the message either to arrive at the
+ * destination or to be received.
+ *
+ * \returns msg
+ */
+ static inline pmt::pmt_t
+ send(msg_accepter *accepter, const pmt::pmt_t &which_port,
+ const pmt::pmt_t &msg)
+ {
+ accepter->post(which_port, msg);
+ return msg;
+ }
+
+ /*!
+ * \brief send message to msg_accepter
+ *
+ * \param accepter is the target of the send.
+ * \param which_port A pmt symbol describing the port by name.
+ * \param msg is the message to send. It's usually a pmt tuple.
+ *
+ * Sending a message is an asynchronous operation. The \p send
+ * call will not wait for the message either to arrive at the
+ * destination or to be received.
+ *
+ * \returns msg
+ */
+ static inline pmt::pmt_t
+ send(msg_accepter &accepter, const pmt::pmt_t &which_port,
+ const pmt::pmt_t &msg)
+ {
+ accepter.post(which_port, msg);
+ return msg;
+ }
+
+ /*!
+ * \brief send message to msg_accepter
+ *
+ * \param accepter is the target of the send.
+ * aprecond: pmt::is_msg_accepter(accepter)
+ * \param which_port A pmt symbol describing the port by name.
+ * \param msg is the message to send. It's usually a pmt tuple.
+ *
+ * Sending a message is an asynchronous operation. The \p send
+ * call will not wait for the message either to arrive at the
+ * destination or to be received.
+ *
+ * \returns msg
+ */
+ static inline pmt::pmt_t
+ send(pmt::pmt_t accepter, const pmt::pmt_t &which_port,
+ const pmt::pmt_t &msg)
+ {
+ return send(pmt::msg_accepter_ref(accepter), which_port, msg);
+ }
+
+ } /* namespace messages */
+} /* namespace gr */
+
+#endif /* INCLUDED_MSG_PASSING_H */
diff --git a/gruel/src/include/gruel/msg_producer.h b/gnuradio-runtime/include/messages/msg_producer.h
index cd753958ad..3167fc442a 100644
--- a/gruel/src/include/gruel/msg_producer.h
+++ b/gnuradio-runtime/include/messages/msg_producer.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2012 Free Software Foundation, Inc.
+ * Copyright 2012,2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -19,33 +19,34 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#ifndef INCLUDED_GRUEL_MSG_PRODUCER_H
-#define INCLUDED_GRUEL_MSG_PRODUCER_H
+#ifndef INCLUDED_MSG_PRODUCER_H
+#define INCLUDED_MSG_PRODUCER_H
-#include <gruel/api.h>
-#include <gruel/pmt.h>
+#include <gr_runtime_api.h>
+#include <pmt/pmt.h>
#include <boost/shared_ptr.hpp>
-namespace gruel {
-
- /*!
- * \brief Virtual base class that produces messages
- */
- class GRUEL_API msg_producer
- {
- public:
- msg_producer() {}
- virtual ~msg_producer();
+namespace gr {
+ namespace messages {
/*!
- * \brief send \p msg to \p msg_producer
+ * \brief Virtual base class that produces messages
*/
- virtual pmt::pmt_t retrieve() = 0;
- };
-
- typedef boost::shared_ptr<msg_producer> msg_producer_sptr;
-
-} /* namespace gruel */
-
-#endif /* INCLUDED_GRUEL_MSG_PRODUCER_H */
-
+ class GR_RUNTIME_API msg_producer
+ {
+ public:
+ msg_producer() {}
+ virtual ~msg_producer();
+
+ /*!
+ * \brief send \p msg to \p msg_producer
+ */
+ virtual pmt::pmt_t retrieve() = 0;
+ };
+
+ typedef boost::shared_ptr<msg_producer> msg_producer_sptr;
+
+ } /* namespace messages */
+} /* namespace gr */
+
+#endif /* INCLUDED_MSG_PRODUCER_H */
diff --git a/gnuradio-runtime/include/messages/msg_queue.h b/gnuradio-runtime/include/messages/msg_queue.h
new file mode 100644
index 0000000000..81531afcdf
--- /dev/null
+++ b/gnuradio-runtime/include/messages/msg_queue.h
@@ -0,0 +1,95 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2009,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_MSG_QUEUE_H
+#define INCLUDED_MSG_QUEUE_H
+
+#include <gr_runtime_api.h>
+#include <thread/thread.h>
+#include <pmt/pmt.h>
+#include <deque>
+
+namespace gr {
+ namespace messages {
+
+ class msg_queue;
+ typedef boost::shared_ptr<msg_queue> msg_queue_sptr;
+
+ msg_queue_sptr make_msg_queue(unsigned int limit=0);
+
+ /*!
+ * \brief thread-safe message queue
+ */
+ class GR_RUNTIME_API msg_queue
+ {
+ private:
+ gr::thread::mutex d_mutex;
+ gr::thread::condition_variable d_not_empty;
+ gr::thread::condition_variable d_not_full;
+ unsigned int d_limit; // max # of messages in queue. 0 -> unbounded
+
+ std::deque<pmt::pmt_t> d_msgs;
+
+ public:
+ msg_queue(unsigned int limit);
+ ~msg_queue();
+
+ /*!
+ * \brief Insert message at tail of queue.
+ * \param msg message
+ *
+ * Block if queue if full.
+ */
+ void insert_tail(pmt::pmt_t msg);
+
+ /*!
+ * \brief Delete message from head of queue and return it.
+ * Block if no message is available.
+ */
+ pmt::pmt_t delete_head();
+
+ /*!
+ * \brief If there's a message in the q, delete it and return it.
+ * If no message is available, return pmt_t().
+ */
+ pmt::pmt_t delete_head_nowait();
+
+ //! Delete all messages from the queue
+ void flush();
+
+ //! is the queue empty?
+ bool empty_p() const { return d_msgs.empty(); }
+
+ //! is the queue full?
+ bool full_p() const { return d_limit != 0 && count() >= d_limit; }
+
+ //! return number of messages in queue
+ unsigned int count() const { return d_msgs.size(); }
+
+ //! return limit on number of message in queue. 0 -> unbounded
+ unsigned int limit() const { return d_limit; }
+ };
+
+ } /* namespace messages */
+} /* namespace gr */
+
+#endif /* INCLUDED_MSG_QUEUE_H */
diff --git a/gruel/src/python/__init__.py b/gnuradio-runtime/include/pmt/CMakeLists.txt
index 976b2ed1ec..4ae0e22431 100644
--- a/gruel/src/python/__init__.py
+++ b/gnuradio-runtime/include/pmt/CMakeLists.txt
@@ -1,5 +1,4 @@
-#
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2010-2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -17,13 +16,14 @@
# along with GNU Radio; see the file COPYING. If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
-#
-
-# The presence of this file turns this directory into a Python package
-
-'''
-The GNU Radio Utility Etcetera Library.
-'''
-
-import pmt;
+########################################################################
+# Install the headers
+########################################################################
+install(FILES
+ api.h
+ pmt.h
+ pmt_pool.h
+ pmt_sugar.h
+ DESTINATION ${GR_INCLUDE_DIR}/pmt
+ COMPONENT "runtime_devel")
diff --git a/gnuradio-runtime/include/pmt/api.h b/gnuradio-runtime/include/pmt/api.h
new file mode 100644
index 0000000000..5dcc8a84a5
--- /dev/null
+++ b/gnuradio-runtime/include/pmt/api.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2010,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_PMT_API_H
+#define INCLUDED_PMT_API_H
+
+#include <attributes.h>
+
+#ifdef pmt_EXPORTS
+# define PMT_API __GR_ATTR_EXPORT
+#else
+# define PMT_API __GR_ATTR_IMPORT
+#endif
+
+#endif /* INCLUDED_PMT_API_H */
diff --git a/gruel/src/include/gruel/pmt.h b/gnuradio-runtime/include/pmt/pmt.h
index b4c51ab927..c4efbfc173 100644
--- a/gruel/src/include/gruel/pmt.h
+++ b/gnuradio-runtime/include/pmt/pmt.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2006,2009,2010 Free Software Foundation, Inc.
+ * Copyright 2006,2009,2010,2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -23,7 +23,7 @@
#ifndef INCLUDED_PMT_H
#define INCLUDED_PMT_H
-#include <gruel/api.h>
+#include <pmt/api.h>
#include <boost/intrusive_ptr.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/any.hpp>
@@ -34,9 +34,11 @@
#include <stdexcept>
#include <vector>
-namespace gruel {
- class msg_accepter;
-};
+namespace gr {
+ namespace messages {
+ class msg_accepter;
+ }
+}
/*!
* This file defines a polymorphic type and the operations on it.
@@ -59,28 +61,28 @@ class pmt_base;
*/
typedef boost::intrusive_ptr<pmt_base> pmt_t;
-extern GRUEL_API void intrusive_ptr_add_ref(pmt_base*);
-extern GRUEL_API void intrusive_ptr_release(pmt_base*);
+extern PMT_API void intrusive_ptr_add_ref(pmt_base*);
+extern PMT_API void intrusive_ptr_release(pmt_base*);
-class GRUEL_API exception : public std::logic_error
+class PMT_API exception : public std::logic_error
{
public:
exception(const std::string &msg, pmt_t obj);
};
-class GRUEL_API wrong_type : public exception
+class PMT_API wrong_type : public exception
{
public:
wrong_type(const std::string &msg, pmt_t obj);
};
-class GRUEL_API out_of_range : public exception
+class PMT_API out_of_range : public exception
{
public:
out_of_range(const std::string &msg, pmt_t obj);
};
-class GRUEL_API notimplemented : public exception
+class PMT_API notimplemented : public exception
{
public:
notimplemented(const std::string &msg, pmt_t obj);
@@ -94,24 +96,24 @@ public:
* I.e., there is a single false value, #f.
* ------------------------------------------------------------------------
*/
-extern GRUEL_API const pmt_t PMT_T; //< \#t : boolean true constant
-extern GRUEL_API const pmt_t PMT_F; //< \#f : boolean false constant
+extern PMT_API const pmt_t PMT_T; //< \#t : boolean true constant
+extern PMT_API const pmt_t PMT_F; //< \#f : boolean false constant
//! Return true if obj is \#t or \#f, else return false.
-GRUEL_API bool is_bool(pmt_t obj);
+PMT_API bool is_bool(pmt_t obj);
//! Return false if obj is \#f, else return true.
-GRUEL_API bool is_true(pmt_t obj);
+PMT_API bool is_true(pmt_t obj);
//! Return true if obj is \#f, else return true.
-GRUEL_API bool is_false(pmt_t obj);
+PMT_API bool is_false(pmt_t obj);
//! Return \#f is val is false, else return \#t.
-GRUEL_API pmt_t from_bool(bool val);
+PMT_API pmt_t from_bool(bool val);
//! Return true if val is pmt::True, return false when val is pmt::PMT_F,
// else raise wrong_type exception.
-GRUEL_API bool to_bool(pmt_t val);
+PMT_API bool to_bool(pmt_t val);
/*
* ------------------------------------------------------------------------
@@ -120,20 +122,20 @@ GRUEL_API bool to_bool(pmt_t val);
*/
//! Return true if obj is a symbol, else false.
-GRUEL_API bool is_symbol(const pmt_t& obj);
+PMT_API bool is_symbol(const pmt_t& obj);
//! Return the symbol whose name is \p s.
-GRUEL_API pmt_t string_to_symbol(const std::string &s);
+PMT_API pmt_t string_to_symbol(const std::string &s);
//! Alias for pmt_string_to_symbol
-GRUEL_API pmt_t intern(const std::string &s);
+PMT_API pmt_t intern(const std::string &s);
/*!
* If \p is a symbol, return the name of the symbol as a string.
* Otherwise, raise the wrong_type exception.
*/
-GRUEL_API const std::string symbol_to_string(const pmt_t& sym);
+PMT_API const std::string symbol_to_string(const pmt_t& sym);
/*
* ------------------------------------------------------------------------
@@ -142,7 +144,7 @@ GRUEL_API const std::string symbol_to_string(const pmt_t& sym);
*/
//! Return true if obj is any kind of number, else false.
-GRUEL_API bool is_number(pmt_t obj);
+PMT_API bool is_number(pmt_t obj);
/*
* ------------------------------------------------------------------------
@@ -151,10 +153,10 @@ GRUEL_API bool is_number(pmt_t obj);
*/
//! Return true if \p x is an integer number, else false
-GRUEL_API bool is_integer(pmt_t x);
+PMT_API bool is_integer(pmt_t x);
//! Return the pmt value that represents the integer \p x.
-GRUEL_API pmt_t from_long(long x);
+PMT_API pmt_t from_long(long x);
/*!
* \brief Convert pmt to long if possible.
@@ -163,7 +165,7 @@ GRUEL_API pmt_t from_long(long x);
* return that integer. Else raise an exception, either wrong_type
* when x is not an exact integer, or out_of_range when it doesn't fit.
*/
-GRUEL_API long to_long(pmt_t x);
+PMT_API long to_long(pmt_t x);
/*
* ------------------------------------------------------------------------
@@ -172,10 +174,10 @@ GRUEL_API long to_long(pmt_t x);
*/
//! Return true if \p x is an uint64 number, else false
-GRUEL_API bool is_uint64(pmt_t x);
+PMT_API bool is_uint64(pmt_t x);
//! Return the pmt value that represents the uint64 \p x.
-GRUEL_API pmt_t from_uint64(uint64_t x);
+PMT_API pmt_t from_uint64(uint64_t x);
/*!
* \brief Convert pmt to uint64 if possible.
@@ -184,7 +186,7 @@ GRUEL_API pmt_t from_uint64(uint64_t x);
* return that uint64. Else raise an exception, either wrong_type
* when x is not an exact uint64, or out_of_range when it doesn't fit.
*/
-GRUEL_API uint64_t to_uint64(pmt_t x);
+PMT_API uint64_t to_uint64(pmt_t x);
/*
* ------------------------------------------------------------------------
@@ -195,10 +197,10 @@ GRUEL_API uint64_t to_uint64(pmt_t x);
/*
* \brief Return true if \p obj is a real number, else false.
*/
-GRUEL_API bool is_real(pmt_t obj);
+PMT_API bool is_real(pmt_t obj);
//! Return the pmt value that represents double \p x.
-GRUEL_API pmt_t from_double(double x);
+PMT_API pmt_t from_double(double x);
/*!
* \brief Convert pmt to double if possible.
@@ -207,7 +209,7 @@ GRUEL_API pmt_t from_double(double x);
* as a double. The argument \p val must be a real or integer, otherwise
* a wrong_type exception is raised.
*/
-GRUEL_API double to_double(pmt_t x);
+PMT_API double to_double(pmt_t x);
/*
* ------------------------------------------------------------------------
@@ -218,28 +220,28 @@ GRUEL_API double to_double(pmt_t x);
/*!
* \brief return true if \p obj is a complex number, false otherwise.
*/
-GRUEL_API bool is_complex(pmt_t obj);
+PMT_API bool is_complex(pmt_t obj);
//! Return a complex number constructed of the given real and imaginary parts.
-GRUEL_API pmt_t make_rectangular(double re, double im);
+PMT_API pmt_t make_rectangular(double re, double im);
//! Return a complex number constructed of the given real and imaginary parts.
-GRUEL_API pmt_t from_complex(double re, double im);
+PMT_API pmt_t from_complex(double re, double im);
//! Return a complex number constructed of the given a complex number.
-GRUEL_API pmt_t from_complex(const std::complex<double> &z);
+PMT_API pmt_t from_complex(const std::complex<double> &z);
//! Return a complex number constructed of the given real and imaginary parts.
-GRUEL_API pmt_t pmt_from_complex(double re, double im);
+PMT_API pmt_t pmt_from_complex(double re, double im);
//! Return a complex number constructed of the given a complex number.
-GRUEL_API pmt_t pmt_from_complex(const std::complex<double> &z);
+PMT_API pmt_t pmt_from_complex(const std::complex<double> &z);
/*!
* If \p z is complex, real or integer, return the closest complex<double>.
* Otherwise, raise the wrong_type exception.
*/
-GRUEL_API std::complex<double> to_complex(pmt_t z);
+PMT_API std::complex<double> to_complex(pmt_t z);
/*
* ------------------------------------------------------------------------
@@ -247,35 +249,35 @@ GRUEL_API std::complex<double> to_complex(pmt_t z);
* ------------------------------------------------------------------------
*/
-extern GRUEL_API const pmt_t PMT_NIL; //< the empty list
+extern PMT_API const pmt_t PMT_NIL; //< the empty list
//! Return true if \p x is the empty list, otherwise return false.
-GRUEL_API bool is_null(const pmt_t& x);
+PMT_API bool is_null(const pmt_t& x);
//! Return true if \p obj is a pair, else false.
-GRUEL_API bool is_pair(const pmt_t& obj);
+PMT_API bool is_pair(const pmt_t& obj);
//! Return a newly allocated pair whose car is \p x and whose cdr is \p y.
-GRUEL_API pmt_t cons(const pmt_t& x, const pmt_t& y);
+PMT_API pmt_t cons(const pmt_t& x, const pmt_t& y);
//! If \p pair is a pair, return the car of the \p pair, otherwise raise wrong_type.
-GRUEL_API pmt_t car(const pmt_t& pair);
+PMT_API pmt_t car(const pmt_t& pair);
//! If \p pair is a pair, return the cdr of the \p pair, otherwise raise wrong_type.
-GRUEL_API pmt_t cdr(const pmt_t& pair);
+PMT_API pmt_t cdr(const pmt_t& pair);
//! Stores \p value in the car field of \p pair.
-GRUEL_API void set_car(pmt_t pair, pmt_t value);
+PMT_API void set_car(pmt_t pair, pmt_t value);
//! Stores \p value in the cdr field of \p pair.
-GRUEL_API void set_cdr(pmt_t pair, pmt_t value);
+PMT_API void set_cdr(pmt_t pair, pmt_t value);
-GRUEL_API pmt_t caar(pmt_t pair);
-GRUEL_API pmt_t cadr(pmt_t pair);
-GRUEL_API pmt_t cdar(pmt_t pair);
-GRUEL_API pmt_t cddr(pmt_t pair);
-GRUEL_API pmt_t caddr(pmt_t pair);
-GRUEL_API pmt_t cadddr(pmt_t pair);
+PMT_API pmt_t caar(pmt_t pair);
+PMT_API pmt_t cadr(pmt_t pair);
+PMT_API pmt_t cdar(pmt_t pair);
+PMT_API pmt_t cddr(pmt_t pair);
+PMT_API pmt_t caddr(pmt_t pair);
+PMT_API pmt_t cadddr(pmt_t pair);
/*
* ------------------------------------------------------------------------
@@ -288,30 +290,30 @@ GRUEL_API pmt_t cadddr(pmt_t pair);
*/
//! Return true if \p x is a tuple, othewise false.
-GRUEL_API bool is_tuple(pmt_t x);
+PMT_API bool is_tuple(pmt_t x);
-GRUEL_API pmt_t make_tuple();
-GRUEL_API pmt_t make_tuple(const pmt_t &e0);
-GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1);
-GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2);
-GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3);
-GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4);
-GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5);
-GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6);
-GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7);
-GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8);
-GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8, const pmt_t &e9);
+PMT_API pmt_t make_tuple();
+PMT_API pmt_t make_tuple(const pmt_t &e0);
+PMT_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1);
+PMT_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2);
+PMT_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3);
+PMT_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4);
+PMT_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5);
+PMT_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6);
+PMT_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7);
+PMT_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8);
+PMT_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8, const pmt_t &e9);
/*!
* If \p x is a vector or proper list, return a tuple containing the elements of x
*/
-GRUEL_API pmt_t to_tuple(const pmt_t &x);
+PMT_API pmt_t to_tuple(const pmt_t &x);
/*!
* Return the contents of position \p k of \p tuple.
* \p k must be a valid index of \p tuple.
*/
-GRUEL_API pmt_t tuple_ref(const pmt_t &tuple, size_t k);
+PMT_API pmt_t tuple_ref(const pmt_t &tuple, size_t k);
/*
* ------------------------------------------------------------------------
@@ -322,22 +324,22 @@ GRUEL_API pmt_t tuple_ref(const pmt_t &tuple, size_t k);
*/
//! Return true if \p x is a vector, othewise false.
-GRUEL_API bool is_vector(pmt_t x);
+PMT_API bool is_vector(pmt_t x);
//! Make a vector of length \p k, with initial values set to \p fill
-GRUEL_API pmt_t make_vector(size_t k, pmt_t fill);
+PMT_API pmt_t make_vector(size_t k, pmt_t fill);
/*!
* Return the contents of position \p k of \p vector.
* \p k must be a valid index of \p vector.
*/
-GRUEL_API pmt_t vector_ref(pmt_t vector, size_t k);
+PMT_API pmt_t vector_ref(pmt_t vector, size_t k);
//! Store \p obj in position \p k.
-GRUEL_API void vector_set(pmt_t vector, size_t k, pmt_t obj);
+PMT_API void vector_set(pmt_t vector, size_t k, pmt_t obj);
//! Store \p fill in every position of \p vector
-GRUEL_API void vector_fill(pmt_t vector, pmt_t fill);
+PMT_API void vector_fill(pmt_t vector, pmt_t fill);
/*
* ------------------------------------------------------------------------
@@ -348,7 +350,7 @@ GRUEL_API void vector_fill(pmt_t vector, pmt_t fill);
*/
//! Return true if \p x is a blob, othewise false.
-GRUEL_API bool is_blob(pmt_t x);
+PMT_API bool is_blob(pmt_t x);
/*!
* \brief Make a blob given a pointer and length in bytes
@@ -358,13 +360,13 @@ GRUEL_API bool is_blob(pmt_t x);
*
* The data is copied into the blob.
*/
-GRUEL_API pmt_t make_blob(const void *buf, size_t len);
+PMT_API pmt_t make_blob(const void *buf, size_t len);
//! Return a pointer to the blob's data
-GRUEL_API const void *blob_data(pmt_t blob);
+PMT_API const void *blob_data(pmt_t blob);
//! Return the blob's length in bytes
-GRUEL_API size_t blob_length(pmt_t blob);
+PMT_API size_t blob_length(pmt_t blob);
/*!
* <pre>
@@ -396,146 +398,146 @@ GRUEL_API size_t blob_length(pmt_t blob);
*/
//! true if \p x is any kind of uniform numeric vector
-GRUEL_API bool is_uniform_vector(pmt_t x);
-
-GRUEL_API bool is_u8vector(pmt_t x);
-GRUEL_API bool is_s8vector(pmt_t x);
-GRUEL_API bool is_u16vector(pmt_t x);
-GRUEL_API bool is_s16vector(pmt_t x);
-GRUEL_API bool is_u32vector(pmt_t x);
-GRUEL_API bool is_s32vector(pmt_t x);
-GRUEL_API bool is_u64vector(pmt_t x);
-GRUEL_API bool is_s64vector(pmt_t x);
-GRUEL_API bool is_f32vector(pmt_t x);
-GRUEL_API bool is_f64vector(pmt_t x);
-GRUEL_API bool is_c32vector(pmt_t x);
-GRUEL_API bool is_c64vector(pmt_t x);
-
-GRUEL_API pmt_t make_u8vector(size_t k, uint8_t fill);
-GRUEL_API pmt_t make_s8vector(size_t k, int8_t fill);
-GRUEL_API pmt_t make_u16vector(size_t k, uint16_t fill);
-GRUEL_API pmt_t make_s16vector(size_t k, int16_t fill);
-GRUEL_API pmt_t make_u32vector(size_t k, uint32_t fill);
-GRUEL_API pmt_t make_s32vector(size_t k, int32_t fill);
-GRUEL_API pmt_t make_u64vector(size_t k, uint64_t fill);
-GRUEL_API pmt_t make_s64vector(size_t k, int64_t fill);
-GRUEL_API pmt_t make_f32vector(size_t k, float fill);
-GRUEL_API pmt_t make_f64vector(size_t k, double fill);
-GRUEL_API pmt_t make_c32vector(size_t k, std::complex<float> fill);
-GRUEL_API pmt_t make_c64vector(size_t k, std::complex<double> fill);
-
-GRUEL_API pmt_t init_u8vector(size_t k, const uint8_t *data);
-GRUEL_API pmt_t init_u8vector(size_t k, const std::vector<uint8_t> &data);
-GRUEL_API pmt_t init_s8vector(size_t k, const int8_t *data);
-GRUEL_API pmt_t init_s8vector(size_t k, const std::vector<int8_t> &data);
-GRUEL_API pmt_t init_u16vector(size_t k, const uint16_t *data);
-GRUEL_API pmt_t init_u16vector(size_t k, const std::vector<uint16_t> &data);
-GRUEL_API pmt_t init_s16vector(size_t k, const int16_t *data);
-GRUEL_API pmt_t init_s16vector(size_t k, const std::vector<int16_t> &data);
-GRUEL_API pmt_t init_u32vector(size_t k, const uint32_t *data);
-GRUEL_API pmt_t init_u32vector(size_t k, const std::vector<uint32_t> &data);
-GRUEL_API pmt_t init_s32vector(size_t k, const int32_t *data);
-GRUEL_API pmt_t init_s32vector(size_t k, const std::vector<int32_t> &data);
-GRUEL_API pmt_t init_u64vector(size_t k, const uint64_t *data);
-GRUEL_API pmt_t init_u64vector(size_t k, const std::vector<uint64_t> &data);
-GRUEL_API pmt_t init_s64vector(size_t k, const int64_t *data);
-GRUEL_API pmt_t init_s64vector(size_t k, const std::vector<int64_t> &data);
-GRUEL_API pmt_t init_f32vector(size_t k, const float *data);
-GRUEL_API pmt_t init_f32vector(size_t k, const std::vector<float> &data);
-GRUEL_API pmt_t init_f64vector(size_t k, const double *data);
-GRUEL_API pmt_t init_f64vector(size_t k, const std::vector<double> &data);
-GRUEL_API pmt_t init_c32vector(size_t k, const std::complex<float> *data);
-GRUEL_API pmt_t init_c32vector(size_t k, const std::vector<std::complex<float> > &data);
-GRUEL_API pmt_t init_c64vector(size_t k, const std::complex<double> *data);
-GRUEL_API pmt_t init_c64vector(size_t k, const std::vector<std::complex<double> > &data);
-
-GRUEL_API uint8_t u8vector_ref(pmt_t v, size_t k);
-GRUEL_API int8_t s8vector_ref(pmt_t v, size_t k);
-GRUEL_API uint16_t u16vector_ref(pmt_t v, size_t k);
-GRUEL_API int16_t s16vector_ref(pmt_t v, size_t k);
-GRUEL_API uint32_t u32vector_ref(pmt_t v, size_t k);
-GRUEL_API int32_t s32vector_ref(pmt_t v, size_t k);
-GRUEL_API uint64_t u64vector_ref(pmt_t v, size_t k);
-GRUEL_API int64_t s64vector_ref(pmt_t v, size_t k);
-GRUEL_API float f32vector_ref(pmt_t v, size_t k);
-GRUEL_API double f64vector_ref(pmt_t v, size_t k);
-GRUEL_API std::complex<float> c32vector_ref(pmt_t v, size_t k);
-GRUEL_API std::complex<double> c64vector_ref(pmt_t v, size_t k);
-
-GRUEL_API void u8vector_set(pmt_t v, size_t k, uint8_t x); //< v[k] = x
-GRUEL_API void s8vector_set(pmt_t v, size_t k, int8_t x);
-GRUEL_API void u16vector_set(pmt_t v, size_t k, uint16_t x);
-GRUEL_API void s16vector_set(pmt_t v, size_t k, int16_t x);
-GRUEL_API void u32vector_set(pmt_t v, size_t k, uint32_t x);
-GRUEL_API void s32vector_set(pmt_t v, size_t k, int32_t x);
-GRUEL_API void u64vector_set(pmt_t v, size_t k, uint64_t x);
-GRUEL_API void s64vector_set(pmt_t v, size_t k, int64_t x);
-GRUEL_API void f32vector_set(pmt_t v, size_t k, float x);
-GRUEL_API void f64vector_set(pmt_t v, size_t k, double x);
-GRUEL_API void c32vector_set(pmt_t v, size_t k, std::complex<float> x);
-GRUEL_API void c64vector_set(pmt_t v, size_t k, std::complex<double> x);
+PMT_API bool is_uniform_vector(pmt_t x);
+
+PMT_API bool is_u8vector(pmt_t x);
+PMT_API bool is_s8vector(pmt_t x);
+PMT_API bool is_u16vector(pmt_t x);
+PMT_API bool is_s16vector(pmt_t x);
+PMT_API bool is_u32vector(pmt_t x);
+PMT_API bool is_s32vector(pmt_t x);
+PMT_API bool is_u64vector(pmt_t x);
+PMT_API bool is_s64vector(pmt_t x);
+PMT_API bool is_f32vector(pmt_t x);
+PMT_API bool is_f64vector(pmt_t x);
+PMT_API bool is_c32vector(pmt_t x);
+PMT_API bool is_c64vector(pmt_t x);
+
+PMT_API pmt_t make_u8vector(size_t k, uint8_t fill);
+PMT_API pmt_t make_s8vector(size_t k, int8_t fill);
+PMT_API pmt_t make_u16vector(size_t k, uint16_t fill);
+PMT_API pmt_t make_s16vector(size_t k, int16_t fill);
+PMT_API pmt_t make_u32vector(size_t k, uint32_t fill);
+PMT_API pmt_t make_s32vector(size_t k, int32_t fill);
+PMT_API pmt_t make_u64vector(size_t k, uint64_t fill);
+PMT_API pmt_t make_s64vector(size_t k, int64_t fill);
+PMT_API pmt_t make_f32vector(size_t k, float fill);
+PMT_API pmt_t make_f64vector(size_t k, double fill);
+PMT_API pmt_t make_c32vector(size_t k, std::complex<float> fill);
+PMT_API pmt_t make_c64vector(size_t k, std::complex<double> fill);
+
+PMT_API pmt_t init_u8vector(size_t k, const uint8_t *data);
+PMT_API pmt_t init_u8vector(size_t k, const std::vector<uint8_t> &data);
+PMT_API pmt_t init_s8vector(size_t k, const int8_t *data);
+PMT_API pmt_t init_s8vector(size_t k, const std::vector<int8_t> &data);
+PMT_API pmt_t init_u16vector(size_t k, const uint16_t *data);
+PMT_API pmt_t init_u16vector(size_t k, const std::vector<uint16_t> &data);
+PMT_API pmt_t init_s16vector(size_t k, const int16_t *data);
+PMT_API pmt_t init_s16vector(size_t k, const std::vector<int16_t> &data);
+PMT_API pmt_t init_u32vector(size_t k, const uint32_t *data);
+PMT_API pmt_t init_u32vector(size_t k, const std::vector<uint32_t> &data);
+PMT_API pmt_t init_s32vector(size_t k, const int32_t *data);
+PMT_API pmt_t init_s32vector(size_t k, const std::vector<int32_t> &data);
+PMT_API pmt_t init_u64vector(size_t k, const uint64_t *data);
+PMT_API pmt_t init_u64vector(size_t k, const std::vector<uint64_t> &data);
+PMT_API pmt_t init_s64vector(size_t k, const int64_t *data);
+PMT_API pmt_t init_s64vector(size_t k, const std::vector<int64_t> &data);
+PMT_API pmt_t init_f32vector(size_t k, const float *data);
+PMT_API pmt_t init_f32vector(size_t k, const std::vector<float> &data);
+PMT_API pmt_t init_f64vector(size_t k, const double *data);
+PMT_API pmt_t init_f64vector(size_t k, const std::vector<double> &data);
+PMT_API pmt_t init_c32vector(size_t k, const std::complex<float> *data);
+PMT_API pmt_t init_c32vector(size_t k, const std::vector<std::complex<float> > &data);
+PMT_API pmt_t init_c64vector(size_t k, const std::complex<double> *data);
+PMT_API pmt_t init_c64vector(size_t k, const std::vector<std::complex<double> > &data);
+
+PMT_API uint8_t u8vector_ref(pmt_t v, size_t k);
+PMT_API int8_t s8vector_ref(pmt_t v, size_t k);
+PMT_API uint16_t u16vector_ref(pmt_t v, size_t k);
+PMT_API int16_t s16vector_ref(pmt_t v, size_t k);
+PMT_API uint32_t u32vector_ref(pmt_t v, size_t k);
+PMT_API int32_t s32vector_ref(pmt_t v, size_t k);
+PMT_API uint64_t u64vector_ref(pmt_t v, size_t k);
+PMT_API int64_t s64vector_ref(pmt_t v, size_t k);
+PMT_API float f32vector_ref(pmt_t v, size_t k);
+PMT_API double f64vector_ref(pmt_t v, size_t k);
+PMT_API std::complex<float> c32vector_ref(pmt_t v, size_t k);
+PMT_API std::complex<double> c64vector_ref(pmt_t v, size_t k);
+
+PMT_API void u8vector_set(pmt_t v, size_t k, uint8_t x); //< v[k] = x
+PMT_API void s8vector_set(pmt_t v, size_t k, int8_t x);
+PMT_API void u16vector_set(pmt_t v, size_t k, uint16_t x);
+PMT_API void s16vector_set(pmt_t v, size_t k, int16_t x);
+PMT_API void u32vector_set(pmt_t v, size_t k, uint32_t x);
+PMT_API void s32vector_set(pmt_t v, size_t k, int32_t x);
+PMT_API void u64vector_set(pmt_t v, size_t k, uint64_t x);
+PMT_API void s64vector_set(pmt_t v, size_t k, int64_t x);
+PMT_API void f32vector_set(pmt_t v, size_t k, float x);
+PMT_API void f64vector_set(pmt_t v, size_t k, double x);
+PMT_API void c32vector_set(pmt_t v, size_t k, std::complex<float> x);
+PMT_API void c64vector_set(pmt_t v, size_t k, std::complex<double> x);
// Return const pointers to the elements
-GRUEL_API const void *uniform_vector_elements(pmt_t v, size_t &len); //< works with any; len is in bytes
-
-GRUEL_API const uint8_t *u8vector_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API const int8_t *s8vector_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API const uint16_t *u16vector_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API const int16_t *s16vector_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API const uint32_t *u32vector_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API const int32_t *s32vector_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API const uint64_t *u64vector_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API const int64_t *s64vector_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API const float *f32vector_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API const double *f64vector_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API const std::complex<float> *c32vector_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API const std::complex<double> *c64vector_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API const void *uniform_vector_elements(pmt_t v, size_t &len); //< works with any; len is in bytes
+
+PMT_API const uint8_t *u8vector_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API const int8_t *s8vector_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API const uint16_t *u16vector_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API const int16_t *s16vector_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API const uint32_t *u32vector_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API const int32_t *s32vector_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API const uint64_t *u64vector_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API const int64_t *s64vector_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API const float *f32vector_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API const double *f64vector_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API const std::complex<float> *c32vector_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API const std::complex<double> *c64vector_elements(pmt_t v, size_t &len); //< len is in elements
// len is in elements
-GRUEL_API const std::vector<uint8_t> u8vector_elements(pmt_t v);
-GRUEL_API const std::vector<int8_t> s8vector_elements(pmt_t v);
-GRUEL_API const std::vector<uint16_t> u16vector_elements(pmt_t v);
-GRUEL_API const std::vector<int16_t> s16vector_elements(pmt_t v);
-GRUEL_API const std::vector<uint32_t> u32vector_elements(pmt_t v);
-GRUEL_API const std::vector<int32_t> s32vector_elements(pmt_t v);
-GRUEL_API const std::vector<uint64_t> u64vector_elements(pmt_t v);
-GRUEL_API const std::vector<int64_t> s64vector_elements(pmt_t v);
-GRUEL_API const std::vector<float> f32vector_elements(pmt_t v);
-GRUEL_API const std::vector<double> f64vector_elements(pmt_t v);
-GRUEL_API const std::vector<std::complex<float> > c32vector_elements(pmt_t v);
-GRUEL_API const std::vector<std::complex<double> > c64vector_elements(pmt_t v);
+PMT_API const std::vector<uint8_t> u8vector_elements(pmt_t v);
+PMT_API const std::vector<int8_t> s8vector_elements(pmt_t v);
+PMT_API const std::vector<uint16_t> u16vector_elements(pmt_t v);
+PMT_API const std::vector<int16_t> s16vector_elements(pmt_t v);
+PMT_API const std::vector<uint32_t> u32vector_elements(pmt_t v);
+PMT_API const std::vector<int32_t> s32vector_elements(pmt_t v);
+PMT_API const std::vector<uint64_t> u64vector_elements(pmt_t v);
+PMT_API const std::vector<int64_t> s64vector_elements(pmt_t v);
+PMT_API const std::vector<float> f32vector_elements(pmt_t v);
+PMT_API const std::vector<double> f64vector_elements(pmt_t v);
+PMT_API const std::vector<std::complex<float> > c32vector_elements(pmt_t v);
+PMT_API const std::vector<std::complex<double> > c64vector_elements(pmt_t v);
// len is in elements
-GRUEL_API const std::vector<uint8_t> pmt_u8vector_elements(pmt_t v);
-GRUEL_API const std::vector<int8_t> pmt_s8vector_elements(pmt_t v);
-GRUEL_API const std::vector<uint16_t> pmt_u16vector_elements(pmt_t v);
-GRUEL_API const std::vector<int16_t> pmt_s16vector_elements(pmt_t v);
-GRUEL_API const std::vector<uint32_t> pmt_u32vector_elements(pmt_t v);
-GRUEL_API const std::vector<int32_t> pmt_s32vector_elements(pmt_t v);
-GRUEL_API const std::vector<uint64_t> pmt_u64vector_elements(pmt_t v);
-GRUEL_API const std::vector<int64_t> pmt_s64vector_elements(pmt_t v);
-GRUEL_API const std::vector<float> pmt_f32vector_elements(pmt_t v);
-GRUEL_API const std::vector<double> pmt_f64vector_elements(pmt_t v);
-GRUEL_API const std::vector<std::complex<float> > pmt_c32vector_elements(pmt_t v);
-GRUEL_API const std::vector<std::complex<double> > pmt_c64vector_elements(pmt_t v);
+PMT_API const std::vector<uint8_t> pmt_u8vector_elements(pmt_t v);
+PMT_API const std::vector<int8_t> pmt_s8vector_elements(pmt_t v);
+PMT_API const std::vector<uint16_t> pmt_u16vector_elements(pmt_t v);
+PMT_API const std::vector<int16_t> pmt_s16vector_elements(pmt_t v);
+PMT_API const std::vector<uint32_t> pmt_u32vector_elements(pmt_t v);
+PMT_API const std::vector<int32_t> pmt_s32vector_elements(pmt_t v);
+PMT_API const std::vector<uint64_t> pmt_u64vector_elements(pmt_t v);
+PMT_API const std::vector<int64_t> pmt_s64vector_elements(pmt_t v);
+PMT_API const std::vector<float> pmt_f32vector_elements(pmt_t v);
+PMT_API const std::vector<double> pmt_f64vector_elements(pmt_t v);
+PMT_API const std::vector<std::complex<float> > pmt_c32vector_elements(pmt_t v);
+PMT_API const std::vector<std::complex<double> > pmt_c64vector_elements(pmt_t v);
// Return non-const pointers to the elements
-GRUEL_API void *uniform_vector_writable_elements(pmt_t v, size_t &len); //< works with any; len is in bytes
-
-GRUEL_API uint8_t *u8vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API int8_t *s8vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API uint16_t *u16vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API int16_t *s16vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API uint32_t *u32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API int32_t *s32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API uint64_t *u64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API int64_t *s64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API float *f32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API double *f64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API std::complex<float> *c32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
-GRUEL_API std::complex<double> *c64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API void *uniform_vector_writable_elements(pmt_t v, size_t &len); //< works with any; len is in bytes
+
+PMT_API uint8_t *u8vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API int8_t *s8vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API uint16_t *u16vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API int16_t *s16vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API uint32_t *u32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API int32_t *s32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API uint64_t *u64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API int64_t *s64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API float *f32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API double *f64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API std::complex<float> *c32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
+PMT_API std::complex<double> *c64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements
/*
* ------------------------------------------------------------------------
@@ -548,31 +550,31 @@ GRUEL_API std::complex<double> *c64vector_writable_elements(pmt_t v, size_t &len
*/
//! Return true if \p obj is a dictionary
-GRUEL_API bool is_dict(const pmt_t &obj);
+PMT_API bool is_dict(const pmt_t &obj);
//! Make an empty dictionary
-GRUEL_API pmt_t make_dict();
+PMT_API pmt_t make_dict();
//! Return a new dictionary with \p key associated with \p value.
-GRUEL_API pmt_t dict_add(const pmt_t &dict, const pmt_t &key, const pmt_t &value);
+PMT_API pmt_t dict_add(const pmt_t &dict, const pmt_t &key, const pmt_t &value);
//! Return a new dictionary with \p key removed.
-GRUEL_API pmt_t dict_delete(const pmt_t &dict, const pmt_t &key);
+PMT_API pmt_t dict_delete(const pmt_t &dict, const pmt_t &key);
//! Return true if \p key exists in \p dict
-GRUEL_API bool dict_has_key(const pmt_t &dict, const pmt_t &key);
+PMT_API bool dict_has_key(const pmt_t &dict, const pmt_t &key);
//! If \p key exists in \p dict, return associated value; otherwise return \p not_found.
-GRUEL_API pmt_t dict_ref(const pmt_t &dict, const pmt_t &key, const pmt_t &not_found);
+PMT_API pmt_t dict_ref(const pmt_t &dict, const pmt_t &key, const pmt_t &not_found);
//! Return list of (key . value) pairs
-GRUEL_API pmt_t dict_items(pmt_t dict);
+PMT_API pmt_t dict_items(pmt_t dict);
//! Return list of keys
-GRUEL_API pmt_t dict_keys(pmt_t dict);
+PMT_API pmt_t dict_keys(pmt_t dict);
//! Return list of values
-GRUEL_API pmt_t dict_values(pmt_t dict);
+PMT_API pmt_t dict_values(pmt_t dict);
/*
* ------------------------------------------------------------------------
@@ -584,31 +586,31 @@ GRUEL_API pmt_t dict_values(pmt_t dict);
*/
//! Return true if \p obj is an any
-GRUEL_API bool is_any(pmt_t obj);
+PMT_API bool is_any(pmt_t obj);
//! make an any
-GRUEL_API pmt_t make_any(const boost::any &any);
+PMT_API pmt_t make_any(const boost::any &any);
//! Return underlying boost::any
-GRUEL_API boost::any any_ref(pmt_t obj);
+PMT_API boost::any any_ref(pmt_t obj);
//! Store \p any in \p obj
-GRUEL_API void any_set(pmt_t obj, const boost::any &any);
+PMT_API void any_set(pmt_t obj, const boost::any &any);
/*
* ------------------------------------------------------------------------
- * msg_accepter -- pmt representation of gruel::msg_accepter
+ * msg_accepter -- pmt representation of pmt::msg_accepter
* ------------------------------------------------------------------------
*/
//! Return true if \p obj is a msg_accepter
-GRUEL_API bool is_msg_accepter(const pmt_t &obj);
+PMT_API bool is_msg_accepter(const pmt_t &obj);
//! make a msg_accepter
-GRUEL_API pmt_t make_msg_accepter(boost::shared_ptr<gruel::msg_accepter> ma);
+PMT_API pmt_t make_msg_accepter(boost::shared_ptr<gr::messages::msg_accepter> ma);
//! Return underlying msg_accepter
-GRUEL_API boost::shared_ptr<gruel::msg_accepter> msg_accepter_ref(const pmt_t &obj);
+PMT_API boost::shared_ptr<gr::messages::msg_accepter> msg_accepter_ref(const pmt_t &obj);
/*
* ------------------------------------------------------------------------
@@ -617,7 +619,7 @@ GRUEL_API boost::shared_ptr<gruel::msg_accepter> msg_accepter_ref(const pmt_t &o
*/
//! Return true if x and y are the same object; otherwise return false.
-GRUEL_API bool eq(const pmt_t& x, const pmt_t& y);
+PMT_API bool eq(const pmt_t& x, const pmt_t& y);
/*!
* \brief Return true if x and y should normally be regarded as the same object, else false.
@@ -632,7 +634,7 @@ GRUEL_API bool eq(const pmt_t& x, const pmt_t& y);
* x and y are pairs or vectors that denote same location in store.
* </pre>
*/
-GRUEL_API bool eqv(const pmt_t& x, const pmt_t& y);
+PMT_API bool eqv(const pmt_t& x, const pmt_t& y);
/*!
* pmt::equal recursively compares the contents of pairs and vectors,
@@ -640,11 +642,11 @@ GRUEL_API bool eqv(const pmt_t& x, const pmt_t& y);
* pmt::equal may fail to terminate if its arguments are circular data
* structures.
*/
-GRUEL_API bool equal(const pmt_t& x, const pmt_t& y);
+PMT_API bool equal(const pmt_t& x, const pmt_t& y);
//! Return the number of elements in v
-GRUEL_API size_t length(const pmt_t& v);
+PMT_API size_t length(const pmt_t& v);
/*!
* \brief Find the first pair in \p alist whose car field is \p obj
@@ -654,7 +656,7 @@ GRUEL_API size_t length(const pmt_t& v);
* in \p alist has \p obj as its car then \#f is returned.
* Uses pmt::eq to compare \p obj with car fields of the pairs in \p alist.
*/
-GRUEL_API pmt_t assq(pmt_t obj, pmt_t alist);
+PMT_API pmt_t assq(pmt_t obj, pmt_t alist);
/*!
* \brief Find the first pair in \p alist whose car field is \p obj
@@ -664,7 +666,7 @@ GRUEL_API pmt_t assq(pmt_t obj, pmt_t alist);
* in \p alist has \p obj as its car then \#f is returned.
* Uses pmt::eqv to compare \p obj with car fields of the pairs in \p alist.
*/
-GRUEL_API pmt_t assv(pmt_t obj, pmt_t alist);
+PMT_API pmt_t assv(pmt_t obj, pmt_t alist);
/*!
* \brief Find the first pair in \p alist whose car field is \p obj
@@ -674,7 +676,7 @@ GRUEL_API pmt_t assv(pmt_t obj, pmt_t alist);
* in \p alist has \p obj as its car then \#f is returned.
* Uses pmt::equal to compare \p obj with car fields of the pairs in \p alist.
*/
-GRUEL_API pmt_t assoc(pmt_t obj, pmt_t alist);
+PMT_API pmt_t assoc(pmt_t obj, pmt_t alist);
/*!
* \brief Apply \p proc element-wise to the elements of list and returns
@@ -683,21 +685,21 @@ GRUEL_API pmt_t assoc(pmt_t obj, pmt_t alist);
* \p list must be a list. The dynamic order in which \p proc is
* applied to the elements of \p list is unspecified.
*/
-GRUEL_API pmt_t map(pmt_t proc(const pmt_t&), pmt_t list);
+PMT_API pmt_t map(pmt_t proc(const pmt_t&), pmt_t list);
/*!
* \brief reverse \p list.
*
* \p list must be a proper list.
*/
-GRUEL_API pmt_t reverse(pmt_t list);
+PMT_API pmt_t reverse(pmt_t list);
/*!
* \brief destructively reverse \p list.
*
* \p list must be a proper list.
*/
-GRUEL_API pmt_t reverse_x(pmt_t list);
+PMT_API pmt_t reverse_x(pmt_t list);
/*!
* \brief (acons x y a) == (cons (cons x y) a)
@@ -711,86 +713,86 @@ acons(pmt_t x, pmt_t y, pmt_t a)
/*!
* \brief locates \p nth element of \n list where the car is the 'zeroth' element.
*/
-GRUEL_API pmt_t nth(size_t n, pmt_t list);
+PMT_API pmt_t nth(size_t n, pmt_t list);
/*!
* \brief returns the tail of \p list that would be obtained by calling
* cdr \p n times in succession.
*/
-GRUEL_API pmt_t nthcdr(size_t n, pmt_t list);
+PMT_API pmt_t nthcdr(size_t n, pmt_t list);
/*!
* \brief Return the first sublist of \p list whose car is \p obj.
* If \p obj does not occur in \p list, then \#f is returned.
* pmt::memq use pmt::eq to compare \p obj with the elements of \p list.
*/
-GRUEL_API pmt_t memq(pmt_t obj, pmt_t list);
+PMT_API pmt_t memq(pmt_t obj, pmt_t list);
/*!
* \brief Return the first sublist of \p list whose car is \p obj.
* If \p obj does not occur in \p list, then \#f is returned.
* pmt::memv use pmt::eqv to compare \p obj with the elements of \p list.
*/
-GRUEL_API pmt_t memv(pmt_t obj, pmt_t list);
+PMT_API pmt_t memv(pmt_t obj, pmt_t list);
/*!
* \brief Return the first sublist of \p list whose car is \p obj.
* If \p obj does not occur in \p list, then \#f is returned.
* pmt::member use pmt::equal to compare \p obj with the elements of \p list.
*/
-GRUEL_API pmt_t member(pmt_t obj, pmt_t list);
+PMT_API pmt_t member(pmt_t obj, pmt_t list);
/*!
* \brief Return true if every element of \p list1 appears in \p list2, and false otherwise.
* Comparisons are done with pmt::eqv.
*/
-GRUEL_API bool subsetp(pmt_t list1, pmt_t list2);
+PMT_API bool subsetp(pmt_t list1, pmt_t list2);
/*!
* \brief Return a list of length 1 containing \p x1
*/
-GRUEL_API pmt_t list1(const pmt_t& x1);
+PMT_API pmt_t list1(const pmt_t& x1);
/*!
* \brief Return a list of length 2 containing \p x1, \p x2
*/
-GRUEL_API pmt_t list2(const pmt_t& x1, const pmt_t& x2);
+PMT_API pmt_t list2(const pmt_t& x1, const pmt_t& x2);
/*!
* \brief Return a list of length 3 containing \p x1, \p x2, \p x3
*/
-GRUEL_API pmt_t list3(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3);
+PMT_API pmt_t list3(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3);
/*!
* \brief Return a list of length 4 containing \p x1, \p x2, \p x3, \p x4
*/
-GRUEL_API pmt_t list4(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4);
+PMT_API pmt_t list4(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4);
/*!
* \brief Return a list of length 5 containing \p x1, \p x2, \p x3, \p x4, \p x5
*/
-GRUEL_API pmt_t list5(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5);
+PMT_API pmt_t list5(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5);
/*!
* \brief Return a list of length 6 containing \p x1, \p x2, \p x3, \p x4, \p
* x5, \p x6
*/
-GRUEL_API pmt_t list6(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5, const pmt_t& x6);
+PMT_API pmt_t list6(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5, const pmt_t& x6);
/*!
* \brief Return \p list with \p item added to it.
*/
-GRUEL_API pmt_t list_add(pmt_t list, const pmt_t& item);
+PMT_API pmt_t list_add(pmt_t list, const pmt_t& item);
/*!
* \brief Return \p list with \p item removed from it.
*/
-GRUEL_API pmt_t list_rm(pmt_t list, const pmt_t& item);
+PMT_API pmt_t list_rm(pmt_t list, const pmt_t& item);
/*!
* \brief Return bool of \p list contains \p item
*/
-GRUEL_API bool list_has(pmt_t list, const pmt_t& item);
+PMT_API bool list_has(pmt_t list, const pmt_t& item);
/*
@@ -798,10 +800,10 @@ GRUEL_API bool list_has(pmt_t list, const pmt_t& item);
* read / write
* ------------------------------------------------------------------------
*/
-extern GRUEL_API const pmt_t PMT_EOF; //< The end of file object
+extern PMT_API const pmt_t PMT_EOF; //< The end of file object
//! return true if obj is the EOF object, otherwise return false.
-GRUEL_API bool is_eof_object(pmt_t obj);
+PMT_API bool is_eof_object(pmt_t obj);
/*!
* read converts external representations of pmt objects into the
@@ -818,26 +820,26 @@ GRUEL_API bool is_eof_object(pmt_t obj);
* representation, but the external representation is incomplete and
* therefore not parsable, an error is signaled.
*/
-GRUEL_API pmt_t read(std::istream &port);
+PMT_API pmt_t read(std::istream &port);
/*!
* Write a written representation of \p obj to the given \p port.
*/
-GRUEL_API void write(pmt_t obj, std::ostream &port);
+PMT_API void write(pmt_t obj, std::ostream &port);
/*!
* Return a string representation of \p obj.
* This is the same output as would be generated by pmt::write.
*/
-GRUEL_API std::string write_string(pmt_t obj);
+PMT_API std::string write_string(pmt_t obj);
-GRUEL_API std::ostream& operator<<(std::ostream &os, pmt_t obj);
+PMT_API std::ostream& operator<<(std::ostream &os, pmt_t obj);
/*!
* \brief Write pmt string representation to stdout.
*/
-GRUEL_API void print(pmt_t v);
+PMT_API void print(pmt_t v);
/*
@@ -848,25 +850,25 @@ GRUEL_API void print(pmt_t v);
/*!
* \brief Write portable byte-serial representation of \p obj to \p sink
*/
-GRUEL_API bool serialize(pmt_t obj, std::streambuf &sink);
+PMT_API bool serialize(pmt_t obj, std::streambuf &sink);
/*!
* \brief Create obj from portable byte-serial representation
*/
-GRUEL_API pmt_t deserialize(std::streambuf &source);
+PMT_API pmt_t deserialize(std::streambuf &source);
-GRUEL_API void dump_sizeof(); // debugging
+PMT_API void dump_sizeof(); // debugging
/*!
* \brief Provide a simple string generating interface to pmt's serialize function
*/
-GRUEL_API std::string serialize_str(pmt_t obj);
+PMT_API std::string serialize_str(pmt_t obj);
/*!
* \brief Provide a simple string generating interface to pmt's deserialize function
*/
-GRUEL_API pmt_t deserialize_str(std::string str);
+PMT_API pmt_t deserialize_str(std::string str);
/*!
* \brief Provide a comparator function object to allow pmt use in stl types
@@ -879,6 +881,6 @@ class comperator {
} /* namespace pmt */
-#include <gruel/pmt_sugar.h>
+#include <pmt/pmt_sugar.h>
#endif /* INCLUDED_PMT_H */
diff --git a/gruel/src/include/gruel/pmt_pool.h b/gnuradio-runtime/include/pmt/pmt_pool.h
index 93c5290ad5..a8cb8e6314 100644
--- a/gruel/src/include/gruel/pmt_pool.h
+++ b/gnuradio-runtime/include/pmt/pmt_pool.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2007,2009 Free Software Foundation, Inc.
+ * Copyright 2007,2009,2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -21,7 +21,7 @@
#ifndef INCLUDED_PMT_POOL_H
#define INCLUDED_PMT_POOL_H
-#include <gruel/api.h>
+#include <pmt/api.h>
#include <cstddef>
#include <vector>
#include <boost/thread.hpp>
@@ -34,9 +34,9 @@ namespace pmt {
* FIXME may want to go to global allocation with per-thread free list.
* This would eliminate virtually all lock contention.
*/
-class GRUEL_API pmt_pool {
+class PMT_API pmt_pool {
- struct GRUEL_API item {
+ struct PMT_API item {
struct item *d_next;
};
diff --git a/gruel/src/include/gruel/pmt_sugar.h b/gnuradio-runtime/include/pmt/pmt_sugar.h
index 7791bcce6a..09c9a5e3e4 100644
--- a/gruel/src/include/gruel/pmt_sugar.h
+++ b/gnuradio-runtime/include/pmt/pmt_sugar.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2009 Free Software Foundation, Inc.
+ * Copyright 2009,2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -18,14 +18,17 @@
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#ifndef INCLUDED_GRUEL_PMT_SUGAR_H
-#define INCLUDED_GRUEL_PMT_SUGAR_H
+
+#ifndef INCLUDED_PMT_SUGAR_H
+#define INCLUDED_PMT_SUGAR_H
/*!
* This file is included by pmt.h and contains pseudo-constructor
* shorthand for making pmt objects
*/
+#include <messages/msg_accepter.h>
+
namespace pmt {
//! Make pmt symbol
@@ -82,7 +85,7 @@ namespace pmt {
//! Make pmt msg_accepter
static inline pmt_t
- mp(boost::shared_ptr<gruel::msg_accepter> ma)
+ mp(boost::shared_ptr<gr::messages::msg_accepter> ma)
{
return make_msg_accepter(ma);
}
@@ -168,4 +171,4 @@ namespace pmt {
} /* namespace pmt */
-#endif /* INCLUDED_GRUEL_PMT_SUGAR_H */
+#endif /* INCLUDED_PMT_SUGAR_H */
diff --git a/gruel/src/include/gruel/realtime.h b/gnuradio-runtime/include/realtime.h
index 13673ecb36..9a51a6ba1d 100644
--- a/gruel/src/include/gruel/realtime.h
+++ b/gnuradio-runtime/include/realtime.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2006,2008 Free Software Foundation, Inc.
+ * Copyright 2006,2008,2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -20,10 +20,10 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef INCLUDED_GRUEL_REALTIME_H
-#define INCLUDED_GRUEL_REALTIME_H
+#ifndef INCLUDED_GNURADIO_REALTIME_H
+#define INCLUDED_GNURADIO_REALTIME_H
-#include <gruel/api.h>
+#include <gr_runtime_api.h>
#include <stdexcept>
/*!
@@ -32,7 +32,7 @@
* \sa sys_pri.h
*/
-namespace gruel {
+namespace gr {
typedef enum {
RT_OK = 0,
@@ -59,7 +59,7 @@ namespace gruel {
static inline int rt_priority_max() { return 15; }
static inline int rt_priority_default() { return 1; }
- struct GRUEL_API rt_sched_param {
+ struct GR_RUNTIME_API rt_sched_param {
int priority;
rt_sched_policy policy;
@@ -89,8 +89,8 @@ namespace gruel {
// NOTE: If you change this, you need to change the code in
// gnuradio-core/src/lib/runtime/gr_realtime.i, see note there.
rt_status_t
- GRUEL_API enable_realtime_scheduling(rt_sched_param = rt_sched_param());
+ GR_RUNTIME_API enable_realtime_scheduling(rt_sched_param = rt_sched_param());
-} // namespace gruel
+} // namespace gr
-#endif /* INCLUDED_GRUEL_REALTIME_H */
+#endif /* INCLUDED_GNURADIO_REALTIME_H */
diff --git a/gnuradio-runtime/include/rpccallbackregister_base.h b/gnuradio-runtime/include/rpccallbackregister_base.h
index dbfda4ed47..f2cd1d8051 100644
--- a/gnuradio-runtime/include/rpccallbackregister_base.h
+++ b/gnuradio-runtime/include/rpccallbackregister_base.h
@@ -23,8 +23,8 @@
#ifndef RPCCALLBACKREGISTER_BASE_H
#define RPCCALLBACKREGISTER_BASE_H
-#include <gruel/msg_accepter.h>
-#include <gruel/msg_producer.h>
+#include <messages/msg_accepter.h>
+#include <messages/msg_producer.h>
typedef uint32_t DisplayType;
@@ -90,8 +90,8 @@ struct callbackregister_base
Tsptr callback;
};
- typedef callback_t<gruel::msg_accepter, gruel::msg_accepter_sptr> configureCallback_t;
- typedef callback_t<gruel::msg_producer, gruel::msg_producer_sptr> queryCallback_t;
+ typedef callback_t<gr::messages::msg_accepter, gr::messages::msg_accepter_sptr> configureCallback_t;
+ typedef callback_t<gr::messages::msg_producer, gr::messages::msg_producer_sptr> queryCallback_t;
callbackregister_base() {;}
virtual ~callbackregister_base() {;}
diff --git a/gnuradio-runtime/include/rpcpmtconverters_ice.h b/gnuradio-runtime/include/rpcpmtconverters_ice.h
index 4403b96a2a..e592f4cdfb 100644
--- a/gnuradio-runtime/include/rpcpmtconverters_ice.h
+++ b/gnuradio-runtime/include/rpcpmtconverters_ice.h
@@ -23,7 +23,7 @@
#ifndef RPCPMTCONVERTERS_ICE_H
#define RPCPMTCONVERTERS_ICE_H
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
#include <gnuradio.h>
namespace rpcpmtconverter
diff --git a/gnuradio-runtime/include/rpcregisterhelpers.h b/gnuradio-runtime/include/rpcregisterhelpers.h
index 1be3769ac8..b09aae9704 100644
--- a/gnuradio-runtime/include/rpcregisterhelpers.h
+++ b/gnuradio-runtime/include/rpcregisterhelpers.h
@@ -34,7 +34,7 @@
// Base classes
template<typename T, typename Tto> class rpcextractor_base
- : public virtual gruel::msg_accepter
+ : public virtual gr::messages::msg_accepter
{
public:
rpcextractor_base(T* source, void (T::*func)(Tto)) :
@@ -60,7 +60,7 @@ public:
};
template<typename T, typename Tfrom>
-class rpcinserter_base : public virtual gruel::msg_producer
+class rpcinserter_base : public virtual gr::messages::msg_producer
{
public:
rpcinserter_base(T* source, Tfrom (T::*func)()) : _source(source), _func(func) {;}
diff --git a/gruel/src/include/gruel/sys_pri.h b/gnuradio-runtime/include/sys_pri.h
index c0751e52c2..745176e681 100644
--- a/gruel/src/include/gruel/sys_pri.h
+++ b/gnuradio-runtime/include/sys_pri.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2008 Free Software Foundation, Inc.
+ * Copyright 2008,2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -19,24 +19,24 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#ifndef INCLUDED_GRUEL_SYS_PRI_H
-#define INCLUDED_GRUEL_SYS_PRI_H
+#ifndef INCLUDED_GNURADIO_SYS_PRI_H
+#define INCLUDED_GNURADIO_SYS_PRI_H
-#include <gruel/api.h>
-#include <gruel/realtime.h>
+#include <gr_runtime_api.h>
+#include <realtime.h>
/*
* A single place to define real-time priorities used by the system itself
*/
-namespace gruel {
+namespace gr {
- struct GRUEL_API sys_pri {
+ struct GR_RUNTIME_API sys_pri {
static rt_sched_param python(); // python code
static rt_sched_param normal(); // normal blocks
static rt_sched_param gcell_event_handler();
static rt_sched_param usrp2_backend(); // thread that services the ethernet
};
-}
+} /* namespace gr */
-#endif /* INCLUDED_GRUEL_SYS_PRI_H */
+#endif /* INCLUDED_GNURADIO_SYS_PRI_H */
diff --git a/gnuradio-runtime/include/thread/CMakeLists.txt b/gnuradio-runtime/include/thread/CMakeLists.txt
new file mode 100644
index 0000000000..8ea4bfc66e
--- /dev/null
+++ b/gnuradio-runtime/include/thread/CMakeLists.txt
@@ -0,0 +1,29 @@
+# Copyright 2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# Install header files
+########################################################################
+install(FILES
+ thread.h
+ thread_body_wrapper.h
+ thread_group.h
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio/thread
+ COMPONENT "runtime_devel"
+)
diff --git a/gnuradio-runtime/include/thread/thread.h b/gnuradio-runtime/include/thread/thread.h
new file mode 100644
index 0000000000..548d76e9a5
--- /dev/null
+++ b/gnuradio-runtime/include/thread/thread.h
@@ -0,0 +1,144 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2009-2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef INCLUDED_THREAD_H
+#define INCLUDED_THREAD_H
+
+#include <gr_runtime_api.h>
+#include <boost/thread/thread.hpp>
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/locks.hpp>
+#include <boost/thread/condition_variable.hpp>
+#include <vector>
+
+#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+
+#include <windows.h>
+
+#endif
+
+namespace gr {
+ namespace thread {
+
+ typedef boost::thread thread;
+ typedef boost::mutex mutex;
+ typedef boost::unique_lock<boost::mutex> scoped_lock;
+ typedef boost::condition_variable condition_variable;
+
+ /*! \brief a system-dependent typedef for the underlying thread type.
+ */
+#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+ typedef HANDLE gr_thread_t;
+#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
+ typedef pthread_t gr_thread_t;
+#else
+ typedef pthread_t gr_thread_t;
+#endif
+
+ /*! \brief Get the current thread's ID as a gr_thread_t
+ *
+ * We use this when setting the thread affinity or any other
+ * low-level thread settings. Can be called withing a GNU Radio
+ * block to get a reference to its current thread ID.
+ */
+ GR_RUNTIME_API gr_thread_t get_current_thread_id();
+
+ /*! \brief Bind the current thread to a set of cores.
+ *
+ * Wrapper for system-dependent calls to set the affinity of the
+ * current thread to the processor mask. The mask is simply a
+ * 1-demensional vector containing the processor or core number
+ * from 0 to N-1 for N cores.
+ *
+ * Note: this does not work on OSX; it is a nop call since OSX
+ * does not support the concept of thread affinity (and what they
+ * do support in this way since 10.5 is not what we want or can
+ * use in this fashion).
+ */
+ GR_RUNTIME_API void thread_bind_to_processor(const std::vector<int> &mask);
+
+ /*! \brief Convineince function to bind the current thread to a single core.
+ *
+ * Wrapper for system-dependent calls to set the affinity of the
+ * current thread to a given core from 0 to N-1 for N cores.
+ *
+ * Note: this does not work on OSX; it is a nop call since OSX
+ * does not support the concept of thread affinity (and what they
+ * do support in this way since 10.5 is not what we want or can
+ * use in this fashion).
+ */
+ GR_RUNTIME_API void thread_bind_to_processor(int n);
+
+ /*! \brief Bind a thread to a set of cores.
+ *
+ * Wrapper for system-dependent calls to set the affinity of the
+ * given thread ID to the processor mask. The mask is simply a
+ * 1-demensional vector containing the processor or core number
+ * from 0 to N-1 for N cores.
+ *
+ * Note: this does not work on OSX; it is a nop call since OSX
+ * does not support the concept of thread affinity (and what they
+ * do support in this way since 10.5 is not what we want or can
+ * use in this fashion).
+ */
+ GR_RUNTIME_API void thread_bind_to_processor(gr_thread_t thread,
+ const std::vector<int> &mask);
+
+
+ /*! \brief Convineince function to bind the a thread to a single core.
+ *
+ * Wrapper for system-dependent calls to set the affinity of the
+ * given thread ID to a given core from 0 to N-1 for N cores.
+ *
+ * Note: this does not work on OSX; it is a nop call since OSX
+ * does not support the concept of thread affinity (and what they
+ * do support in this way since 10.5 is not what we want or can
+ * use in this fashion).
+ */
+ GR_RUNTIME_API void thread_bind_to_processor(gr_thread_t thread,
+ unsigned int n);
+
+ /*! \brief Remove any thread-processor affinity for the current thread.
+ *
+ * Note: this does not work on OSX; it is a nop call since OSX
+ * does not support the concept of thread affinity (and what they
+ * do support in this way since 10.5 is not what we want or can
+ * use in this fashion).
+ */
+ GR_RUNTIME_API void thread_unbind();
+
+ /*! \brief Remove any thread-processor affinity for a given thread ID.
+ *
+ * Note: this does not work on OSX; it is a nop call since OSX
+ * does not support the concept of thread affinity (and what they
+ * do support in this way since 10.5 is not what we want or can
+ * use in this fashion).
+ */
+ GR_RUNTIME_API void thread_unbind(gr_thread_t thread);
+
+ } /* namespace thread */
+} /* namespace gr */
+
+#endif /* INCLUDED_THREAD_H */
diff --git a/gruel/src/include/gruel/thread_body_wrapper.h b/gnuradio-runtime/include/thread/thread_body_wrapper.h
index e09a43e684..dcf8cff48e 100644
--- a/gruel/src/include/gruel/thread_body_wrapper.h
+++ b/gnuradio-runtime/include/thread/thread_body_wrapper.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2008,2009 Free Software Foundation, Inc.
+ * Copyright 2008,2009,2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -18,52 +18,55 @@
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+
#ifndef INCLUDED_THREAD_BODY_WRAPPER_H
#define INCLUDED_THREAD_BODY_WRAPPER_H
-#include <gruel/api.h>
-#include <gruel/thread.h>
+#include <gr_runtime_api.h>
+#include <thread/thread.h>
#include <exception>
#include <iostream>
-namespace gruel
-{
-
- GRUEL_API void mask_signals();
-
- template <class F>
- class thread_body_wrapper
- {
- F d_f;
- std::string d_name;
+namespace gr {
+ namespace thread {
- public:
+ GR_RUNTIME_API void mask_signals();
- explicit thread_body_wrapper(F f, const std::string &name="")
- : d_f(f), d_name(name) {}
-
- void operator()()
+ template <class F>
+ class thread_body_wrapper
{
- mask_signals();
+ private:
+ F d_f;
+ std::string d_name;
- try {
- d_f();
- }
- catch(boost::thread_interrupted const &)
- {
- }
- catch(std::exception const &e)
- {
- std::cerr << "thread[" << d_name << "]: "
- << e.what() << std::endl;
- }
- catch(...)
+ public:
+ explicit thread_body_wrapper(F f, const std::string &name="")
+ : d_f(f), d_name(name) {}
+
+ void operator()()
{
- std::cerr << "thread[" << d_name << "]: "
- << "caught unrecognized exception\n";
+ mask_signals();
+
+ try {
+ d_f();
+ }
+ catch(boost::thread_interrupted const &)
+ {
+ }
+ catch(std::exception const &e)
+ {
+ std::cerr << "thread[" << d_name << "]: "
+ << e.what() << std::endl;
+ }
+ catch(...)
+ {
+ std::cerr << "thread[" << d_name << "]: "
+ << "caught unrecognized exception\n";
+ }
}
- }
- };
-}
+ };
+
+ } /* namespace thread */
+} /* namespace gr */
#endif /* INCLUDED_THREAD_BODY_WRAPPER_H */
diff --git a/gnuradio-runtime/include/thread/thread_group.h b/gnuradio-runtime/include/thread/thread_group.h
new file mode 100644
index 0000000000..81b561bd64
--- /dev/null
+++ b/gnuradio-runtime/include/thread/thread_group.h
@@ -0,0 +1,48 @@
+/* -*- c++ -*- */
+/*
+ * Copyright (C) 2001-2003 William E. Kempf
+ * Copyright (C) 2007 Anthony Williams
+ * Copyright 2008,2009 Free Software Foundation, Inc.
+ *
+ * Distributed under the Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+/*
+ * This was extracted from Boost 1.35.0 and fixed.
+ */
+
+#ifndef INCLUDED_THREAD_GROUP_H
+#define INCLUDED_THREAD_GROUP_H
+
+#include <gr_runtime_api.h>
+#include <thread/thread.h>
+#include <boost/utility.hpp>
+#include <boost/thread/shared_mutex.hpp>
+#include <boost/function.hpp>
+
+namespace gr {
+ namespace thread {
+
+ class GR_RUNTIME_API thread_group : public boost::noncopyable
+ {
+ public:
+ thread_group();
+ ~thread_group();
+
+ boost::thread* create_thread(const boost::function0<void>& threadfunc);
+ void add_thread(boost::thread* thrd);
+ void remove_thread(boost::thread* thrd);
+ void join_all();
+ void interrupt_all();
+ size_t size() const;
+
+ private:
+ std::list<boost::thread*> m_threads;
+ mutable boost::shared_mutex m_mutex;
+ };
+
+ } /* namespace thread */
+} /* namespace gr */
+
+#endif /* INCLUDED_THREAD_GROUP_H */
diff --git a/gnuradio-runtime/lib/CMakeLists.txt b/gnuradio-runtime/lib/CMakeLists.txt
index 637982ffa7..1767920b5d 100644
--- a/gnuradio-runtime/lib/CMakeLists.txt
+++ b/gnuradio-runtime/lib/CMakeLists.txt
@@ -54,11 +54,17 @@ include_directories(${GNURADIO_RUNTIME_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/../include/
${Boost_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${VOLK_INCLUDE_DIRS}
)
########################################################################
+# Include subdirs rather to populate to the sources lists.
+########################################################################
+GR_INCLUDE_SUBDIRECTORY(messages)
+GR_INCLUDE_SUBDIRECTORY(pmt)
+GR_INCLUDE_SUBDIRECTORY(thread)
+
+########################################################################
# Setup library
########################################################################
list(APPEND gnuradio_runtime_sources
@@ -129,7 +135,6 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
endif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
list(APPEND gnuradio_runtime_libs
- gruel
volk
${Boost_LIBRARIES}
${LOG4CPP_LIBRARIES}
@@ -209,7 +214,7 @@ endif(TRY_SHM_VMCIRCBUF)
add_library(gnuradio-runtime SHARED ${gnuradio_runtime_sources})
target_link_libraries(gnuradio-runtime ${gnuradio_runtime_libs})
GR_LIBRARY_FOO(gnuradio-runtime RUNTIME_COMPONENT "runtime" DEVEL_COMPONENT "runtime_devel")
-set_target_properties(gnuradio-runtime PROPERTIES LINK_INTERFACE_LIBRARIES "gruel")
+#set_target_properties(gnuradio-runtime PROPERTIES LINK_INTERFACE_LIBRARIES "gruel")
add_dependencies(gnuradio-runtime
runtime_generated_includes
diff --git a/gnuradio-runtime/lib/gr_basic_block.cc b/gnuradio-runtime/lib/gr_basic_block.cc
index 35ea797167..83f6c07c87 100644
--- a/gnuradio-runtime/lib/gr_basic_block.cc
+++ b/gnuradio-runtime/lib/gr_basic_block.cc
@@ -182,7 +182,7 @@ gr_basic_block::_post(pmt::pmt_t which_port, pmt::pmt_t msg)
void
gr_basic_block::insert_tail(pmt::pmt_t which_port, pmt::pmt_t msg)
{
- gruel::scoped_lock guard(mutex);
+ gr::thread::scoped_lock guard(mutex);
if( (msg_queue.find(which_port) == msg_queue.end()) || (msg_queue_ready.find(which_port) == msg_queue_ready.end())){
std::cout << "target port = " << pmt::symbol_to_string(which_port) << std::endl;
@@ -199,7 +199,7 @@ gr_basic_block::insert_tail(pmt::pmt_t which_port, pmt::pmt_t msg)
pmt::pmt_t
gr_basic_block::delete_head_nowait(pmt::pmt_t which_port)
{
- gruel::scoped_lock guard(mutex);
+ gr::thread::scoped_lock guard(mutex);
if (empty_p(which_port)){
return pmt::pmt_t();
@@ -214,7 +214,7 @@ gr_basic_block::delete_head_nowait(pmt::pmt_t which_port)
pmt::pmt_t
gr_basic_block::delete_head_blocking(pmt::pmt_t which_port)
{
- gruel::scoped_lock guard(mutex);
+ gr::thread::scoped_lock guard(mutex);
while (empty_p(which_port)){
msg_queue_ready[which_port]->wait(guard);
diff --git a/gnuradio-runtime/lib/gr_block_detail.cc b/gnuradio-runtime/lib/gr_block_detail.cc
index af767da8ec..7098113301 100644
--- a/gnuradio-runtime/lib/gr_block_detail.cc
+++ b/gnuradio-runtime/lib/gr_block_detail.cc
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004,2009,2010 Free Software Foundation, Inc.
+ * Copyright 2004,2009,2010,2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -222,7 +222,7 @@ gr_block_detail::set_processor_affinity(const std::vector<int> &mask)
{
if(threaded) {
try {
- gruel::thread_bind_to_processor(thread, mask);
+ gr::thread::thread_bind_to_processor(thread, mask);
}
catch (std::runtime_error e) {
std::cerr << "set_processor_affinity: invalid mask." << std::endl;;
@@ -234,21 +234,21 @@ void
gr_block_detail::unset_processor_affinity()
{
if(threaded) {
- gruel::thread_unbind(thread);
+ gr::thread::thread_unbind(thread);
}
}
void
gr_block_detail::start_perf_counters()
{
- d_start_of_work = gruel::high_res_timer_now();
+ d_start_of_work = gr::high_res_timer_now();
}
void
gr_block_detail::stop_perf_counters(int noutput_items, int nproduced)
{
- d_end_of_work = gruel::high_res_timer_now();
- gruel::high_res_timer_type diff = d_end_of_work - d_start_of_work;
+ d_end_of_work = gr::high_res_timer_now();
+ gr::high_res_timer_type diff = d_end_of_work - d_start_of_work;
if(d_pc_counter == 0) {
d_ins_work_time = diff;
diff --git a/gnuradio-runtime/lib/gr_block_executor.cc b/gnuradio-runtime/lib/gr_block_executor.cc
index e070f3c508..cfef406412 100644
--- a/gnuradio-runtime/lib/gr_block_executor.cc
+++ b/gnuradio-runtime/lib/gr_block_executor.cc
@@ -71,7 +71,7 @@ min_available_space (gr_block_detail *d, int output_multiple, int min_noutput_it
if (min_noutput_items == 0)
min_noutput_items = 1;
for (int i = 0; i < d->noutputs (); i++){
- gruel::scoped_lock guard(*d->output(i)->mutex());
+ gr::thread::scoped_lock guard(*d->output(i)->mutex());
int avail_n = round_down(d->output(i)->space_available(), output_multiple);
int best_n = round_down(d->output(i)->bufsize()/2, output_multiple);
if (best_n < min_noutput_items)
@@ -239,7 +239,7 @@ gr_block_executor::run_one_iteration()
/*
* Acquire the mutex and grab local copies of items_available and done.
*/
- gruel::scoped_lock guard(*d->input(i)->mutex());
+ gr::thread::scoped_lock guard(*d->input(i)->mutex());
d_ninput_items[i] = d->input(i)->items_available();
d_input_done[i] = d->input(i)->done();
}
@@ -283,7 +283,7 @@ gr_block_executor::run_one_iteration()
/*
* Acquire the mutex and grab local copies of items_available and done.
*/
- gruel::scoped_lock guard(*d->input(i)->mutex());
+ gr::thread::scoped_lock guard(*d->input(i)->mutex());
d_ninput_items[i] = d->input(i)->items_available ();
d_input_done[i] = d->input(i)->done();
}
diff --git a/gnuradio-runtime/lib/gr_buffer.cc b/gnuradio-runtime/lib/gr_buffer.cc
index 369959d65f..bdce5b4036 100644
--- a/gnuradio-runtime/lib/gr_buffer.cc
+++ b/gnuradio-runtime/lib/gr_buffer.cc
@@ -185,7 +185,7 @@ gr_buffer::write_pointer ()
void
gr_buffer::update_write_pointer (int nitems)
{
- gruel::scoped_lock guard(*mutex());
+ gr::thread::scoped_lock guard(*mutex());
d_write_index = index_add (d_write_index, nitems);
d_abs_write_offset += nitems;
}
@@ -193,7 +193,7 @@ gr_buffer::update_write_pointer (int nitems)
void
gr_buffer::set_done (bool done)
{
- gruel::scoped_lock guard(*mutex());
+ gr::thread::scoped_lock guard(*mutex());
d_done = done;
}
@@ -229,14 +229,14 @@ gr_buffer::drop_reader (gr_buffer_reader *reader)
void
gr_buffer::add_item_tag(const gr_tag_t &tag)
{
- gruel::scoped_lock guard(*mutex());
+ gr::thread::scoped_lock guard(*mutex());
d_item_tags.push_back(tag);
}
void
gr_buffer::remove_item_tag(const gr_tag_t &tag)
{
- gruel::scoped_lock guard(*mutex());
+ gr::thread::scoped_lock guard(*mutex());
for (std::deque<gr_tag_t>::iterator it = d_item_tags.begin(); it != d_item_tags.end(); ++it) {
if (*it == tag) {
d_item_tags.erase(it);
@@ -256,7 +256,7 @@ gr_buffer::prune_tags(uint64_t max_time)
If this function is used elsewhere, remember to lock the
buffer's mutex al la the scoped_lock line below.
*/
- //gruel::scoped_lock guard(*mutex());
+ //gr::thread::scoped_lock guard(*mutex());
std::deque<gr_tag_t>::iterator itr = d_item_tags.begin();
uint64_t item_time;
@@ -313,7 +313,7 @@ gr_buffer_reader::read_pointer ()
void
gr_buffer_reader::update_read_pointer (int nitems)
{
- gruel::scoped_lock guard(*mutex());
+ gr::thread::scoped_lock guard(*mutex());
d_read_index = d_buffer->index_add (d_read_index, nitems);
d_abs_read_offset += nitems;
}
@@ -323,7 +323,7 @@ gr_buffer_reader::get_tags_in_range(std::vector<gr_tag_t> &v,
uint64_t abs_start,
uint64_t abs_end)
{
- gruel::scoped_lock guard(*mutex());
+ gr::thread::scoped_lock guard(*mutex());
v.resize(0);
std::deque<gr_tag_t>::iterator itr = d_buffer->get_tags_begin();
diff --git a/gnuradio-runtime/lib/gr_flowgraph.cc b/gnuradio-runtime/lib/gr_flowgraph.cc
index 63a2084802..28cd693171 100644
--- a/gnuradio-runtime/lib/gr_flowgraph.cc
+++ b/gnuradio-runtime/lib/gr_flowgraph.cc
@@ -49,7 +49,6 @@ gr_flowgraph::~gr_flowgraph()
{
}
-// FIXME: move to libgruel as a utility function
template<class T>
static
std::vector<T>
diff --git a/gnuradio-runtime/lib/gr_msg_queue.cc b/gnuradio-runtime/lib/gr_msg_queue.cc
index 0cf0467715..03bbe046a4 100644
--- a/gnuradio-runtime/lib/gr_msg_queue.cc
+++ b/gnuradio-runtime/lib/gr_msg_queue.cc
@@ -49,7 +49,7 @@ gr_msg_queue::insert_tail(gr_message_sptr msg)
if (msg->d_next)
throw std::invalid_argument("gr_msg_queue::insert_tail: msg already in queue");
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
while (full_p())
d_not_full.wait(guard);
@@ -72,7 +72,7 @@ gr_msg_queue::insert_tail(gr_message_sptr msg)
gr_message_sptr
gr_msg_queue::delete_head()
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
gr_message_sptr m;
while ((m = d_head) == 0)
@@ -94,7 +94,7 @@ gr_msg_queue::delete_head()
gr_message_sptr
gr_msg_queue::delete_head_nowait()
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
gr_message_sptr m;
if ((m = d_head) == 0){
diff --git a/gnuradio-runtime/lib/gr_realtime.cc b/gnuradio-runtime/lib/gr_realtime.cc
index 75b497999d..d7a7eab5ba 100644
--- a/gnuradio-runtime/lib/gr_realtime.cc
+++ b/gnuradio-runtime/lib/gr_realtime.cc
@@ -23,10 +23,11 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+
#include <gr_realtime.h>
gr_rt_status_t
gr_enable_realtime_scheduling()
{
- return gruel::enable_realtime_scheduling();
+ return gr_enable_realtime_scheduling();
}
diff --git a/gnuradio-runtime/lib/gr_scheduler_sts.cc b/gnuradio-runtime/lib/gr_scheduler_sts.cc
index 2c96def6d1..10f01edaf6 100644
--- a/gnuradio-runtime/lib/gr_scheduler_sts.cc
+++ b/gnuradio-runtime/lib/gr_scheduler_sts.cc
@@ -24,7 +24,7 @@
#endif
#include <gr_scheduler_sts.h>
#include <gr_single_threaded_scheduler.h>
-#include <gruel/thread_body_wrapper.h>
+#include <thread/thread_body_wrapper.h>
class sts_container
{
@@ -64,7 +64,7 @@ gr_scheduler_sts::gr_scheduler_sts(gr_flat_flowgraph_sptr ffg, int max_noutput_i
gr_block_vector_t blocks = gr_flat_flowgraph::make_block_vector(*p);
d_threads.create_thread(
- gruel::thread_body_wrapper<sts_container>(sts_container(blocks),
+ gr::thread::thread_body_wrapper<sts_container>(sts_container(blocks),
"single-threaded-scheduler"));
}
}
diff --git a/gnuradio-runtime/lib/gr_scheduler_sts.h b/gnuradio-runtime/lib/gr_scheduler_sts.h
index 43b97b62c1..af98c6d8ba 100644
--- a/gnuradio-runtime/lib/gr_scheduler_sts.h
+++ b/gnuradio-runtime/lib/gr_scheduler_sts.h
@@ -23,14 +23,14 @@
#include <gr_runtime_api.h>
#include <gr_scheduler.h>
-#include <gruel/thread_group.h>
+#include <thread/thread_group.h>
/*!
* \brief Concrete scheduler that uses the single_threaded_scheduler
*/
class GR_RUNTIME_API gr_scheduler_sts : public gr_scheduler
{
- gruel::thread_group d_threads;
+ gr::thread::thread_group d_threads;
protected:
/*!
diff --git a/gnuradio-runtime/lib/gr_scheduler_tpb.cc b/gnuradio-runtime/lib/gr_scheduler_tpb.cc
index 2824eb1b3b..e67078632f 100644
--- a/gnuradio-runtime/lib/gr_scheduler_tpb.cc
+++ b/gnuradio-runtime/lib/gr_scheduler_tpb.cc
@@ -24,7 +24,7 @@
#endif
#include <gr_scheduler_tpb.h>
#include <gr_tpb_thread_body.h>
-#include <gruel/thread_body_wrapper.h>
+#include <thread/thread_body_wrapper.h>
#include <sstream>
/*
@@ -80,7 +80,7 @@ gr_scheduler_tpb::gr_scheduler_tpb(gr_flat_flowgraph_sptr ffg, int max_noutput_i
max_noutput_items = blocks[i]->max_noutput_items();
d_threads.create_thread(
- gruel::thread_body_wrapper<tpb_container>(tpb_container(blocks[i], max_noutput_items),
+ gr::thread::thread_body_wrapper<tpb_container>(tpb_container(blocks[i], max_noutput_items),
name.str()));
}
}
diff --git a/gnuradio-runtime/lib/gr_scheduler_tpb.h b/gnuradio-runtime/lib/gr_scheduler_tpb.h
index d978dd28e1..4ab7bb16d2 100644
--- a/gnuradio-runtime/lib/gr_scheduler_tpb.h
+++ b/gnuradio-runtime/lib/gr_scheduler_tpb.h
@@ -23,14 +23,14 @@
#include <gr_runtime_api.h>
#include <gr_scheduler.h>
-#include <gruel/thread_group.h>
+#include <thread/thread_group.h>
/*!
* \brief Concrete scheduler that uses a kernel thread-per-block
*/
class GR_RUNTIME_API gr_scheduler_tpb : public gr_scheduler
{
- gruel::thread_group d_threads;
+ gr::thread::thread_group d_threads;
protected:
/*!
diff --git a/gnuradio-runtime/lib/gr_sptr_magic.cc b/gnuradio-runtime/lib/gr_sptr_magic.cc
index 7fdadf24a2..2073701422 100644
--- a/gnuradio-runtime/lib/gr_sptr_magic.cc
+++ b/gnuradio-runtime/lib/gr_sptr_magic.cc
@@ -27,11 +27,11 @@
#include <stdexcept>
-#include <gruel/thread.h>
+#include <thread/thread.h>
namespace gnuradio {
- static gruel::mutex s_mutex;
+ static gr::thread::mutex s_mutex;
typedef std::map<gr_basic_block*, gr_basic_block_sptr> sptr_map;
static sptr_map s_map;
@@ -39,7 +39,7 @@ namespace gnuradio {
detail::sptr_magic::create_and_stash_initial_sptr(gr_hier_block2 *p)
{
gr_basic_block_sptr sptr(p);
- gruel::scoped_lock guard(s_mutex);
+ gr::thread::scoped_lock guard(s_mutex);
s_map.insert(sptr_map::value_type(static_cast<gr_basic_block *>(p), sptr));
}
@@ -60,7 +60,7 @@ namespace gnuradio {
* p is a subclass of gr_hier_block2, thus we've already created the shared pointer
* and stashed it away. Fish it out and return it.
*/
- gruel::scoped_lock guard(s_mutex);
+ gr::thread::scoped_lock guard(s_mutex);
sptr_map::iterator pos = s_map.find(static_cast<gr_basic_block *>(p));
if (pos == s_map.end())
throw std::invalid_argument("gr_sptr_magic: invalid pointer!");
diff --git a/gnuradio-runtime/lib/gr_top_block_impl.cc b/gnuradio-runtime/lib/gr_top_block_impl.cc
index b6d427ce27..ef645ea57d 100644
--- a/gnuradio-runtime/lib/gr_top_block_impl.cc
+++ b/gnuradio-runtime/lib/gr_top_block_impl.cc
@@ -92,7 +92,7 @@ gr_top_block_impl::~gr_top_block_impl()
void
gr_top_block_impl::start(int max_noutput_items)
{
- gruel::scoped_lock l(d_mutex);
+ gr::thread::scoped_lock l(d_mutex);
d_max_noutput_items = max_noutput_items;
@@ -141,14 +141,14 @@ gr_top_block_impl::wait()
void
gr_top_block_impl::lock()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
d_lock_count++;
}
void
gr_top_block_impl::unlock()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
if (d_lock_count <= 0){
d_lock_count = 0; // fix it, then complain
diff --git a/gnuradio-runtime/lib/gr_top_block_impl.h b/gnuradio-runtime/lib/gr_top_block_impl.h
index 7293531090..345a33152f 100644
--- a/gnuradio-runtime/lib/gr_top_block_impl.h
+++ b/gnuradio-runtime/lib/gr_top_block_impl.h
@@ -25,7 +25,7 @@
#include <gr_runtime_api.h>
#include <gr_scheduler.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
/*!
*\brief Abstract implementation details of gr_top_block
@@ -76,7 +76,7 @@ protected:
gr_flat_flowgraph_sptr d_ffg;
gr_scheduler_sptr d_scheduler;
- gruel::mutex d_mutex; // protects d_state and d_lock_count
+ gr::thread::mutex d_mutex; // protects d_state and d_lock_count
tb_state d_state;
int d_lock_count;
int d_max_noutput_items;
diff --git a/gnuradio-runtime/lib/gr_tpb_thread_body.cc b/gnuradio-runtime/lib/gr_tpb_thread_body.cc
index 679fd15124..11934dbf09 100644
--- a/gnuradio-runtime/lib/gr_tpb_thread_body.cc
+++ b/gnuradio-runtime/lib/gr_tpb_thread_body.cc
@@ -25,7 +25,7 @@
#include <gr_prefs.h>
#include <iostream>
#include <boost/thread.hpp>
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
#include <boost/foreach.hpp>
using namespace pmt;
@@ -40,14 +40,14 @@ gr_tpb_thread_body::gr_tpb_thread_body(gr_block_sptr block, int max_noutput_item
pmt_t msg;
d->threaded = true;
- d->thread = gruel::get_current_thread_id();
+ d->thread = gr::thread::get_current_thread_id();
gr_prefs *p = gr_prefs::singleton();
size_t max_nmsgs = static_cast<size_t>(p->get_long("DEFAULT", "max_messages", 100));
// Set thread affinity if it was set before fg was started.
if(block->processor_affinity().size() > 0) {
- gruel::thread_bind_to_processor(d->thread, block->processor_affinity());
+ gr::thread::thread_bind_to_processor(d->thread, block->processor_affinity());
}
while (1){
@@ -97,7 +97,7 @@ gr_tpb_thread_body::gr_tpb_thread_body(gr_block_sptr block, int max_noutput_item
case gr_block_executor::BLKD_IN: // Wait for input.
{
- gruel::scoped_lock guard(d->d_tpb.mutex);
+ gr::thread::scoped_lock guard(d->d_tpb.mutex);
while (!d->d_tpb.input_changed){
// wait for input or message
@@ -120,7 +120,7 @@ gr_tpb_thread_body::gr_tpb_thread_body(gr_block_sptr block, int max_noutput_item
case gr_block_executor::BLKD_OUT: // Wait for output buffer space.
{
- gruel::scoped_lock guard(d->d_tpb.mutex);
+ gr::thread::scoped_lock guard(d->d_tpb.mutex);
while (!d->d_tpb.output_changed){
// wait for output room or message
diff --git a/gnuradio-runtime/lib/messages/CMakeLists.txt b/gnuradio-runtime/lib/messages/CMakeLists.txt
new file mode 100644
index 0000000000..20d4f30b06
--- /dev/null
+++ b/gnuradio-runtime/lib/messages/CMakeLists.txt
@@ -0,0 +1,29 @@
+# Copyright 2010,2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# This file included, use CMake directory variables
+########################################################################
+
+list(APPEND gnuradio_runtime_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/msg_accepter.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/msg_accepter_msgq.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/msg_producer.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/msg_queue.cc
+)
diff --git a/gruel/src/lib/msg/msg_accepter.cc b/gnuradio-runtime/lib/messages/msg_accepter.cc
index 5acd98aa22..a0d2d840c6 100644
--- a/gruel/src/lib/msg/msg_accepter.cc
+++ b/gnuradio-runtime/lib/messages/msg_accepter.cc
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2009 Free Software Foundation, Inc.
+ * Copyright 2009,2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -24,13 +24,15 @@
#include "config.h"
#endif
-#include <gruel/msg_accepter.h>
+#include <messages/msg_accepter.h>
-namespace gruel {
+namespace gr {
+ namespace messages {
- msg_accepter::~msg_accepter()
- {
- // NOP, required as virtual destructor
- }
+ msg_accepter::~msg_accepter()
+ {
+ // NOP, required as virtual destructor
+ }
-} /* namespace gruel */
+ } /* namespace messages */
+} /* namespace gr */
diff --git a/gruel/src/lib/msg/msg_accepter_msgq.cc b/gnuradio-runtime/lib/messages/msg_accepter_msgq.cc
index 2ae3537b8c..adbea5ebc6 100644
--- a/gruel/src/lib/msg/msg_accepter_msgq.cc
+++ b/gnuradio-runtime/lib/messages/msg_accepter_msgq.cc
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2009 Free Software Foundation, Inc.
+ * Copyright 2009,2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -23,26 +23,28 @@
#include <config.h>
#endif
-#include <gruel/msg_accepter_msgq.h>
+#include <messages/msg_accepter_msgq.h>
using namespace pmt;
-namespace gruel {
+namespace gr {
+ namespace messages {
- msg_accepter_msgq::msg_accepter_msgq(msg_queue_sptr msgq)
- : d_msg_queue(msgq)
- {
- }
+ msg_accepter_msgq::msg_accepter_msgq(msg_queue_sptr msgq)
+ : d_msg_queue(msgq)
+ {
+ }
- msg_accepter_msgq::~msg_accepter_msgq()
- {
- // NOP, required as virtual destructor
- }
+ msg_accepter_msgq::~msg_accepter_msgq()
+ {
+ // NOP, required as virtual destructor
+ }
- void
- msg_accepter_msgq::post(pmt_t msg)
- {
- d_msg_queue->insert_tail(msg);
- }
+ void
+ msg_accepter_msgq::post(pmt_t msg)
+ {
+ d_msg_queue->insert_tail(msg);
+ }
-} /* namespace gruel */
+ } /* namespace messages */
+} /* namespace gr */
diff --git a/gruel/src/lib/msg/msg_producer.cc b/gnuradio-runtime/lib/messages/msg_producer.cc
index 3e8148763b..c354422aa6 100644
--- a/gruel/src/lib/msg/msg_producer.cc
+++ b/gnuradio-runtime/lib/messages/msg_producer.cc
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2012 Free Software Foundation, Inc.
+ * Copyright 2012-2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -24,13 +24,15 @@
#include "config.h"
#endif
-#include <gruel/msg_producer.h>
+#include <messages/msg_producer.h>
-namespace gruel {
+namespace gr {
+ namespace messages {
- msg_producer::~msg_producer()
- {
- // NOP, required as virtual destructor
- }
+ msg_producer::~msg_producer()
+ {
+ // NOP, required as virtual destructor
+ }
-} /* namespace gruel */
+ } /* namespace messages */
+} /* namespace gr */
diff --git a/gnuradio-runtime/lib/messages/msg_queue.cc b/gnuradio-runtime/lib/messages/msg_queue.cc
new file mode 100644
index 0000000000..0d460dc05c
--- /dev/null
+++ b/gnuradio-runtime/lib/messages/msg_queue.cc
@@ -0,0 +1,105 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2009,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <messages/msg_queue.h>
+#include <stdexcept>
+
+using namespace pmt;
+
+namespace gr {
+ namespace messages {
+
+ msg_queue_sptr
+ make_msg_queue(unsigned int limit)
+ {
+ return msg_queue_sptr(new msg_queue(limit));
+ }
+
+ msg_queue::msg_queue(unsigned int limit)
+ : d_limit(limit)
+ {
+ }
+
+ msg_queue::~msg_queue()
+ {
+ flush();
+ }
+
+ void
+ msg_queue::insert_tail(pmt_t msg)
+ {
+ gr::thread::scoped_lock guard(d_mutex);
+
+ while(full_p())
+ d_not_full.wait(guard);
+
+ d_msgs.push_back(msg);
+ d_not_empty.notify_one();
+ }
+
+ pmt_t
+ msg_queue::delete_head()
+ {
+ gr::thread::scoped_lock guard(d_mutex);
+
+ while(empty_p())
+ d_not_empty.wait(guard);
+
+ pmt_t m(d_msgs.front());
+ d_msgs.pop_front();
+
+ if(d_limit > 0) // Unlimited length queues never block on write
+ d_not_full.notify_one();
+
+ return m;
+ }
+
+ pmt_t
+ msg_queue::delete_head_nowait()
+ {
+ gr::thread::scoped_lock guard(d_mutex);
+
+ if(empty_p())
+ return pmt_t();
+
+ pmt_t m(d_msgs.front());
+ d_msgs.pop_front();
+
+ if(d_limit > 0) // Unlimited length queues never block on write
+ d_not_full.notify_one();
+
+ return m;
+ }
+
+ void
+ msg_queue::flush()
+ {
+ while(delete_head_nowait() != pmt_t())
+ ;
+ }
+
+ } /* namespace messages */
+} /* namespace gr */
diff --git a/gruel/src/lib/pmt/CMakeLists.txt b/gnuradio-runtime/lib/pmt/CMakeLists.txt
index 6ea616e107..9d191df06a 100644
--- a/gruel/src/lib/pmt/CMakeLists.txt
+++ b/gnuradio-runtime/lib/pmt/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2010-2012 Free Software Foundation, Inc.
+# Copyright 2010-2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -28,7 +28,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
########################################################################
get_filename_component(PMT_SERIAL_TAGS_H
- ${CMAKE_CURRENT_BINARY_DIR}/../../include/gruel/pmt_serial_tags.h ABSOLUTE
+ ${CMAKE_CURRENT_BINARY_DIR}/../../include/pmt/pmt_serial_tags.h ABSOLUTE
)
add_custom_command(
@@ -43,8 +43,8 @@ add_custom_command(
install(
FILES ${PMT_SERIAL_TAGS_H}
- DESTINATION ${GR_INCLUDE_DIR}/gruel
- COMPONENT "gruel_devel"
+ DESTINATION ${GR_INCLUDE_DIR}/pmt
+ COMPONENT "runtime_devel"
)
include(AddFileDependencies)
@@ -74,7 +74,7 @@ add_custom_command(
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
-list(APPEND gruel_sources
+list(APPEND gnuradio_runtime_sources
${CMAKE_CURRENT_BINARY_DIR}/pmt_unv.cc
${CMAKE_CURRENT_SOURCE_DIR}/pmt.cc
${CMAKE_CURRENT_SOURCE_DIR}/pmt_io.cc
@@ -82,8 +82,10 @@ list(APPEND gruel_sources
${CMAKE_CURRENT_SOURCE_DIR}/pmt_serialize.cc
)
-list(APPEND test_gruel_sources
+if(ENABLE_TESTING)
+ list(APPEND test_gnuradio_runtime_sources
${CMAKE_CURRENT_BINARY_DIR}/qa_pmt_unv.cc
${CMAKE_CURRENT_SOURCE_DIR}/qa_pmt_prims.cc
${CMAKE_CURRENT_SOURCE_DIR}/qa_pmt.cc
-)
+ )
+endif(ENABLE_TESTING)
diff --git a/gruel/src/lib/pmt/gen-serial-tags.py b/gnuradio-runtime/lib/pmt/gen-serial-tags.py
index 18e927beb5..18e927beb5 100644
--- a/gruel/src/lib/pmt/gen-serial-tags.py
+++ b/gnuradio-runtime/lib/pmt/gen-serial-tags.py
diff --git a/gruel/src/lib/pmt/generate_unv.py b/gnuradio-runtime/lib/pmt/generate_unv.py
index 42b57e2454..7562df46f8 100755
--- a/gruel/src/lib/pmt/generate_unv.py
+++ b/gnuradio-runtime/lib/pmt/generate_unv.py
@@ -75,14 +75,14 @@ includes = """
#include <config.h>
#endif
#include <vector>
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
#include "pmt_int.h"
"""
qa_includes = """
#include <qa_pmt_unv.h>
#include <cppunit/TestAssert.h>
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
#include <stdio.h>
using namespace pmt;
diff --git a/gruel/src/lib/pmt/pmt-serial-tags.scm b/gnuradio-runtime/lib/pmt/pmt-serial-tags.scm
index 4f06bf75f8..4f06bf75f8 100644
--- a/gruel/src/lib/pmt/pmt-serial-tags.scm
+++ b/gnuradio-runtime/lib/pmt/pmt-serial-tags.scm
diff --git a/gruel/src/lib/pmt/pmt.cc b/gnuradio-runtime/lib/pmt/pmt.cc
index 8ea0e76143..b6b3004331 100644
--- a/gruel/src/lib/pmt/pmt.cc
+++ b/gnuradio-runtime/lib/pmt/pmt.cc
@@ -23,11 +23,12 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+
#include <vector>
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
#include "pmt_int.h"
-#include <gruel/msg_accepter.h>
-#include <gruel/pmt_pool.h>
+#include <messages/msg_accepter.h>
+#include <pmt/pmt_pool.h>
#include <stdio.h>
#include <string.h>
@@ -911,22 +912,22 @@ is_msg_accepter(const pmt_t &obj)
return false;
boost::any r = any_ref(obj);
- return boost::any_cast<gruel::msg_accepter_sptr>(&r) != 0;
+ return boost::any_cast<gr::messages::msg_accepter_sptr>(&r) != 0;
}
//! make a msg_accepter
pmt_t
-make_msg_accepter(gruel::msg_accepter_sptr ma)
+make_msg_accepter(gr::messages::msg_accepter_sptr ma)
{
return make_any(ma);
}
//! Return underlying msg_accepter
-gruel::msg_accepter_sptr
+gr::messages::msg_accepter_sptr
msg_accepter_ref(const pmt_t &obj)
{
try {
- return boost::any_cast<gruel::msg_accepter_sptr>(any_ref(obj));
+ return boost::any_cast<gr::messages::msg_accepter_sptr>(any_ref(obj));
}
catch (boost::bad_any_cast &e){
throw wrong_type("pmt_msg_accepter_ref", obj);
diff --git a/gruel/src/lib/pmt/pmt_int.h b/gnuradio-runtime/lib/pmt/pmt_int.h
index d669e10491..aceb7b74d9 100644
--- a/gruel/src/lib/pmt/pmt_int.h
+++ b/gnuradio-runtime/lib/pmt/pmt_int.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_PMT_INT_H
#define INCLUDED_PMT_INT_H
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
#include <boost/utility.hpp>
#include <boost/detail/atomic_count.hpp>
@@ -35,7 +35,7 @@
#define PMT_LOCAL_ALLOCATOR 0 // define to 0 or 1
namespace pmt {
-class GRUEL_API pmt_base : boost::noncopyable {
+class PMT_API pmt_base : boost::noncopyable {
mutable boost::detail::atomic_count count_;
protected:
diff --git a/gruel/src/lib/pmt/pmt_io.cc b/gnuradio-runtime/lib/pmt/pmt_io.cc
index 2e853b9147..17bdee408f 100644
--- a/gruel/src/lib/pmt/pmt_io.cc
+++ b/gnuradio-runtime/lib/pmt/pmt_io.cc
@@ -22,8 +22,9 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+
#include <vector>
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
#include "pmt_int.h"
#include <sstream>
#include <iostream>
diff --git a/gruel/src/lib/pmt/pmt_pool.cc b/gnuradio-runtime/lib/pmt/pmt_pool.cc
index 63a681abff..8864f79dc2 100644
--- a/gruel/src/lib/pmt/pmt_pool.cc
+++ b/gnuradio-runtime/lib/pmt/pmt_pool.cc
@@ -22,7 +22,8 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-#include <gruel/pmt_pool.h>
+
+#include <pmt/pmt_pool.h>
#include <algorithm>
#include <stdint.h>
diff --git a/gruel/src/lib/pmt/pmt_serialize.cc b/gnuradio-runtime/lib/pmt/pmt_serialize.cc
index 2c74f30b01..4036b8d8bd 100644
--- a/gruel/src/lib/pmt/pmt_serialize.cc
+++ b/gnuradio-runtime/lib/pmt/pmt_serialize.cc
@@ -22,10 +22,11 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+
#include <vector>
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
#include "pmt_int.h"
-#include "gruel/pmt_serial_tags.h"
+#include "pmt/pmt_serial_tags.h"
namespace pmt {
diff --git a/gruel/src/lib/pmt/qa_pmt.cc b/gnuradio-runtime/lib/pmt/qa_pmt.cc
index 27c617e747..27c617e747 100644
--- a/gruel/src/lib/pmt/qa_pmt.cc
+++ b/gnuradio-runtime/lib/pmt/qa_pmt.cc
diff --git a/gruel/src/lib/pmt/qa_pmt.h b/gnuradio-runtime/lib/pmt/qa_pmt.h
index 3de5872c74..3e0c91abac 100644
--- a/gruel/src/lib/pmt/qa_pmt.h
+++ b/gnuradio-runtime/lib/pmt/qa_pmt.h
@@ -23,7 +23,7 @@
#ifndef INCLUDED_QA_PMT_H
#define INCLUDED_QA_PMT_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#include <cppunit/TestSuite.h>
//! collect all the tests for pmt
diff --git a/gruel/src/lib/pmt/qa_pmt_prims.cc b/gnuradio-runtime/lib/pmt/qa_pmt_prims.cc
index 85d29cf78f..e9a897deac 100644
--- a/gruel/src/lib/pmt/qa_pmt_prims.cc
+++ b/gnuradio-runtime/lib/pmt/qa_pmt_prims.cc
@@ -22,7 +22,7 @@
#include <qa_pmt_prims.h>
#include <cppunit/TestAssert.h>
-#include <gruel/msg_passing.h>
+#include <messages/msg_passing.h>
#include <boost/format.hpp>
#include <cstdio>
#include <cstring>
@@ -478,7 +478,8 @@ qa_pmt_prims::test_any()
// ------------------------------------------------------------------------
-class qa_pmt_msg_accepter_nop : public gruel::msg_accepter {
+class qa_pmt_msg_accepter_nop : public gr::messages::msg_accepter
+{
public:
qa_pmt_msg_accepter_nop(){};
~qa_pmt_msg_accepter_nop();
@@ -495,8 +496,9 @@ qa_pmt_prims::test_msg_accepter()
boost::any a0;
a0 = std::string("Hello!");
pmt::pmt_t p0 = pmt::make_any(a0);
-
- gruel::msg_accepter_sptr ma0 = gruel::msg_accepter_sptr(new qa_pmt_msg_accepter_nop());
+
+ gr::messages::msg_accepter_sptr ma0 = \
+ gr::messages::msg_accepter_sptr(new qa_pmt_msg_accepter_nop());
pmt::pmt_t p1 = pmt::make_msg_accepter(ma0);
CPPUNIT_ASSERT_EQUAL(ma0.get(), pmt::msg_accepter_ref(p1).get());
@@ -506,9 +508,9 @@ qa_pmt_prims::test_msg_accepter()
// just confirm interfaces on send are OK
pmt::pmt_t port(pmt::intern("port"));
- gruel::send(ma0.get(), port, sym);
- gruel::send(ma0, port, sym);
- gruel::send(p1, port, sym);
+ gr::messages::send(ma0.get(), port, sym);
+ gr::messages::send(ma0, port, sym);
+ gr::messages::send(p1, port, sym);
}
diff --git a/gruel/src/lib/pmt/qa_pmt_prims.h b/gnuradio-runtime/lib/pmt/qa_pmt_prims.h
index a407509b2c..8c3f5c6220 100644
--- a/gruel/src/lib/pmt/qa_pmt_prims.h
+++ b/gnuradio-runtime/lib/pmt/qa_pmt_prims.h
@@ -22,8 +22,8 @@
#ifndef INCLUDED_QA_PMT_PRIMS_H
#define INCLUDED_QA_PMT_PRIMS_H
-#include <gruel/attributes.h>
-#include <gruel/api.h> //reason: suppress warnings
+#include <attributes.h>
+#include <pmt/api.h> //reason: suppress warnings
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/TestCase.h>
diff --git a/gruel/src/lib/pmt/unv_qa_template.cc.t b/gnuradio-runtime/lib/pmt/unv_qa_template.cc.t
index a04d532b4e..a04d532b4e 100644
--- a/gruel/src/lib/pmt/unv_qa_template.cc.t
+++ b/gnuradio-runtime/lib/pmt/unv_qa_template.cc.t
diff --git a/gruel/src/lib/pmt/unv_template.cc.t b/gnuradio-runtime/lib/pmt/unv_template.cc.t
index 8678894973..8678894973 100644
--- a/gruel/src/lib/pmt/unv_template.cc.t
+++ b/gnuradio-runtime/lib/pmt/unv_template.cc.t
diff --git a/gruel/src/lib/pmt/unv_template.h.t b/gnuradio-runtime/lib/pmt/unv_template.h.t
index 83ba0be0f4..83ba0be0f4 100644
--- a/gruel/src/lib/pmt/unv_template.h.t
+++ b/gnuradio-runtime/lib/pmt/unv_template.h.t
diff --git a/gnuradio-runtime/lib/qa_runtime.h b/gnuradio-runtime/lib/qa_runtime.h
index da71cbd0f4..b03e3db721 100644
--- a/gnuradio-runtime/lib/qa_runtime.h
+++ b/gnuradio-runtime/lib/qa_runtime.h
@@ -23,7 +23,7 @@
#ifndef _QA_RUNTIME_H_
#define _QA_RUNTIME_H_
-#include <gruel/attributes.h>
+#include <attributes.h>
#include <cppunit/TestSuite.h>
//! collect all the tests for the runtime directory
diff --git a/gnuradio-runtime/lib/qa_sincos.cc b/gnuradio-runtime/lib/qa_sincos.cc
index 54be957546..be163117de 100644
--- a/gnuradio-runtime/lib/qa_sincos.cc
+++ b/gnuradio-runtime/lib/qa_sincos.cc
@@ -26,7 +26,7 @@
#include <qa_sincos.h>
#include <gr_sincos.h>
-#include <gruel/attributes.h>
+#include <attributes.h>
#include <cppunit/TestAssert.h>
#include <cmath>
diff --git a/gruel/src/lib/realtime.cc b/gnuradio-runtime/lib/realtime.cc
index e01c6c53d4..5dadc26bbd 100644
--- a/gruel/src/lib/realtime.cc
+++ b/gnuradio-runtime/lib/realtime.cc
@@ -24,7 +24,7 @@
#include <config.h>
#endif
-#include <gruel/realtime.h>
+#include <realtime.h>
#ifdef HAVE_SCHED_H
#include <sched.h>
@@ -39,7 +39,7 @@
#if defined(HAVE_PTHREAD_SETSCHEDPARAM) || defined(HAVE_SCHED_SETSCHEDULER)
#include <pthread.h>
-namespace gruel {
+namespace gr {
/*!
* Rescale our virtual priority so that it maps to the middle 1/2 of
@@ -56,14 +56,14 @@ namespace gruel {
return std::max(min_real_pri, std::min(max_real_pri, y_int));
}
-} // namespace gruel
+} // namespace gr
#endif
#if defined(HAVE_PTHREAD_SETSCHEDPARAM)
-namespace gruel {
+namespace gr {
rt_status_t
enable_realtime_scheduling(rt_sched_param p)
@@ -94,12 +94,12 @@ namespace gruel {
//printf("SCHED_FIFO enabled with priority = %d\n", pri);
return RT_OK;
}
-} // namespace gruel
+} // namespace gr
#elif defined(HAVE_SCHED_SETSCHEDULER)
-namespace gruel {
+namespace gr {
rt_status_t
enable_realtime_scheduling(rt_sched_param p)
@@ -130,13 +130,13 @@ namespace gruel {
return RT_OK;
}
-} // namespace gruel
+} // namespace gr
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
#include <windows.h>
-namespace gruel {
+namespace gr {
rt_status_t enable_realtime_scheduling(rt_sched_param p){
@@ -162,17 +162,17 @@ namespace gruel {
return RT_OK;
}
-} // namespace gruel
+} // namespace gr
#else
-namespace gruel {
+namespace gr {
rt_status_t
enable_realtime_scheduling(rt_sched_param p)
{
return RT_NOT_IMPLEMENTED;
}
-} // namespace gruel
+} // namespace gr
#endif
diff --git a/gnuradio-runtime/lib/rpcserver_ice.cc b/gnuradio-runtime/lib/rpcserver_ice.cc
index 12229a0688..2454bf2580 100644
--- a/gnuradio-runtime/lib/rpcserver_ice.cc
+++ b/gnuradio-runtime/lib/rpcserver_ice.cc
@@ -26,7 +26,7 @@
#include <iostream>
#include <sstream>
#include <stdexcept>
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
#define DEBUG 0
diff --git a/gruel/src/lib/sys_pri.cc b/gnuradio-runtime/lib/sys_pri.cc
index c8a505341f..aa005ecd75 100644
--- a/gruel/src/lib/sys_pri.cc
+++ b/gnuradio-runtime/lib/sys_pri.cc
@@ -22,9 +22,10 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-#include <gruel/sys_pri.h>
-namespace gruel {
+#include <sys_pri.h>
+
+namespace gr {
/*
* These may need per-OS tweaking.
@@ -58,4 +59,5 @@ namespace gruel {
rt_sched_param
sys_pri::usrp2_backend() { return rt_sched_param(6, RT_SCHED_FIFO); }
-}
+
+} /* namespace gr */
diff --git a/gruel/src/lib/msg/CMakeLists.txt b/gnuradio-runtime/lib/thread/CMakeLists.txt
index b8167fff34..de46dd8932 100644
--- a/gruel/src/lib/msg/CMakeLists.txt
+++ b/gnuradio-runtime/lib/thread/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2010 Free Software Foundation, Inc.
+# Copyright 2010,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -21,9 +21,8 @@
# This file included, use CMake directory variables
########################################################################
-list(APPEND gruel_sources
- ${CMAKE_CURRENT_SOURCE_DIR}/msg_accepter.cc
- ${CMAKE_CURRENT_SOURCE_DIR}/msg_accepter_msgq.cc
- ${CMAKE_CURRENT_SOURCE_DIR}/msg_producer.cc
- ${CMAKE_CURRENT_SOURCE_DIR}/msg_queue.cc
+list(APPEND gnuradio_runtime_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/thread.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/thread_body_wrapper.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/thread_group.cc
)
diff --git a/gnuradio-runtime/lib/thread/thread.cc b/gnuradio-runtime/lib/thread/thread.cc
new file mode 100644
index 0000000000..af0822445d
--- /dev/null
+++ b/gnuradio-runtime/lib/thread/thread.cc
@@ -0,0 +1,238 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2012-2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thread/thread.h>
+
+#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+
+#include <Windows.h>
+
+namespace gr {
+ namespace thread {
+
+ gr_thread_t
+ get_current_thread_id()
+ {
+ return GetCurrentThread();
+ }
+
+ void
+ thread_bind_to_processor(int n)
+ {
+ std::vector<int> mask(1, n);
+ thread_bind_to_processor(get_current_thread_id(), mask);
+ }
+
+ void
+ thread_bind_to_processor(const std::vector<int> &mask)
+ {
+ thread_bind_to_processor(get_current_thread_id(), mask);
+ }
+
+ void
+ thread_bind_to_processor(gr_thread_t thread, int n)
+ {
+ std::vector<int> mask(1, n);
+ thread_bind_to_processor(thread, mask);
+ }
+
+ void
+ thread_bind_to_processor(gr_thread_t thread, const std::vector<int> &mask)
+ {
+ //DWORD_PTR mask = (1 << n);
+ DWORD_PTR dword_mask = 0;
+
+ std::vector<int> _mask = mask;
+ std::vector<int>::iterator itr;
+ for(itr = _mask.begin(); itr != _mask.end(); itr++)
+ dword_mask |= (1 << (*itr));
+
+ DWORD_PTR ret = SetThreadAffinityMask(thread, dword_mask);
+ if(ret == 0) {
+ std::stringstream s;
+ s << "thread_bind_to_processor failed with error: "
+ << GetLastError() << std::endl;
+ throw std::runtime_error(s.str());
+ }
+ }
+
+ void
+ thread_unbind()
+ {
+ thread_unbind(get_current_thread_id());
+ }
+
+ void
+ thread_unbind(gr_thread_t thread)
+ {
+ DWORD_PTR dword_mask = sizeof(DWORD_PTR) - 1;
+ DWORD_PTR ret = SetThreadAffinityMask(thread, dword_mask);
+ if(ret == 0) {
+ std::stringstream s;
+ s << "thread_unbind failed with error: "
+ << GetLastError() << std::endl;
+ throw std::runtime_error(s.str());
+ }
+ }
+
+ } /* namespace thread */
+} /* namespace gr */
+
+
+#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
+
+namespace gr {
+ namespace thread {
+
+ gr_thread_t
+ get_current_thread_id()
+ {
+ // Not implemented on OSX
+ }
+
+ void
+ thread_bind_to_processor(int n)
+ {
+ // Not implemented on OSX
+ }
+
+ void
+ thread_bind_to_processor(gr_thread_t thread, int n)
+ {
+ // Not implemented on OSX
+ }
+
+ void
+ thread_bind_to_processor(const std::vector<int> &mask)
+ {
+ // Not implemented on OSX
+ }
+
+ void
+ thread_bind_to_processor(gr_thread_t thread, const std::vector<int> &mask)
+ {
+ // Not implemented on OSX
+ }
+
+ void
+ thread_unbind()
+ {
+ // Not implemented on OSX
+ }
+
+ void
+ thread_unbind(gr_thread_t thread)
+ {
+ // Not implemented on OSX
+ }
+
+ } /* namespace thread */
+} /* namespace gr */
+
+#else
+
+#include <sstream>
+#include <stdexcept>
+#include <pthread.h>
+
+namespace gr {
+ namespace thread {
+
+ gr_thread_t
+ get_current_thread_id()
+ {
+ return pthread_self();
+ }
+
+ void
+ thread_bind_to_processor(int n)
+ {
+ std::vector<int> mask(1, n);
+ thread_bind_to_processor(get_current_thread_id(), mask);
+ }
+
+ void
+ thread_bind_to_processor(const std::vector<int> &mask)
+ {
+ thread_bind_to_processor(get_current_thread_id(), mask);
+ }
+
+ void
+ thread_bind_to_processor(gr_thread_t thread, int n)
+ {
+ std::vector<int> mask(1, n);
+ thread_bind_to_processor(thread, mask);
+ }
+
+ void
+ thread_bind_to_processor(gr_thread_t thread, const std::vector<int> &mask)
+ {
+ cpu_set_t set;
+ size_t len = sizeof(cpu_set_t);
+ std::vector<int> _mask = mask;
+ std::vector<int>::iterator itr;
+
+ CPU_ZERO(&set);
+ for(itr = _mask.begin(); itr != _mask.end(); itr++)
+ CPU_SET(*itr, &set);
+
+ int ret = pthread_setaffinity_np(thread, len, &set);
+ if(ret != 0) {
+ std::stringstream s;
+ s << "thread_bind_to_processor failed with error: " << ret << std::endl;
+ throw std::runtime_error(s.str());
+ }
+ }
+
+ void
+ thread_unbind()
+ {
+ thread_unbind(get_current_thread_id());
+ }
+
+ void
+ thread_unbind(gr_thread_t thread)
+ {
+ cpu_set_t set;
+ size_t len = sizeof(cpu_set_t);
+
+ CPU_ZERO(&set);
+ long ncpus = sysconf(_SC_NPROCESSORS_ONLN);
+ for(long n = 0; n < ncpus; n++) {
+ CPU_SET(n, &set);
+ }
+
+ int ret = pthread_setaffinity_np(thread, len, &set);
+ if(ret != 0) {
+ std::stringstream s;
+ s << "thread_unbind failed with error: " << ret << std::endl;
+ throw std::runtime_error(s.str());
+ }
+ }
+
+ } /* namespace thread */
+} /* namespace gr */
+
+#endif
diff --git a/gruel/src/lib/thread_body_wrapper.cc b/gnuradio-runtime/lib/thread/thread_body_wrapper.cc
index 019eaa342a..47feafdd42 100644
--- a/gruel/src/lib/thread_body_wrapper.cc
+++ b/gnuradio-runtime/lib/thread/thread_body_wrapper.cc
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2008 Free Software Foundation, Inc.
+ * Copyright 2008,2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -22,64 +22,70 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-#include <gruel/thread_body_wrapper.h>
+
+#include <thread/thread_body_wrapper.h>
+
#ifdef HAVE_SIGNAL_H
#include <signal.h>
#endif
+
#include <stdio.h>
-namespace gruel {
+namespace gr {
+ namespace thread {
#if defined(HAVE_PTHREAD_SIGMASK) && defined(HAVE_SIGNAL_H)
- void mask_signals()
- {
- sigset_t new_set;
- int r;
+ void mask_signals()
+ {
+ sigset_t new_set;
+ int r;
- sigemptyset(&new_set);
- sigaddset(&new_set, SIGHUP); // block these...
- sigaddset(&new_set, SIGINT);
- sigaddset(&new_set, SIGPIPE);
- sigaddset(&new_set, SIGALRM);
- sigaddset(&new_set, SIGTERM);
- sigaddset(&new_set, SIGUSR1);
- sigaddset(&new_set, SIGCHLD);
+ sigemptyset(&new_set);
+ sigaddset(&new_set, SIGHUP); // block these...
+ sigaddset(&new_set, SIGINT);
+ sigaddset(&new_set, SIGPIPE);
+ sigaddset(&new_set, SIGALRM);
+ sigaddset(&new_set, SIGTERM);
+ sigaddset(&new_set, SIGUSR1);
+ sigaddset(&new_set, SIGCHLD);
#ifdef SIGPOLL
- sigaddset(&new_set, SIGPOLL);
+ sigaddset(&new_set, SIGPOLL);
#endif
#ifdef SIGPROF
- sigaddset(&new_set, SIGPROF);
+ sigaddset(&new_set, SIGPROF);
#endif
#ifdef SIGSYS
- sigaddset(&new_set, SIGSYS);
+ sigaddset(&new_set, SIGSYS);
#endif
#ifdef SIGTRAP
- sigaddset(&new_set, SIGTRAP);
+ sigaddset(&new_set, SIGTRAP);
#endif
#ifdef SIGURG
- sigaddset(&new_set, SIGURG);
+ sigaddset(&new_set, SIGURG);
#endif
#ifdef SIGVTALRM
- sigaddset(&new_set, SIGVTALRM);
+ sigaddset(&new_set, SIGVTALRM);
#endif
#ifdef SIGXCPU
- sigaddset(&new_set, SIGXCPU);
+ sigaddset(&new_set, SIGXCPU);
#endif
#ifdef SIGXFSZ
- sigaddset(&new_set, SIGXFSZ);
+ sigaddset(&new_set, SIGXFSZ);
#endif
- r = pthread_sigmask(SIG_BLOCK, &new_set, 0);
- if (r != 0)
- perror("pthread_sigmask");
- }
+ r = pthread_sigmask(SIG_BLOCK, &new_set, 0);
+ if(r != 0)
+ perror("pthread_sigmask");
+ }
#else
- void mask_signals()
- {
- }
+ void mask_signals()
+ {
+ }
#endif
-};
+ } /* namespace thread */
+} /* namespace gr */
+
diff --git a/gnuradio-runtime/lib/thread/thread_group.cc b/gnuradio-runtime/lib/thread/thread_group.cc
new file mode 100644
index 0000000000..034fe82e75
--- /dev/null
+++ b/gnuradio-runtime/lib/thread/thread_group.cc
@@ -0,0 +1,98 @@
+/* -*- c++ -*- */
+/*
+ * Copyright (C) 2001-2003 William E. Kempf
+ * Copyright (C) 2007 Anthony Williams
+ * Copyright 2008 Free Software Foundation, Inc.
+ *
+ * Distributed under the Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+/*
+ * This was extracted from Boost 1.35.0 and fixed.
+ */
+
+#include <thread/thread_group.h>
+
+namespace gr {
+ namespace thread {
+
+ thread_group::thread_group()
+ {
+ }
+
+ thread_group::~thread_group()
+ {
+ // We shouldn't have to scoped_lock here, since referencing this
+ // object from another thread while we're deleting it in the
+ // current thread is going to lead to undefined behavior any
+ // way.
+ for(std::list<boost::thread*>::iterator it = m_threads.begin();
+ it != m_threads.end(); ++it) {
+ delete (*it);
+ }
+ }
+
+ boost::thread* thread_group::create_thread(const boost::function0<void>& threadfunc)
+ {
+ // No scoped_lock required here since the only "shared data" that's
+ // modified here occurs inside add_thread which does scoped_lock.
+ std::auto_ptr<boost::thread> thrd(new boost::thread(threadfunc));
+ add_thread(thrd.get());
+ return thrd.release();
+ }
+
+ void thread_group::add_thread(boost::thread* thrd)
+ {
+ boost::lock_guard<boost::shared_mutex> guard(m_mutex);
+
+ // For now we'll simply ignore requests to add a thread object
+ // multiple times. Should we consider this an error and either
+ // throw or return an error value?
+ std::list<boost::thread*>::iterator it = std::find(m_threads.begin(),
+ m_threads.end(), thrd);
+ BOOST_ASSERT(it == m_threads.end());
+ if(it == m_threads.end())
+ m_threads.push_back(thrd);
+ }
+
+ void thread_group::remove_thread(boost::thread* thrd)
+ {
+ boost::lock_guard<boost::shared_mutex> guard(m_mutex);
+
+ // For now we'll simply ignore requests to remove a thread
+ // object that's not in the group. Should we consider this an
+ // error and either throw or return an error value?
+ std::list<boost::thread*>::iterator it = std::find(m_threads.begin(),
+ m_threads.end(), thrd);
+ BOOST_ASSERT(it != m_threads.end());
+ if(it != m_threads.end())
+ m_threads.erase(it);
+ }
+
+ void thread_group::join_all()
+ {
+ boost::shared_lock<boost::shared_mutex> guard(m_mutex);
+ for(std::list<boost::thread*>::iterator it = m_threads.begin();
+ it != m_threads.end(); ++it) {
+ (*it)->join();
+ }
+ }
+
+ void thread_group::interrupt_all()
+ {
+ boost::shared_lock<boost::shared_mutex> guard(m_mutex);
+ for(std::list<boost::thread*>::iterator it=m_threads.begin(),end=m_threads.end();
+ it!=end; ++it) {
+ (*it)->interrupt();
+ }
+ }
+
+ size_t thread_group::size() const
+ {
+ boost::shared_lock<boost::shared_mutex> guard(m_mutex);
+ return m_threads.size();
+ }
+
+ } /* namespace thread */
+} /* namespace gr */
diff --git a/gnuradio-runtime/python/CMakeLists.txt b/gnuradio-runtime/python/CMakeLists.txt
index 74adec3f11..fc19721778 100644
--- a/gnuradio-runtime/python/CMakeLists.txt
+++ b/gnuradio-runtime/python/CMakeLists.txt
@@ -21,3 +21,4 @@
include(GrPython)
add_subdirectory(gnuradio)
+add_subdirectory(pmt)
diff --git a/gnuradio-runtime/python/gnuradio/gr/hier_block2.py b/gnuradio-runtime/python/gnuradio/gr/hier_block2.py
index 31e4065a25..a254a58c72 100644
--- a/gnuradio-runtime/python/gnuradio/gr/hier_block2.py
+++ b/gnuradio-runtime/python/gnuradio/gr/hier_block2.py
@@ -20,11 +20,7 @@
#
from runtime_swig import hier_block2_swig
-
-try:
- import pmt
-except ImportError:
- from gruel import pmt
+import pmt
#
# This hack forces a 'has-a' relationship to look like an 'is-a' one.
diff --git a/gnuradio-runtime/python/gnuradio/gr/tag_utils.py b/gnuradio-runtime/python/gnuradio/gr/tag_utils.py
index 1c9594d6d0..8de7110e3f 100644
--- a/gnuradio-runtime/python/gnuradio/gr/tag_utils.py
+++ b/gnuradio-runtime/python/gnuradio/gr/tag_utils.py
@@ -20,8 +20,7 @@
#
""" Conversion tools between stream tags and Python objects """
-try: import pmt
-except: from gruel import pmt
+import pmt
try:
from gnuradio import gr
diff --git a/gruel/src/python/CMakeLists.txt b/gnuradio-runtime/python/pmt/CMakeLists.txt
index e91a6babdf..a9bf85a622 100644
--- a/gruel/src/python/CMakeLists.txt
+++ b/gnuradio-runtime/python/pmt/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -22,17 +22,11 @@ include(GrPython)
########################################################################
# Install python files
########################################################################
-GR_PYTHON_INSTALL(
- FILES __init__.py
- DESTINATION ${GR_PYTHON_DIR}/gruel
- COMPONENT "gruel_python"
-)
-
GR_PYTHON_INSTALL(FILES
- pmt/__init__.py
- pmt/pmt_to_python.py
+ __init__.py
+ pmt_to_python.py
DESTINATION ${GR_PYTHON_DIR}/pmt
- COMPONENT "gruel_python"
+ COMPONENT "runtime_python"
)
########################################################################
@@ -44,10 +38,10 @@ file(GLOB py_qa_test_files "qa_*.py")
foreach(py_qa_test_file ${py_qa_test_files})
get_filename_component(py_qa_test_name ${py_qa_test_file} NAME_WE)
set(GR_TEST_PYTHON_DIRS
- ${CMAKE_BINARY_DIR}/gruel/src/python
- ${CMAKE_BINARY_DIR}/gruel/src/swig
+ ${CMAKE_BINARY_DIR}/gnuradio-runtime/python
+ ${CMAKE_BINARY_DIR}/gnuradio-runtime/swig
)
- set(GR_TEST_TARGET_DEPS gruel gnuradio-runtime)
+ set(GR_TEST_TARGET_DEPS gnuradio-runtime)
GR_ADD_TEST(${py_qa_test_name} ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B} ${py_qa_test_file})
endforeach(py_qa_test_file)
endif(ENABLE_TESTING)
diff --git a/gruel/src/python/pmt/__init__.py b/gnuradio-runtime/python/pmt/__init__.py
index bc933e80a5..bc933e80a5 100644
--- a/gruel/src/python/pmt/__init__.py
+++ b/gnuradio-runtime/python/pmt/__init__.py
diff --git a/gruel/src/python/pmt/pmt_to_python.py b/gnuradio-runtime/python/pmt/pmt_to_python.py
index e551f4e983..e551f4e983 100644
--- a/gruel/src/python/pmt/pmt_to_python.py
+++ b/gnuradio-runtime/python/pmt/pmt_to_python.py
diff --git a/gruel/src/python/qa_pmt.py b/gnuradio-runtime/python/pmt/qa_pmt.py
index c8d3df93b2..75e112678b 100755
--- a/gruel/src/python/qa_pmt.py
+++ b/gnuradio-runtime/python/pmt/qa_pmt.py
@@ -23,7 +23,7 @@
import unittest
import pmt_swig as pmt
-class test_gruel_pmt(unittest.TestCase):
+class test_pmt(unittest.TestCase):
def test01(self):
a = pmt.intern("a")
diff --git a/gruel/src/python/qa_pmt_to_python.py b/gnuradio-runtime/python/pmt/qa_pmt_to_python.py
index 71aa9000ea..ae86fc6d53 100755
--- a/gruel/src/python/qa_pmt_to_python.py
+++ b/gnuradio-runtime/python/pmt/qa_pmt_to_python.py
@@ -23,7 +23,7 @@
import unittest
import pmt
-class test_gruel_pmt_to_python(unittest.TestCase):
+class test_pmt_to_python(unittest.TestCase):
def test01 (self):
b = pmt.from_double(123765)
diff --git a/gnuradio-runtime/swig/CMakeLists.txt b/gnuradio-runtime/swig/CMakeLists.txt
index 7e3312bbf5..79f093f4f0 100644
--- a/gnuradio-runtime/swig/CMakeLists.txt
+++ b/gnuradio-runtime/swig/CMakeLists.txt
@@ -24,7 +24,6 @@ include(GrPython)
include(GrSwig)
set(GR_SWIG_INCLUDE_DIRS
- ${GRUEL_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
${CMAKE_CURRENT_BINARY_DIR}
@@ -39,6 +38,28 @@ set(GR_SWIG_LIBRARIES
${LOG4CPP_LIBRARIES}
)
+###############################################################
+# Build pmt swig
+###############################################################
+
+set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/pmt_swig_doc.i)
+set(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../include/pmt
+ ${CMAKE_CURRENT_BINARY_DIR}/../include/pmt)
+
+GR_SWIG_MAKE(pmt_swig pmt_swig.i)
+
+GR_SWIG_INSTALL(
+ TARGETS pmt_swig
+ DESTINATION ${GR_PYTHON_DIR}/pmt
+ COMPONENT "runtime_python"
+)
+
+add_custom_target(pmt_swig DEPENDS ${SWIG_MODULE_pmt_swig_REAL_NAME})
+
+###############################################################
+# Build gnuradio-runtime swig
+###############################################################
+
# Only use if log4cpp is installed
# Define ENABLE_GR_LOG for the .i file to ignore it.
if(ENABLE_GR_LOG)
@@ -96,7 +117,15 @@ install(
gr_top_block.i
runtime_block_gateway.i
runtime_swig.i
+ pmt_swig.i
${CMAKE_CURRENT_BINARY_DIR}/runtime_swig_doc.i
+ ${CMAKE_CURRENT_BINARY_DIR}/pmt_swig_doc.i
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
+ COMPONENT "runtime_swig"
+)
+
+install(
+ FILES gr_intrusive_ptr.i gruel_common.i
DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
COMPONENT "runtime_swig"
)
diff --git a/gnuradio-runtime/swig/gr_basic_block.i b/gnuradio-runtime/swig/gr_basic_block.i
index 62f16462d6..2e703278c5 100644
--- a/gnuradio-runtime/swig/gr_basic_block.i
+++ b/gnuradio-runtime/swig/gr_basic_block.i
@@ -23,6 +23,7 @@
class gr_basic_block;
typedef boost::shared_ptr<gr_basic_block> gr_basic_block_sptr;
%template(gr_basic_block_sptr) boost::shared_ptr<gr_basic_block>;
+
%include "pmt_swig.i"
using namespace pmt;
diff --git a/gnuradio-runtime/swig/gr_feval.i b/gnuradio-runtime/swig/gr_feval.i
index bcf4f1e646..e3b8696fa6 100644
--- a/gnuradio-runtime/swig/gr_feval.i
+++ b/gnuradio-runtime/swig/gr_feval.i
@@ -160,7 +160,7 @@ public:
*/
%inline %{
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
class gr_py_feval_dd : public gr_feval_dd
{
diff --git a/gruel/src/swig/gr_intrusive_ptr.i b/gnuradio-runtime/swig/gr_intrusive_ptr.i
index 40c438d004..40c438d004 100644
--- a/gruel/src/swig/gr_intrusive_ptr.i
+++ b/gnuradio-runtime/swig/gr_intrusive_ptr.i
diff --git a/gnuradio-runtime/swig/gr_realtime.i b/gnuradio-runtime/swig/gr_realtime.i
index 1051d3e2b3..4d5c2b856f 100644
--- a/gnuradio-runtime/swig/gr_realtime.i
+++ b/gnuradio-runtime/swig/gr_realtime.i
@@ -22,14 +22,14 @@
%rename(enable_realtime_scheduling) gr_enable_realtime_scheduling;
-// NOTE: This is duplicated from gruel/src/include/gruel/gr_realtime.h,
+// NOTE: This is duplicated from gnuradio-runtime/include/gr_realtime.h,
// and must be kept in sync with it. This is the least evil workaround
// for allowing 3rd party code builds to work when GNU Radio is
// installed from binary packages into the standard system directories.
-// Otherwise, they can't find #include <gruel/gr_realtime.h>, since
+// Otherwise, they can't find #include <gr_realtime.h>, since
// pkg-config strips -I/usr/include from the --cflags path.
-namespace gruel {
+namespace gr {
typedef enum {
RT_OK = 0,
@@ -40,5 +40,5 @@ namespace gruel {
}
-typedef gruel::rt_status_t gr_rt_status_t;
+typedef gr::rt_status_t gr_rt_status_t;
gr_rt_status_t gr_enable_realtime_scheduling();
diff --git a/gruel/src/swig/gruel_common.i b/gnuradio-runtime/swig/gruel_common.i
index 3a4d841d61..3a4d841d61 100644
--- a/gruel/src/swig/gruel_common.i
+++ b/gnuradio-runtime/swig/gruel_common.i
diff --git a/gruel/src/swig/pmt_swig.i b/gnuradio-runtime/swig/pmt_swig.i
index ba16511114..c75c022ea6 100644
--- a/gruel/src/swig/pmt_swig.i
+++ b/gnuradio-runtime/swig/pmt_swig.i
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2011-2012 Free Software Foundation, Inc.
+ * Copyright 2011-2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -22,6 +22,7 @@
%include "std_string.i"
%include "stdint.i"
+
%{
#include <boost/intrusive_ptr.hpp>
#include <boost/shared_ptr.hpp>
@@ -31,10 +32,11 @@
#include <stdint.h>
#include <iosfwd>
#include <stdexcept>
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
%}
-%include "gruel_common.i"
+%include "gnuradio.i"
+
//load generated python docstrings
%include "pmt_swig_doc.i"
@@ -248,8 +250,8 @@ namespace pmt{
void any_set(pmt_t obj, const boost::any &any);
bool is_msg_accepter(const pmt_t &obj);
- pmt_t make_msg_accepter(boost::shared_ptr<gruel::msg_accepter> ma);
- boost::shared_ptr<gruel::msg_accepter> msg_accepter_ref(const pmt_t &obj);
+ pmt_t make_msg_accepter(boost::shared_ptr<gr::messages::msg_accepter> ma);
+ boost::shared_ptr<gr::messages::msg_accepter> msg_accepter_ref(const pmt_t &obj);
bool eq(const pmt_t& x, const pmt_t& y);
bool eqv(const pmt_t& x, const pmt_t& y);
diff --git a/gr-analog/include/analog/api.h b/gr-analog/include/analog/api.h
index b7dee46933..2459ace614 100644
--- a/gr-analog/include/analog/api.h
+++ b/gr-analog/include/analog/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_ANALOG_API_H
#define INCLUDED_ANALOG_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_analog_EXPORTS
# define ANALOG_API __GR_ATTR_EXPORT
diff --git a/gr-analog/lib/CMakeLists.txt b/gr-analog/lib/CMakeLists.txt
index 5cb00e9f94..5719eac7a5 100644
--- a/gr-analog/lib/CMakeLists.txt
+++ b/gr-analog/lib/CMakeLists.txt
@@ -30,7 +30,6 @@ include_directories(
${GR_BLOCKS_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
${VOLK_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-analog/lib/fastnoise_source_X_impl.cc.t b/gr-analog/lib/fastnoise_source_X_impl.cc.t
index 25ad8073aa..706ddbbf84 100644
--- a/gr-analog/lib/fastnoise_source_X_impl.cc.t
+++ b/gr-analog/lib/fastnoise_source_X_impl.cc.t
@@ -59,7 +59,7 @@ namespace gr {
void
@IMPL_NAME@::set_type(noise_type_t type)
{
- gruel::scoped_lock l(d_setlock);
+ gr::thread::scoped_lock l(d_setlock);
d_type = type;
generate();
}
@@ -67,7 +67,7 @@ namespace gr {
void
@IMPL_NAME@::set_amplitude(float ampl)
{
- gruel::scoped_lock l(d_setlock);
+ gr::thread::scoped_lock l(d_setlock);
d_ampl = ampl;
generate();
}
@@ -123,7 +123,7 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- gruel::scoped_lock l(d_setlock);
+ gr::thread::scoped_lock l(d_setlock);
@TYPE@ *out = (@TYPE@*)output_items[0];
diff --git a/gr-analog/lib/noise_source_X_impl.cc.t b/gr-analog/lib/noise_source_X_impl.cc.t
index 40e2517d2e..7f371b2cfd 100644
--- a/gr-analog/lib/noise_source_X_impl.cc.t
+++ b/gr-analog/lib/noise_source_X_impl.cc.t
@@ -57,14 +57,14 @@ namespace gr {
void
@IMPL_NAME@::set_type(noise_type_t type)
{
- gruel::scoped_lock l(d_setlock);
+ gr::thread::scoped_lock l(d_setlock);
d_type = type;
}
void
@IMPL_NAME@::set_amplitude(float ampl)
{
- gruel::scoped_lock l(d_setlock);
+ gr::thread::scoped_lock l(d_setlock);
d_ampl = ampl;
}
@@ -73,7 +73,7 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- gruel::scoped_lock l(d_setlock);
+ gr::thread::scoped_lock l(d_setlock);
@TYPE@ *out = (@TYPE@*)output_items[0];
diff --git a/gr-analog/lib/qa_analog.h b/gr-analog/lib/qa_analog.h
index 458861cc91..b66b62b5fe 100644
--- a/gr-analog/lib/qa_analog.h
+++ b/gr-analog/lib/qa_analog.h
@@ -23,7 +23,7 @@
#ifndef _QA_GR_ANALOG_H_
#define _QA_GR_ANALOG_H_
-#include <gruel/attributes.h>
+#include <attributes.h>
#include <cppunit/TestSuite.h>
//! collect all the tests for the gr-analog directory
diff --git a/gr-analog/swig/CMakeLists.txt b/gr-analog/swig/CMakeLists.txt
index 8b56be500c..9f554f70f9 100644
--- a/gr-analog/swig/CMakeLists.txt
+++ b/gr-analog/swig/CMakeLists.txt
@@ -28,7 +28,6 @@ set(GR_SWIG_INCLUDE_DIRS
${GR_ANALOG_INCLUDE_DIRS}
${GR_FILTER_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-atsc/include/atsc/api.h b/gr-atsc/include/atsc/api.h
index 5add37762b..9516892e02 100644
--- a/gr-atsc/include/atsc/api.h
+++ b/gr-atsc/include/atsc/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_ATSC_API_H
#define INCLUDED_ATSC_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_atsc_EXPORTS
# define ATSC_API __GR_ATTR_EXPORT
diff --git a/gr-atsc/lib/CMakeLists.txt b/gr-atsc/lib/CMakeLists.txt
index b3aa626cb5..22ea35c09e 100644
--- a/gr-atsc/lib/CMakeLists.txt
+++ b/gr-atsc/lib/CMakeLists.txt
@@ -28,7 +28,6 @@ include_directories(
${GR_ANALOG_INCLUDE_DIRS}
${GR_FEC_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${LOG4CPP_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-atsc/swig/CMakeLists.txt b/gr-atsc/swig/CMakeLists.txt
index 37da95dce1..91d2080cac 100644
--- a/gr-atsc/swig/CMakeLists.txt
+++ b/gr-atsc/swig/CMakeLists.txt
@@ -29,7 +29,6 @@ set(GR_SWIG_INCLUDE_DIRS
${GR_BLOCKS_INCLUDE_DIRS}
${GR_ANALOG_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${FFTW3F_INCLUDE_DIRS}
)
diff --git a/gr-audio/examples/c++/CMakeLists.txt b/gr-audio/examples/c++/CMakeLists.txt
index a91dafed78..d383008011 100644
--- a/gr-audio/examples/c++/CMakeLists.txt
+++ b/gr-audio/examples/c++/CMakeLists.txt
@@ -21,7 +21,6 @@ include_directories(
${GR_AUDIO_INCLUDE_DIRS}
${GR_ANALOG_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-audio/include/audio/api.h b/gr-audio/include/audio/api.h
index 2ddd0fec6e..1c113c92ba 100644
--- a/gr-audio/include/audio/api.h
+++ b/gr-audio/include/audio/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_GR_AUDIO_API_H
#define INCLUDED_GR_AUDIO_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_audio_EXPORTS
# define GR_AUDIO_API __GR_ATTR_EXPORT
diff --git a/gr-audio/lib/CMakeLists.txt b/gr-audio/lib/CMakeLists.txt
index 8390f85e63..3e29319ebb 100644
--- a/gr-audio/lib/CMakeLists.txt
+++ b/gr-audio/lib/CMakeLists.txt
@@ -24,7 +24,6 @@ include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${GR_AUDIO_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${LOG4CPP_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-audio/lib/osx/circular_buffer.h b/gr-audio/lib/osx/circular_buffer.h
index 65788d482c..7abbeaeb0c 100644
--- a/gr-audio/lib/osx/circular_buffer.h
+++ b/gr-audio/lib/osx/circular_buffer.h
@@ -23,7 +23,7 @@
#ifndef _CIRCULAR_BUFFER_H_
#define _CIRCULAR_BUFFER_H_
-#include <gruel/thread.h>
+#include <thread/thread.h>
#include <iostream>
#include <stdexcept>
@@ -49,9 +49,9 @@ private:
size_t d_n_avail_write_I, d_n_avail_read_I;
// stuff to control access to class internals
- gruel::mutex* d_internal;
- gruel::condition_variable* d_readBlock;
- gruel::condition_variable* d_writeBlock;
+ gr::thread::mutex* d_internal;
+ gr::thread::condition_variable* d_readBlock;
+ gr::thread::condition_variable* d_writeBlock;
// booleans to decide how to control reading, writing, and aborting
bool d_doWriteBlock, d_doFullRead, d_doAbort;
@@ -96,13 +96,13 @@ public:
};
inline size_t n_avail_write_items () {
- gruel::scoped_lock l (*d_internal);
+ gr::thread::scoped_lock l (*d_internal);
size_t retVal = d_n_avail_write_I;
return (retVal);
};
inline size_t n_avail_read_items () {
- gruel::scoped_lock l (*d_internal);
+ gr::thread::scoped_lock l (*d_internal);
size_t retVal = d_n_avail_read_I;
return (retVal);
};
@@ -120,13 +120,13 @@ public:
// create a mutex to handle contention of shared resources;
// any routine needed access to shared resources uses lock()
// before doing anything, then unlock() when finished.
- d_internal = new gruel::mutex ();
+ d_internal = new gr::thread::mutex ();
// link the internal mutex to the read and write conditions;
// when wait() is called, the internal mutex will automatically
// be unlock()'ed. Upon return (from a notify_one() to the condition),
// the internal mutex will be lock()'ed.
- d_readBlock = new gruel::condition_variable ();
- d_writeBlock = new gruel::condition_variable ();
+ d_readBlock = new gr::thread::condition_variable ();
+ d_writeBlock = new gr::thread::condition_variable ();
};
/*
@@ -167,7 +167,7 @@ public:
if (!buf)
throw std::runtime_error ("circular_buffer::enqueue(): "
"input buffer is NULL.\n");
- gruel::scoped_lock l (*d_internal);
+ gr::thread::scoped_lock l (*d_internal);
if (d_doAbort) {
return (2);
}
@@ -253,7 +253,7 @@ public:
throw std::runtime_error ("circular_buffer::dequeue()");
}
- gruel::scoped_lock l (*d_internal);
+ gr::thread::scoped_lock l (*d_internal);
if (d_doAbort) {
return (2);
}
@@ -305,7 +305,7 @@ public:
};
void abort () {
- gruel::scoped_lock l (*d_internal);
+ gr::thread::scoped_lock l (*d_internal);
d_doAbort = true;
d_writeBlock->notify_one ();
d_readBlock->notify_one ();
diff --git a/gr-audio/lib/osx/osx_sink.cc b/gr-audio/lib/osx/osx_sink.cc
index ace96ec742..b7fe4e9d11 100644
--- a/gr-audio/lib/osx/osx_sink.cc
+++ b/gr-audio/lib/osx/osx_sink.cc
@@ -188,12 +188,12 @@ namespace gr {
// create the stuff to regulate I/O
- d_cond_data = new gruel::condition_variable();
+ d_cond_data = new gr::thread::condition_variable();
if(d_cond_data == NULL)
CheckErrorAndThrow(errno, "new condition (data)",
"audio_osx_sink::audio_osx_sink");
- d_internal = new gruel::mutex();
+ d_internal = new gr::thread::mutex();
if(d_internal == NULL)
CheckErrorAndThrow(errno, "new mutex (internal)",
"audio_osx_sink::audio_osx_sink");
@@ -288,7 +288,7 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- gruel::scoped_lock l(*d_internal);
+ gr::thread::scoped_lock l(*d_internal);
/* take the input data, copy it, and push it to the bottom of the queue
mono input are pushed onto queue[0];
@@ -386,7 +386,7 @@ namespace gr {
osx_sink* This = (osx_sink*)inRefCon;
OSStatus err = noErr;
- gruel::scoped_lock l(*This->d_internal);
+ gr::thread::scoped_lock l(*This->d_internal);
#if _OSX_AU_DEBUG_
std::cerr << "cb_in: SC = " << This->d_queueSampleCount
diff --git a/gr-audio/lib/osx/osx_sink.h b/gr-audio/lib/osx/osx_sink.h
index 6bbd882239..153d2d76e6 100644
--- a/gr-audio/lib/osx/osx_sink.h
+++ b/gr-audio/lib/osx/osx_sink.h
@@ -47,8 +47,8 @@ namespace gr {
UInt32 d_n_channels;
UInt32 d_queueSampleCount, d_max_sample_count;
bool d_do_block;
- gruel::mutex* d_internal;
- gruel::condition_variable* d_cond_data;
+ gr::thread::mutex* d_internal;
+ gr::thread::condition_variable* d_cond_data;
circular_buffer<float>** d_buffers;
// AudioUnits and Such
diff --git a/gr-audio/lib/osx/osx_source.cc b/gr-audio/lib/osx/osx_source.cc
index c79a6ec6e9..c666bb7ad8 100644
--- a/gr-audio/lib/osx/osx_source.cc
+++ b/gr-audio/lib/osx/osx_source.cc
@@ -484,12 +484,12 @@ namespace gr {
// create the stuff to regulate I/O
- d_cond_data = new gruel::condition_variable();
+ d_cond_data = new gr::thread::condition_variable();
if(d_cond_data == NULL)
CheckErrorAndThrow(errno, "new condition (data)",
"audio_osx_source::audio_osx_source");
- d_internal = new gruel::mutex();
+ d_internal = new gr::thread::mutex();
if(d_internal == NULL)
CheckErrorAndThrow(errno, "new mutex (internal)",
"audio_osx_source::audio_osx_source");
@@ -687,7 +687,7 @@ namespace gr {
gr_vector_void_star &output_items)
{
// acquire control to do processing here only
- gruel::scoped_lock l(*d_internal);
+ gr::thread::scoped_lock l(*d_internal);
#if _OSX_AU_DEBUG_
std::cerr << "work1: SC = " << d_queueSampleCount
@@ -806,7 +806,7 @@ namespace gr {
OSStatus err = noErr;
osx_source* This = static_cast<osx_source*>(inRefCon);
- gruel::scoped_lock l(*This->d_internal);
+ gr::thread::scoped_lock l(*This->d_internal);
#if _OSX_AU_DEBUG_
std::cerr << "cb0: in#F = " << inNumberFrames
diff --git a/gr-audio/lib/osx/osx_source.h b/gr-audio/lib/osx/osx_source.h
index 9315c8e44e..03a2d8879c 100644
--- a/gr-audio/lib/osx/osx_source.h
+++ b/gr-audio/lib/osx/osx_source.h
@@ -53,8 +53,8 @@ namespace gr {
UInt32 d_n_AvailableInputFrames, d_n_ActualInputFrames;
UInt32 d_n_user_channels, d_n_max_channels, d_n_deviceChannels;
bool d_do_block, d_passThrough, d_waiting_for_data;
- gruel::mutex* d_internal;
- gruel::condition_variable* d_cond_data;
+ gr::thread::mutex* d_internal;
+ gr::thread::condition_variable* d_cond_data;
circular_buffer<float>** d_buffers;
// AudioUnits and Such
diff --git a/gr-audio/lib/portaudio/portaudio_sink.cc b/gr-audio/lib/portaudio/portaudio_sink.cc
index d1a3f5166c..746894e494 100644
--- a/gr-audio/lib/portaudio/portaudio_sink.cc
+++ b/gr-audio/lib/portaudio/portaudio_sink.cc
@@ -100,7 +100,7 @@ namespace gr {
if(nreqd_samples <= navail_samples) { // We've got enough data...
{
- gruel::scoped_lock guard(self->d_ringbuffer_mutex);
+ gr::thread::scoped_lock guard(self->d_ringbuffer_mutex);
memcpy(outputBuffer,
self->d_reader->read_pointer(),
@@ -313,7 +313,7 @@ namespace gr {
if(nframes == 0) { // no room...
if(d_ok_to_block) {
{
- gruel::scoped_lock guard(d_ringbuffer_mutex);
+ gr::thread::scoped_lock guard(d_ringbuffer_mutex);
while(!d_ringbuffer_ready)
d_ringbuffer_cond.wait(guard);
}
@@ -331,7 +331,7 @@ namespace gr {
// We can write the smaller of the request and the room we've got
{
- gruel::scoped_lock guard(d_ringbuffer_mutex);
+ gr::thread::scoped_lock guard(d_ringbuffer_mutex);
int nf = std::min(noutput_items - k, nframes);
float *p = (float*)d_writer->write_pointer();
diff --git a/gr-audio/lib/portaudio/portaudio_sink.h b/gr-audio/lib/portaudio/portaudio_sink.h
index 41a725b691..e69f96b252 100644
--- a/gr-audio/lib/portaudio/portaudio_sink.h
+++ b/gr-audio/lib/portaudio/portaudio_sink.h
@@ -24,7 +24,7 @@
#include <audio/sink.h>
#include <gr_buffer.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
#include <string>
#include <portaudio.h>
#include <stdexcept>
@@ -58,8 +58,8 @@ namespace gr {
gr_buffer_sptr d_writer; // buffer used between work and callback
gr_buffer_reader_sptr d_reader;
- gruel::mutex d_ringbuffer_mutex;
- gruel::condition_variable d_ringbuffer_cond;
+ gr::thread::mutex d_ringbuffer_mutex;
+ gr::thread::condition_variable d_ringbuffer_cond;
bool d_ringbuffer_ready;
// random stats
diff --git a/gr-audio/lib/portaudio/portaudio_source.cc b/gr-audio/lib/portaudio/portaudio_source.cc
index 937c1d0dbf..500d3109e5 100644
--- a/gr-audio/lib/portaudio/portaudio_source.cc
+++ b/gr-audio/lib/portaudio/portaudio_source.cc
@@ -103,7 +103,7 @@ namespace gr {
// copy from input buffer to ringbuffer
{
- gruel::scoped_lock(d_ringbuffer_mutex);
+ gr::thread::scoped_lock(d_ringbuffer_mutex);
memcpy(self->d_writer->write_pointer(),
inputBuffer,
@@ -305,7 +305,7 @@ namespace gr {
return k;
if(d_ok_to_block) {
- gruel::scoped_lock guard(d_ringbuffer_mutex);
+ gr::thread::scoped_lock guard(d_ringbuffer_mutex);
while(d_ringbuffer_ready == false)
d_ringbuffer_cond.wait(guard); // block here, then try again
continue;
@@ -324,7 +324,7 @@ namespace gr {
// Fill with some frames of zeros
{
- gruel::scoped_lock guard(d_ringbuffer_mutex);
+ gr::thread::scoped_lock guard(d_ringbuffer_mutex);
int nf = std::min(noutput_items - k, (int)d_portaudio_buffer_size_frames);
for(int i = 0; i < nf; i++) {
@@ -341,7 +341,7 @@ namespace gr {
// We can read the smaller of the request and what's in the buffer.
{
- gruel::scoped_lock guard(d_ringbuffer_mutex);
+ gr::thread::scoped_lock guard(d_ringbuffer_mutex);
int nf = std::min(noutput_items - k, nframes);
diff --git a/gr-audio/lib/portaudio/portaudio_source.h b/gr-audio/lib/portaudio/portaudio_source.h
index d4f4f01d1f..6a3419b613 100644
--- a/gr-audio/lib/portaudio/portaudio_source.h
+++ b/gr-audio/lib/portaudio/portaudio_source.h
@@ -25,7 +25,7 @@
#include <audio/source.h>
#include <gr_buffer.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
#include <string>
#include <portaudio.h>
#include <stdexcept>
@@ -58,8 +58,8 @@ namespace gr {
gr_buffer_sptr d_writer; // buffer used between work and callback
gr_buffer_reader_sptr d_reader;
- gruel::mutex d_ringbuffer_mutex;
- gruel::condition_variable d_ringbuffer_cond;
+ gr::thread::mutex d_ringbuffer_mutex;
+ gr::thread::condition_variable d_ringbuffer_cond;
bool d_ringbuffer_ready;
// random stats
diff --git a/gr-audio/swig/CMakeLists.txt b/gr-audio/swig/CMakeLists.txt
index e9bc9ddead..1a09ff8837 100644
--- a/gr-audio/swig/CMakeLists.txt
+++ b/gr-audio/swig/CMakeLists.txt
@@ -26,7 +26,6 @@ include(GrSwig)
set(GR_SWIG_INCLUDE_DIRS
${GR_AUDIO_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-blocks/grc/blocks_message_strobe.xml b/gr-blocks/grc/blocks_message_strobe.xml
index 25c98cd01c..8cd39a8bf2 100644
--- a/gr-blocks/grc/blocks_message_strobe.xml
+++ b/gr-blocks/grc/blocks_message_strobe.xml
@@ -8,7 +8,7 @@
<name>Message Strobe</name>
<key>blocks_message_strobe</key>
<import>from gnuradio import blocks</import>
- <import>from gruel import pmt</import>
+ <import>import pmt</import>
<make>blocks.message_strobe($msg, $period)</make>
<param>
<name>Message PMT</name>
diff --git a/gr-blocks/grc/blocks_random_pdu.xml b/gr-blocks/grc/blocks_random_pdu.xml
index 640e14de8a..83e3e65fd6 100644
--- a/gr-blocks/grc/blocks_random_pdu.xml
+++ b/gr-blocks/grc/blocks_random_pdu.xml
@@ -8,7 +8,7 @@
<name>Random PDU Generator</name>
<key>blocks_random_pdu</key>
<import>from gnuradio import blocks</import>
- <import>from gruel import pmt</import>
+ <import>import pmt</import>
<make>blocks.random_pdu($minsize, $maxsize)</make>
<param>
<name>Min Bytes</name>
diff --git a/gr-blocks/include/blocks/api.h b/gr-blocks/include/blocks/api.h
index 45fbc0d216..d77bdbdd5b 100644
--- a/gr-blocks/include/blocks/api.h
+++ b/gr-blocks/include/blocks/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_BLOCKS_API_H
#define INCLUDED_BLOCKS_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_blocks_EXPORTS
# define BLOCKS_API __GR_ATTR_EXPORT
diff --git a/gr-blocks/include/blocks/pdu.h b/gr-blocks/include/blocks/pdu.h
index ffcfbb9abb..8890c5cb17 100644
--- a/gr-blocks/include/blocks/pdu.h
+++ b/gr-blocks/include/blocks/pdu.h
@@ -25,7 +25,7 @@
#include <blocks/api.h>
#include <gr_complex.h>
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
#define PDU_PORT_ID pmt::mp("pdus")
#define PDU_LENGTH_TAG pmt::mp("pdu_length")
diff --git a/gr-blocks/lib/CMakeLists.txt b/gr-blocks/lib/CMakeLists.txt
index 5fc2b56b2d..bdd7ca77a6 100644
--- a/gr-blocks/lib/CMakeLists.txt
+++ b/gr-blocks/lib/CMakeLists.txt
@@ -128,7 +128,6 @@ include_directories(
${GR_BLOCKS_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
${VOLK_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-blocks/lib/annotator_raw_impl.cc b/gr-blocks/lib/annotator_raw_impl.cc
index fa323f999e..ee5deb1f6b 100644
--- a/gr-blocks/lib/annotator_raw_impl.cc
+++ b/gr-blocks/lib/annotator_raw_impl.cc
@@ -60,7 +60,7 @@ namespace gr {
void
annotator_raw_impl::add_tag(uint64_t offset, pmt_t key, pmt_t val)
{
- gruel::scoped_lock l(d_mutex);
+ gr::thread::scoped_lock l(d_mutex);
gr_tag_t tag;
tag.srcid = pmt::intern(name());
@@ -84,7 +84,7 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- gruel::scoped_lock l(d_mutex);
+ gr::thread::scoped_lock l(d_mutex);
const char *in = (const char*)input_items[0];
char *out = (char*)output_items[0];
diff --git a/gr-blocks/lib/annotator_raw_impl.h b/gr-blocks/lib/annotator_raw_impl.h
index 2e349bfe33..e0e16c30d6 100644
--- a/gr-blocks/lib/annotator_raw_impl.h
+++ b/gr-blocks/lib/annotator_raw_impl.h
@@ -24,7 +24,7 @@
#define INCLUDED_GR_ANNOTATOR_RAW_IMPL_H
#include <blocks/annotator_raw.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
namespace gr {
namespace blocks {
@@ -34,7 +34,7 @@ namespace gr {
private:
size_t d_itemsize;
std::vector<gr_tag_t> d_queued_tags;
- gruel::mutex d_mutex;
+ gr::thread::mutex d_mutex;
public:
annotator_raw_impl(size_t sizeof_stream_item);
diff --git a/gr-blocks/lib/delay_impl.cc b/gr-blocks/lib/delay_impl.cc
index 67449aca20..08cd1db1c3 100644
--- a/gr-blocks/lib/delay_impl.cc
+++ b/gr-blocks/lib/delay_impl.cc
@@ -69,7 +69,7 @@ namespace gr {
// protects from quickly-repeated calls to this function that
// would end with d_delta=0.
if(d != dly()) {
- gruel::scoped_lock l(d_mutex_delay);
+ gr::thread::scoped_lock l(d_mutex_delay);
int old = dly();
set_history(d+1);
d_delta += dly() - old;
@@ -82,7 +82,7 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- gruel::scoped_lock l(d_mutex_delay);
+ gr::thread::scoped_lock l(d_mutex_delay);
assert(input_items.size() == output_items.size());
const char *iptr;
diff --git a/gr-blocks/lib/delay_impl.h b/gr-blocks/lib/delay_impl.h
index 56d971b116..1cb959359e 100644
--- a/gr-blocks/lib/delay_impl.h
+++ b/gr-blocks/lib/delay_impl.h
@@ -24,7 +24,7 @@
#define INCLUDED_GR_DELAY_IMPL_H
#include <blocks/delay.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
namespace gr {
namespace blocks {
@@ -37,7 +37,7 @@ namespace gr {
size_t d_itemsize;
int d_delta;
- gruel::mutex d_mutex_delay;
+ gr::thread::mutex d_mutex_delay;
public:
delay_impl(size_t itemsize, int delay);
diff --git a/gr-blocks/lib/file_meta_sink_impl.cc b/gr-blocks/lib/file_meta_sink_impl.cc
index d996e7a93e..dc87a7e956 100644
--- a/gr-blocks/lib/file_meta_sink_impl.cc
+++ b/gr-blocks/lib/file_meta_sink_impl.cc
@@ -171,7 +171,7 @@ namespace gr {
bool
file_meta_sink_impl::_open(FILE **fp, const char *filename)
{
- gruel::scoped_lock guard(d_mutex); // hold mutex for duration of this function
+ gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this function
bool ret = true;
int fd;
@@ -201,7 +201,7 @@ namespace gr {
void
file_meta_sink_impl::close()
{
- gruel::scoped_lock guard(d_mutex); // hold mutex for duration of this function
+ gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this function
update_last_header();
if(d_state == STATE_DETACHED) {
@@ -222,7 +222,7 @@ namespace gr {
file_meta_sink_impl::do_update()
{
if(d_updated) {
- gruel::scoped_lock guard(d_mutex); // hold mutex for duration of this block
+ gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this block
if(d_state == STATE_DETACHED) {
if(d_hdr_fp)
fclose(d_hdr_fp);
diff --git a/gr-blocks/lib/file_meta_sink_impl.h b/gr-blocks/lib/file_meta_sink_impl.h
index 566c997b3d..d4048e1e4e 100644
--- a/gr-blocks/lib/file_meta_sink_impl.h
+++ b/gr-blocks/lib/file_meta_sink_impl.h
@@ -24,8 +24,8 @@
#define INCLUDED_BLOCKS_FILE_META_SINK_IMPL_H
#include <blocks/file_meta_sink.h>
-#include <gruel/pmt.h>
-#include <gruel/thread.h>
+#include <pmt/pmt.h>
+#include <thread/thread.h>
using namespace pmt;
diff --git a/gr-blocks/lib/file_meta_source_impl.cc b/gr-blocks/lib/file_meta_source_impl.cc
index 9d66193e53..5d64e40a26 100644
--- a/gr-blocks/lib/file_meta_source_impl.cc
+++ b/gr-blocks/lib/file_meta_source_impl.cc
@@ -297,7 +297,7 @@ namespace gr {
bool
file_meta_source_impl::_open(FILE **fp, const char *filename)
{
- gruel::scoped_lock guard(d_mutex); // hold mutex for duration of this function
+ gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this function
bool ret = true;
int fd;
@@ -326,7 +326,7 @@ namespace gr {
void
file_meta_source_impl::close()
{
- gruel::scoped_lock guard(d_mutex); // hold mutex for duration of this function
+ gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this function
if(d_state == STATE_DETACHED) {
if(d_new_hdr_fp) {
fclose(d_new_hdr_fp);
@@ -345,7 +345,7 @@ namespace gr {
file_meta_source_impl::do_update()
{
if(d_updated) {
- gruel::scoped_lock guard(d_mutex); // hold mutex for duration of this block
+ gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this block
if(d_state == STATE_DETACHED) {
if(d_hdr_fp)
fclose(d_hdr_fp);
@@ -395,7 +395,7 @@ namespace gr {
d_tags.pop_back();
}
- gruel::scoped_lock lock(d_mutex); // hold for the rest of this function
+ gr::thread::scoped_lock lock(d_mutex); // hold for the rest of this function
while(size) {
i = fread(out, d_itemsize, size, d_fp);
diff --git a/gr-blocks/lib/file_meta_source_impl.h b/gr-blocks/lib/file_meta_source_impl.h
index ca7ddc6e10..3f8ebda6ee 100644
--- a/gr-blocks/lib/file_meta_source_impl.h
+++ b/gr-blocks/lib/file_meta_source_impl.h
@@ -25,8 +25,8 @@
#include <blocks/file_meta_source.h>
#include <gr_tags.h>
-#include <gruel/pmt.h>
-#include <gruel/thread.h>
+#include <pmt/pmt.h>
+#include <thread/thread.h>
#include <blocks/file_meta_sink.h>
@@ -50,7 +50,7 @@ namespace gr {
bool d_updated;
bool d_repeat;
- gruel::mutex d_mutex;
+ gr::thread::mutex d_mutex;
FILE *d_new_fp, *d_new_hdr_fp;
FILE *d_fp, *d_hdr_fp;
meta_state_t d_state;
diff --git a/gr-blocks/lib/file_sink_base.cc b/gr-blocks/lib/file_sink_base.cc
index 47c8f9882b..d3a36f3321 100644
--- a/gr-blocks/lib/file_sink_base.cc
+++ b/gr-blocks/lib/file_sink_base.cc
@@ -31,7 +31,7 @@
#include <fcntl.h>
#include <stdexcept>
#include <stdio.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
// win32 (mingw/msvc) specific
#ifdef HAVE_IO_H
@@ -72,7 +72,7 @@ namespace gr {
bool
file_sink_base::open(const char *filename)
{
- gruel::scoped_lock guard(d_mutex); // hold mutex for duration of this function
+ gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this function
// we use the open system call to get access to the O_LARGEFILE flag.
int fd;
@@ -99,7 +99,7 @@ namespace gr {
void
file_sink_base::close()
{
- gruel::scoped_lock guard(d_mutex); // hold mutex for duration of this function
+ gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this function
if(d_new_fp) {
fclose(d_new_fp);
@@ -112,7 +112,7 @@ namespace gr {
file_sink_base::do_update()
{
if(d_updated) {
- gruel::scoped_lock guard(d_mutex); // hold mutex for duration of this block
+ gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this block
if(d_fp)
fclose(d_fp);
d_fp = d_new_fp; // install new file pointer
diff --git a/gr-blocks/lib/file_source_impl.cc b/gr-blocks/lib/file_source_impl.cc
index dcbd042106..3c30884a59 100644
--- a/gr-blocks/lib/file_source_impl.cc
+++ b/gr-blocks/lib/file_source_impl.cc
@@ -24,7 +24,7 @@
#include "config.h"
#endif
-#include <gruel/thread.h>
+#include <thread/thread.h>
#include "file_source_impl.h"
#include <gr_io_signature.h>
#include <cstdio>
@@ -85,7 +85,7 @@ namespace gr {
file_source_impl::open(const char *filename, bool repeat)
{
// obtain exclusive access for duration of this function
- gruel::scoped_lock lock(fp_mutex);
+ gr::thread::scoped_lock lock(fp_mutex);
int fd;
@@ -114,7 +114,7 @@ namespace gr {
file_source_impl::close()
{
// obtain exclusive access for duration of this function
- gruel::scoped_lock lock(fp_mutex);
+ gr::thread::scoped_lock lock(fp_mutex);
if(d_new_fp != NULL) {
fclose(d_new_fp);
@@ -127,7 +127,7 @@ namespace gr {
file_source_impl::do_update()
{
if(d_updated) {
- gruel::scoped_lock lock(fp_mutex); // hold while in scope
+ gr::thread::scoped_lock lock(fp_mutex); // hold while in scope
if(d_fp)
fclose(d_fp);
@@ -151,7 +151,7 @@ namespace gr {
if(d_fp == NULL)
throw std::runtime_error("work with file not open");
- gruel::scoped_lock lock(fp_mutex); // hold for the rest of this function
+ gr::thread::scoped_lock lock(fp_mutex); // hold for the rest of this function
while(size) {
i = fread(o, d_itemsize, size, (FILE*)d_fp);
diff --git a/gr-blocks/lib/message_debug_impl.cc b/gr-blocks/lib/message_debug_impl.cc
index 6455513d76..04f31f88a2 100644
--- a/gr-blocks/lib/message_debug_impl.cc
+++ b/gr-blocks/lib/message_debug_impl.cc
@@ -50,7 +50,7 @@ namespace gr {
void
message_debug_impl::store(pmt::pmt_t msg)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
d_messages.push_back(msg);
}
@@ -87,7 +87,7 @@ namespace gr {
pmt::pmt_t
message_debug_impl::get_message(int i)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
if((size_t)i >= d_messages.size()) {
throw std::runtime_error("message_debug: index for message out of bounds.\n");
diff --git a/gr-blocks/lib/message_debug_impl.h b/gr-blocks/lib/message_debug_impl.h
index c9d82bd561..817a9a834c 100644
--- a/gr-blocks/lib/message_debug_impl.h
+++ b/gr-blocks/lib/message_debug_impl.h
@@ -25,8 +25,8 @@
#include <blocks/message_debug.h>
#include <gr_block.h>
-#include <gruel/thread.h>
-#include <gruel/pmt.h>
+#include <thread/thread.h>
+#include <pmt/pmt.h>
namespace gr {
namespace blocks {
@@ -72,7 +72,7 @@ namespace gr {
*/
void store(pmt::pmt_t msg);
- gruel::mutex d_mutex;
+ gr::thread::mutex d_mutex;
std::vector<pmt::pmt_t> d_messages;
public:
diff --git a/gr-blocks/lib/qa_blocks.h b/gr-blocks/lib/qa_blocks.h
index 88eac60426..ad538134bd 100644
--- a/gr-blocks/lib/qa_blocks.h
+++ b/gr-blocks/lib/qa_blocks.h
@@ -23,7 +23,7 @@
#ifndef _QA_GR_BLOCKS_H_
#define _QA_GR_BLOCKS_H_
-#include <gruel/attributes.h>
+#include <attributes.h>
#include <cppunit/TestSuite.h>
//! collect all the tests for the gr-blocks directory
diff --git a/gr-blocks/lib/qa_rotator.cc b/gr-blocks/lib/qa_rotator.cc
index 86bbdd5282..877392075a 100644
--- a/gr-blocks/lib/qa_rotator.cc
+++ b/gr-blocks/lib/qa_rotator.cc
@@ -24,7 +24,7 @@
#include <config.h>
#endif
-#include <gruel/attributes.h>
+#include <attributes.h>
#include <cppunit/TestAssert.h>
#include <qa_rotator.h>
#include <blocks/rotator.h>
diff --git a/gr-blocks/lib/qa_set_msg_handler.cc b/gr-blocks/lib/qa_set_msg_handler.cc
index cfb990f0c4..cc94243d89 100644
--- a/gr-blocks/lib/qa_set_msg_handler.cc
+++ b/gr-blocks/lib/qa_set_msg_handler.cc
@@ -30,7 +30,7 @@
#include <blocks/null_source.h>
#include <blocks/null_sink.h>
#include <blocks/nop.h>
-#include <gruel/msg_passing.h>
+#include <messages/msg_passing.h>
#include <iostream>
#include <boost/thread/thread.hpp>
diff --git a/gr-blocks/lib/socket_pdu_impl.cc b/gr-blocks/lib/socket_pdu_impl.cc
index 4ff5ce6eb9..e4ef40f87a 100644
--- a/gr-blocks/lib/socket_pdu_impl.cc
+++ b/gr-blocks/lib/socket_pdu_impl.cc
@@ -104,7 +104,7 @@ namespace gr {
else
throw std::runtime_error("gr::blocks:socket_pdu: unknown socket type");
- d_thread = gruel::thread(boost::bind(&socket_pdu_impl::run_io_service, this));
+ d_thread = gr::thread::thread(boost::bind(&socket_pdu_impl::run_io_service, this));
d_started = true;
}
diff --git a/gr-blocks/lib/stream_pdu_base.cc b/gr-blocks/lib/stream_pdu_base.cc
index 0c4e7e0863..c887ad2fac 100644
--- a/gr-blocks/lib/stream_pdu_base.cc
+++ b/gr-blocks/lib/stream_pdu_base.cc
@@ -61,7 +61,7 @@ namespace gr {
{
d_blk = blk;
d_port = port;
- d_thread = gruel::thread(boost::bind(&stream_pdu_base::run, this));
+ d_thread = gr::thread::thread(boost::bind(&stream_pdu_base::run, this));
d_started = true;
}
diff --git a/gr-blocks/lib/stream_pdu_base.h b/gr-blocks/lib/stream_pdu_base.h
index 66eaaf0c04..c305880b07 100644
--- a/gr-blocks/lib/stream_pdu_base.h
+++ b/gr-blocks/lib/stream_pdu_base.h
@@ -23,8 +23,8 @@
#ifndef INCLUDED_STREAM_PDU_BASE_H
#define INCLUDED_STREAM_PDU_BASE_H
-#include <gruel/thread.h>
-#include <gruel/pmt.h>
+#include <thread/thread.h>
+#include <pmt/pmt.h>
class gr_basic_block;
@@ -42,7 +42,7 @@ namespace gr {
bool d_started;
bool d_finished;
std::vector<uint8_t> d_rxbuf;
- gruel::thread d_thread;
+ gr::thread::thread d_thread;
pmt::pmt_t d_port;
gr_basic_block *d_blk;
diff --git a/gr-blocks/lib/tag_debug_impl.cc b/gr-blocks/lib/tag_debug_impl.cc
index c595d41db5..3bcffb664f 100644
--- a/gr-blocks/lib/tag_debug_impl.cc
+++ b/gr-blocks/lib/tag_debug_impl.cc
@@ -56,14 +56,14 @@ namespace gr {
std::vector<gr_tag_t>
tag_debug_impl::current_tags()
{
- gruel::scoped_lock l(d_mutex);
+ gr::thread::scoped_lock l(d_mutex);
return d_tags;
}
void
tag_debug_impl::set_display(bool d)
{
- gruel::scoped_lock l(d_mutex);
+ gr::thread::scoped_lock l(d_mutex);
d_display = d;
}
@@ -72,7 +72,7 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- gruel::scoped_lock l(d_mutex);
+ gr::thread::scoped_lock l(d_mutex);
std::stringstream sout;
if(d_display) {
diff --git a/gr-blocks/lib/tag_debug_impl.h b/gr-blocks/lib/tag_debug_impl.h
index 988d0e1103..caf5b6b4f5 100644
--- a/gr-blocks/lib/tag_debug_impl.h
+++ b/gr-blocks/lib/tag_debug_impl.h
@@ -24,7 +24,7 @@
#define INCLUDED_GR_TAG_DEBUG_IMPL_H
#include <blocks/tag_debug.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
#include <stddef.h>
namespace gr {
@@ -37,7 +37,7 @@ namespace gr {
std::vector<gr_tag_t> d_tags;
std::vector<gr_tag_t>::iterator d_tags_itr;
bool d_display;
- gruel::mutex d_mutex;
+ gr::thread::mutex d_mutex;
public:
tag_debug_impl(size_t sizeof_stream_item, const std::string &name);
diff --git a/gr-blocks/lib/tcp_connection.h b/gr-blocks/lib/tcp_connection.h
index ba57de0783..32a5ef8c79 100644
--- a/gr-blocks/lib/tcp_connection.h
+++ b/gr-blocks/lib/tcp_connection.h
@@ -25,7 +25,7 @@
#include <boost/array.hpp>
#include <boost/asio.hpp>
-#include <gruel/pmt.h>
+#include <pmt/pmt.h>
class gr_basic_block;
diff --git a/gr-blocks/lib/udp_sink_impl.cc b/gr-blocks/lib/udp_sink_impl.cc
index db21da3eeb..4bce4ae9c5 100644
--- a/gr-blocks/lib/udp_sink_impl.cc
+++ b/gr-blocks/lib/udp_sink_impl.cc
@@ -28,7 +28,7 @@
#include <gr_io_signature.h>
#include <boost/asio.hpp>
#include <boost/format.hpp>
-#include <gruel/thread.h>
+#include <thread/thread.h>
#include <stdexcept>
#include <stdio.h>
#include <string.h>
@@ -95,7 +95,7 @@ namespace gr {
if(!d_connected)
return;
- gruel::scoped_lock guard(d_mutex); // protect d_socket from work()
+ gr::thread::scoped_lock guard(d_mutex); // protect d_socket from work()
// Send a few zero-length packets to signal receiver we are done
boost::array<char, 1> send_buf = {{ 0 }};
@@ -120,7 +120,7 @@ namespace gr {
ssize_t r=0, bytes_sent=0, bytes_to_send=0;
ssize_t total_size = noutput_items*d_itemsize;
- gruel::scoped_lock guard(d_mutex); // protect d_socket
+ gr::thread::scoped_lock guard(d_mutex); // protect d_socket
while(bytes_sent < total_size) {
bytes_to_send = std::min((ssize_t)d_payload_size, (total_size-bytes_sent));
diff --git a/gr-blocks/lib/udp_sink_impl.h b/gr-blocks/lib/udp_sink_impl.h
index 243d499b60..0f0d081422 100644
--- a/gr-blocks/lib/udp_sink_impl.h
+++ b/gr-blocks/lib/udp_sink_impl.h
@@ -37,7 +37,7 @@ namespace gr {
int d_payload_size; // maximum transmission unit (packet length)
bool d_eof; // send zero-length packet on disconnect
bool d_connected; // are we connected?
- gruel::mutex d_mutex; // protects d_socket and d_connected
+ gr::thread::mutex d_mutex; // protects d_socket and d_connected
boost::asio::ip::udp::socket *d_socket; // handle to socket
boost::asio::ip::udp::endpoint d_endpoint;
diff --git a/gr-blocks/lib/udp_source_impl.cc b/gr-blocks/lib/udp_source_impl.cc
index e6e9caf8ad..5b108c393e 100644
--- a/gr-blocks/lib/udp_source_impl.cc
+++ b/gr-blocks/lib/udp_source_impl.cc
@@ -100,7 +100,7 @@ namespace gr {
d_socket->bind(d_endpoint);
start_receive();
- d_udp_thread = gruel::thread(boost::bind(&udp_source_impl::run_io_service, this));
+ d_udp_thread = gr::thread::thread(boost::bind(&udp_source_impl::run_io_service, this));
d_connected = true;
}
}
@@ -108,7 +108,7 @@ namespace gr {
void
udp_source_impl::disconnect()
{
- gruel::scoped_lock lock(d_setlock);
+ gr::thread::scoped_lock lock(d_setlock);
if(!d_connected)
return;
@@ -144,7 +144,7 @@ namespace gr {
{
if(!error) {
{
- boost::lock_guard<gruel::mutex> lock(d_udp_mutex);
+ boost::lock_guard<gr::thread::mutex> lock(d_udp_mutex);
if(d_eof && (bytes_transferred == 1) && (d_rxbuf[0] == 0x00)) {
// If we are using EOF notification, test for it and don't
// add anything to the output.
@@ -177,7 +177,7 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- gruel::scoped_lock l(d_setlock);
+ gr::thread::scoped_lock l(d_setlock);
char *out = (char*)output_items[0];
diff --git a/gr-blocks/lib/udp_source_impl.h b/gr-blocks/lib/udp_source_impl.h
index 8927f5f933..d6c773726b 100644
--- a/gr-blocks/lib/udp_source_impl.h
+++ b/gr-blocks/lib/udp_source_impl.h
@@ -26,7 +26,7 @@
#include <blocks/udp_source.h>
#include <boost/asio.hpp>
#include <boost/format.hpp>
-#include <gruel/thread.h>
+#include <thread/thread.h>
namespace gr {
namespace blocks {
@@ -52,9 +52,9 @@ namespace gr {
boost::asio::ip::udp::endpoint d_endpoint_rcvd;
boost::asio::io_service d_io_service;
- gruel::condition_variable d_cond_wait;
- gruel::mutex d_udp_mutex;
- gruel::thread d_udp_thread;
+ gr::thread::condition_variable d_cond_wait;
+ gr::thread::mutex d_udp_mutex;
+ gr::thread::thread d_udp_thread;
void start_receive();
void handle_read(const boost::system::error_code& error,
diff --git a/gr-blocks/lib/vector_map_impl.cc b/gr-blocks/lib/vector_map_impl.cc
index cefaaeea35..19b57bac8b 100644
--- a/gr-blocks/lib/vector_map_impl.cc
+++ b/gr-blocks/lib/vector_map_impl.cc
@@ -95,7 +95,7 @@ namespace gr {
}
}
}
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
d_mapping = mapping;
}
diff --git a/gr-blocks/lib/vector_map_impl.h b/gr-blocks/lib/vector_map_impl.h
index e27b3b9cec..08faa2ce09 100644
--- a/gr-blocks/lib/vector_map_impl.h
+++ b/gr-blocks/lib/vector_map_impl.h
@@ -24,7 +24,7 @@
#define INCLUDED_GR_VECTOR_MAP_IMPL_H
#include <blocks/vector_map.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
namespace gr {
namespace blocks {
@@ -35,7 +35,7 @@ namespace gr {
size_t d_item_size;
std::vector<size_t> d_in_vlens;
std::vector< std::vector< std::vector<size_t> > > d_mapping;
- gruel::mutex d_mutex; // mutex to protect set/work access
+ gr::thread::mutex d_mutex; // mutex to protect set/work access
public:
vector_map_impl(size_t item_size, std::vector<size_t> in_vlens,
diff --git a/gr-blocks/lib/wavfile_sink_impl.cc b/gr-blocks/lib/wavfile_sink_impl.cc
index f8b09a114b..4591b1f9fa 100644
--- a/gr-blocks/lib/wavfile_sink_impl.cc
+++ b/gr-blocks/lib/wavfile_sink_impl.cc
@@ -32,7 +32,7 @@
#include <cstring>
#include <cmath>
#include <fcntl.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
#include <boost/math/special_functions/round.hpp>
// win32 (mingw/msvc) specific
@@ -106,7 +106,7 @@ namespace gr {
bool
wavfile_sink_impl::open(const char* filename)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
// we use the open system call to get access to the O_LARGEFILE flag.
int fd;
@@ -143,7 +143,7 @@ namespace gr {
void
wavfile_sink_impl::close()
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
if(!d_fp)
return;
@@ -183,7 +183,7 @@ namespace gr {
int nwritten;
- gruel::scoped_lock guard(d_mutex); // hold mutex for duration of this block
+ gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this block
do_update(); // update: d_fp is reqd
if(!d_fp) // drop output on the floor
return noutput_items;
@@ -232,7 +232,7 @@ namespace gr {
void
wavfile_sink_impl::set_bits_per_sample(int bits_per_sample)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
if(bits_per_sample == 8 || bits_per_sample == 16) {
d_bytes_per_sample_new = bits_per_sample / 8;
}
@@ -241,7 +241,7 @@ namespace gr {
void
wavfile_sink_impl::set_sample_rate(unsigned int sample_rate)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
d_sample_rate = sample_rate;
}
diff --git a/gr-blocks/python/parse_file_metadata.py b/gr-blocks/python/parse_file_metadata.py
index eaa8025bbf..a876f49b07 100644
--- a/gr-blocks/python/parse_file_metadata.py
+++ b/gr-blocks/python/parse_file_metadata.py
@@ -22,12 +22,7 @@
import sys
from gnuradio import gr
-
-try:
- import pmt
-except ImportError:
- from gruel import pmt
-
+import pmt
try:
import blocks_swig as blocks
diff --git a/gr-blocks/python/qa_python_message_passing.py b/gr-blocks/python/qa_python_message_passing.py
index f199d5470f..58bf9e59bd 100644
--- a/gr-blocks/python/qa_python_message_passing.py
+++ b/gr-blocks/python/qa_python_message_passing.py
@@ -21,8 +21,7 @@
#
from gnuradio import gr, gr_unittest
-try: import pmt
-except: from gruel import pmt
+import pmt
import numpy
import time
import blocks_swig as blocks
diff --git a/gr-blocks/swig/CMakeLists.txt b/gr-blocks/swig/CMakeLists.txt
index 94495688d8..42def5d4d3 100644
--- a/gr-blocks/swig/CMakeLists.txt
+++ b/gr-blocks/swig/CMakeLists.txt
@@ -28,7 +28,6 @@ set(GR_SWIG_INCLUDE_DIRS
${GR_BLOCKS_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-blocks/tests/CMakeLists.txt b/gr-blocks/tests/CMakeLists.txt
index 0e7feec1b2..8f2b28edfa 100644
--- a/gr-blocks/tests/CMakeLists.txt
+++ b/gr-blocks/tests/CMakeLists.txt
@@ -27,7 +27,6 @@ GR_CHECK_HDR_N_DEF(sys/resource.h HAVE_SYS_RESOURCE_H)
include_directories(
${GR_BLOCKS_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${CPPUNIT_INCLUDE_DIRS}
)
diff --git a/gr-channels/CMakeLists.txt b/gr-channels/CMakeLists.txt
index 666a837d10..225a297f25 100644
--- a/gr-channels/CMakeLists.txt
+++ b/gr-channels/CMakeLists.txt
@@ -28,7 +28,6 @@ include(GrBoost)
include(GrComponent)
GR_REGISTER_COMPONENT("gr-channels" ENABLE_GR_CHANNELS
- ENABLE_GRUEL
ENABLE_VOLK
Boost_FOUND
ENABLE_GNURADIO_RUNTIME
diff --git a/gr-channels/include/channels/api.h b/gr-channels/include/channels/api.h
index 41e65ca7cd..808336b042 100644
--- a/gr-channels/include/channels/api.h
+++ b/gr-channels/include/channels/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_CHANNELS_API_H
#define INCLUDED_CHANNELS_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_channels_EXPORTS
# define CHANNELS_API __GR_ATTR_EXPORT
diff --git a/gr-channels/lib/CMakeLists.txt b/gr-channels/lib/CMakeLists.txt
index 30ff3ebdd2..bd0151143d 100644
--- a/gr-channels/lib/CMakeLists.txt
+++ b/gr-channels/lib/CMakeLists.txt
@@ -28,7 +28,6 @@ include_directories(
${GR_FILTER_INCLUDE_DIRS}
${GR_ANALOG_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-channels/swig/CMakeLists.txt b/gr-channels/swig/CMakeLists.txt
index c1bd4bb9f8..9c47b71f58 100644
--- a/gr-channels/swig/CMakeLists.txt
+++ b/gr-channels/swig/CMakeLists.txt
@@ -27,7 +27,6 @@ set(GR_SWIG_INCLUDE_DIRS
${GR_CHANNELS_INCLUDE_DIRS}
${GR_FILTER_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-comedi/include/comedi/api.h b/gr-comedi/include/comedi/api.h
index c9f9fbcae4..54aa18f317 100644
--- a/gr-comedi/include/comedi/api.h
+++ b/gr-comedi/include/comedi/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_COMEDI_API_H
#define INCLUDED_COMEDI_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_comedi_EXPORTS
# define COMEDI_API __GR_ATTR_EXPORT
diff --git a/gr-comedi/lib/CMakeLists.txt b/gr-comedi/lib/CMakeLists.txt
index 0179c8f537..57b4df11a4 100644
--- a/gr-comedi/lib/CMakeLists.txt
+++ b/gr-comedi/lib/CMakeLists.txt
@@ -23,7 +23,6 @@
include_directories(
${GR_COMEDI_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${LOG4CXX_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${COMEDI_INCLUDE_DIRS}
diff --git a/gr-comedi/src/CMakeLists.txt b/gr-comedi/src/CMakeLists.txt
index 4895c622a9..cc1e5a439d 100644
--- a/gr-comedi/src/CMakeLists.txt
+++ b/gr-comedi/src/CMakeLists.txt
@@ -23,7 +23,6 @@
include_directories(
${GR_COMEDI_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${COMEDI_INCLUDE_DIRS}
)
diff --git a/gr-comedi/swig/CMakeLists.txt b/gr-comedi/swig/CMakeLists.txt
index 5e7cc15229..7b490cb740 100644
--- a/gr-comedi/swig/CMakeLists.txt
+++ b/gr-comedi/swig/CMakeLists.txt
@@ -26,7 +26,6 @@ include(GrSwig)
set(GR_SWIG_INCLUDE_DIRS
${GR_COMEDI_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-digital/include/digital/api.h b/gr-digital/include/digital/api.h
index d45ace13f2..815f7b6627 100644
--- a/gr-digital/include/digital/api.h
+++ b/gr-digital/include/digital/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_DIGITAL_API_H
#define INCLUDED_DIGITAL_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_digital_EXPORTS
# define DIGITAL_API __GR_ATTR_EXPORT
diff --git a/gr-digital/lib/CMakeLists.txt b/gr-digital/lib/CMakeLists.txt
index faa10c6b65..a17c91a85a 100644
--- a/gr-digital/lib/CMakeLists.txt
+++ b/gr-digital/lib/CMakeLists.txt
@@ -29,7 +29,6 @@ include_directories(
${GR_BLOCKS_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
${VOLK_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${LOG4CPP_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-digital/lib/constellation_receiver_cb_impl.h b/gr-digital/lib/constellation_receiver_cb_impl.h
index 763dabfde2..7c34518340 100644
--- a/gr-digital/lib/constellation_receiver_cb_impl.h
+++ b/gr-digital/lib/constellation_receiver_cb_impl.h
@@ -24,7 +24,7 @@
#define INCLUDED_DIGITAL_CONSTELLATION_RECEIVER_CB_IMPL_H
#include <digital/constellation_receiver_cb.h>
-#include <gruel/attributes.h>
+#include <attributes.h>
#include <gr_complex.h>
#include <blocks/control_loop.h>
diff --git a/gr-digital/lib/map_bb_impl.cc b/gr-digital/lib/map_bb_impl.cc
index 3a06394ec4..4ea91835a9 100644
--- a/gr-digital/lib/map_bb_impl.cc
+++ b/gr-digital/lib/map_bb_impl.cc
@@ -51,7 +51,7 @@ namespace gr {
void
map_bb_impl::set_map(const std::vector<int> &map)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
for(int i = 0; i < 0x100; i++)
d_map[i] = i;
@@ -75,7 +75,7 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
const unsigned char *in = (const unsigned char*)input_items[0];
unsigned char *out = (unsigned char*)output_items[0];
diff --git a/gr-digital/lib/map_bb_impl.h b/gr-digital/lib/map_bb_impl.h
index bce2b9b1b3..59f1e834b7 100644
--- a/gr-digital/lib/map_bb_impl.h
+++ b/gr-digital/lib/map_bb_impl.h
@@ -24,7 +24,7 @@
#define INCLUDED_GR_MAP_BB_IMPL_H
#include <digital/map_bb.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
namespace gr {
namespace digital {
@@ -33,7 +33,7 @@ namespace gr {
{
private:
unsigned char d_map[0x100];
- gruel::mutex d_mutex;
+ gr::thread::mutex d_mutex;
public:
map_bb_impl(const std::vector<int> &map);
diff --git a/gr-digital/lib/mpsk_receiver_cc_impl.h b/gr-digital/lib/mpsk_receiver_cc_impl.h
index 099dd424a3..ed53d0f2e4 100644
--- a/gr-digital/lib/mpsk_receiver_cc_impl.h
+++ b/gr-digital/lib/mpsk_receiver_cc_impl.h
@@ -24,7 +24,7 @@
#define INCLUDED_DIGITAL_MPSK_RECEIVER_CC_IMPL_H
#include <digital/mpsk_receiver_cc.h>
-#include <gruel/attributes.h>
+#include <attributes.h>
#include <blocks/control_loop.h>
#include <gr_complex.h>
#include <fstream>
diff --git a/gr-digital/python/qa_crc32_bb.py b/gr-digital/python/qa_crc32_bb.py
index 6ee7ca1bcf..6f5249ca08 100755
--- a/gr-digital/python/qa_crc32_bb.py
+++ b/gr-digital/python/qa_crc32_bb.py
@@ -22,8 +22,7 @@
from gnuradio import gr, gr_unittest
import blocks_swig as blocks
import digital_swig as digital
-try: import pmt
-except: from gruel import pmt
+import pmt
class qa_crc32_bb (gr_unittest.TestCase):
diff --git a/gr-digital/python/qa_header_payload_demux.py b/gr-digital/python/qa_header_payload_demux.py
index 7595409ef8..222b457021 100755
--- a/gr-digital/python/qa_header_payload_demux.py
+++ b/gr-digital/python/qa_header_payload_demux.py
@@ -20,8 +20,7 @@
#
from gnuradio import gr, gr_unittest
-try: import pmt
-except: from gruel import pmt
+import pmt
import digital_swig as digital
import blocks_swig as blocks
import time
diff --git a/gr-digital/python/qa_ofdm_carrier_allocator_cvc.py b/gr-digital/python/qa_ofdm_carrier_allocator_cvc.py
index e1f017ba9e..f5c72fb87e 100755
--- a/gr-digital/python/qa_ofdm_carrier_allocator_cvc.py
+++ b/gr-digital/python/qa_ofdm_carrier_allocator_cvc.py
@@ -20,8 +20,7 @@
#
from gnuradio import gr, gr_unittest
-try: import pmt
-except: from gruel import pmt
+import pmt
import digital_swig as digital
import blocks_swig as blocks
diff --git a/gr-digital/python/qa_ofdm_chanest_vcvc.py b/gr-digital/python/qa_ofdm_chanest_vcvc.py
index c45e39988b..a08ef20846 100755
--- a/gr-digital/python/qa_ofdm_chanest_vcvc.py
+++ b/gr-digital/python/qa_ofdm_chanest_vcvc.py
@@ -20,8 +20,7 @@
#
from gnuradio import gr, gr_unittest
-try: import pmt
-except: from gruel import pmt
+import pmt
import blocks_swig as blocks
import analog_swig as analog
import digital_swig as digital
diff --git a/gr-digital/python/qa_ofdm_cyclic_prefixer.py b/gr-digital/python/qa_ofdm_cyclic_prefixer.py
index 355742ab07..0469b3f970 100755
--- a/gr-digital/python/qa_ofdm_cyclic_prefixer.py
+++ b/gr-digital/python/qa_ofdm_cyclic_prefixer.py
@@ -21,8 +21,7 @@
#
from gnuradio import gr, gr_unittest
-try: import pmt
-except: from gruel import pmt
+import pmt
import digital_swig as digital
import blocks_swig as blocks
diff --git a/gr-digital/python/qa_ofdm_frame_equalizer_vcvc.py b/gr-digital/python/qa_ofdm_frame_equalizer_vcvc.py
index 6df9ecbecf..5a34791650 100755
--- a/gr-digital/python/qa_ofdm_frame_equalizer_vcvc.py
+++ b/gr-digital/python/qa_ofdm_frame_equalizer_vcvc.py
@@ -21,8 +21,7 @@
import numpy
from gnuradio import gr, gr_unittest
-try: import pmt
-except: from gruel import pmt
+import pmt
import digital_swig as digital
import blocks_swig as blocks
diff --git a/gr-digital/python/qa_ofdm_serializer_vcc.py b/gr-digital/python/qa_ofdm_serializer_vcc.py
index a5dee78558..0ce6f01348 100755
--- a/gr-digital/python/qa_ofdm_serializer_vcc.py
+++ b/gr-digital/python/qa_ofdm_serializer_vcc.py
@@ -25,8 +25,7 @@ import blocks_swig as blocks
import fft_swig as fft
import analog_swig as analog
import digital_swig as digital
-try: import pmt
-except: from gruel import pmt
+import pmt
import numpy
class qa_ofdm_serializer_vcc (gr_unittest.TestCase):
diff --git a/gr-digital/python/qa_packet_headergenerator_bb.py b/gr-digital/python/qa_packet_headergenerator_bb.py
index 0f42c33a51..bb0cfef9f4 100755
--- a/gr-digital/python/qa_packet_headergenerator_bb.py
+++ b/gr-digital/python/qa_packet_headergenerator_bb.py
@@ -22,8 +22,7 @@
from gnuradio import gr, gr_unittest
import digital_swig as digital
import blocks_swig as blocks
-try: import pmt
-except: from gruel import pmt
+import pmt
class qa_packet_headergenerator_bb (gr_unittest.TestCase):
diff --git a/gr-digital/python/qa_packet_headerparser_b.py b/gr-digital/python/qa_packet_headerparser_b.py
index da7aef69d3..3c8cd67335 100755
--- a/gr-digital/python/qa_packet_headerparser_b.py
+++ b/gr-digital/python/qa_packet_headerparser_b.py
@@ -21,8 +21,7 @@
import time
from gnuradio import gr, gr_unittest
-try: import pmt
-except: from gruel import pmt
+import pmt
import blocks_swig as blocks
import digital_swig as digital
diff --git a/gr-digital/python/utils/tagged_streams.py b/gr-digital/python/utils/tagged_streams.py
index 6a956aa642..f2a58ffe1e 100644
--- a/gr-digital/python/utils/tagged_streams.py
+++ b/gr-digital/python/utils/tagged_streams.py
@@ -1,6 +1,27 @@
+#!/usr/bin/env python
+#
+# Copyright 2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
from gnuradio import gr
-try: import pmt
-except: from gruel import pmt
+import pmt
def make_lengthtags(lengths, offsets, tagname='length', vlen=1):
tags = []
diff --git a/gr-digital/swig/CMakeLists.txt b/gr-digital/swig/CMakeLists.txt
index 6f49298209..56da713b7f 100644
--- a/gr-digital/swig/CMakeLists.txt
+++ b/gr-digital/swig/CMakeLists.txt
@@ -30,7 +30,6 @@ set(GR_SWIG_INCLUDE_DIRS
${GR_FFT_INCLUDE_DIRS}
${GR_FILTER_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-fcd/examples/c++/CMakeLists.txt b/gr-fcd/examples/c++/CMakeLists.txt
index ff2c3d8bb2..346e95db3f 100644
--- a/gr-fcd/examples/c++/CMakeLists.txt
+++ b/gr-fcd/examples/c++/CMakeLists.txt
@@ -23,7 +23,6 @@ include_directories(
${GR_ANALOG_INCLUDE_DIRS}
${GR_AUDIO_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-fcd/include/fcd/fcd_api.h b/gr-fcd/include/fcd/fcd_api.h
index e1452b8afc..9b8a16639a 100644
--- a/gr-fcd/include/fcd/fcd_api.h
+++ b/gr-fcd/include/fcd/fcd_api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_FCD_API_H
#define INCLUDED_FCD_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_fcd_EXPORTS
# define FCD_API __GR_ATTR_EXPORT
diff --git a/gr-fcd/lib/CMakeLists.txt b/gr-fcd/lib/CMakeLists.txt
index f12842d6b8..151bb401a8 100644
--- a/gr-fcd/lib/CMakeLists.txt
+++ b/gr-fcd/lib/CMakeLists.txt
@@ -30,7 +30,6 @@ include_directories(
${GR_AUDIO_INCLUDE_DIRS}
${GR_BLOCKS_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${LIBUSB_INCLUDE_DIR}
)
diff --git a/gr-fcd/lib/fcd_source_c_impl.cc b/gr-fcd/lib/fcd_source_c_impl.cc
index 350ba9e544..eb61183115 100644
--- a/gr-fcd/lib/fcd_source_c_impl.cc
+++ b/gr-fcd/lib/fcd_source_c_impl.cc
@@ -27,7 +27,7 @@
#include <fcdhidcmd.h> // needed for extended API
#include <gr_io_signature.h>
#include <blocks/float_to_complex.h>
-#include <gruel/attributes.h>
+#include <attributes.h>
//#include <iostream>
//using namespace std;
diff --git a/gr-fcd/swig/CMakeLists.txt b/gr-fcd/swig/CMakeLists.txt
index 370a82bef2..af2152eca9 100644
--- a/gr-fcd/swig/CMakeLists.txt
+++ b/gr-fcd/swig/CMakeLists.txt
@@ -29,7 +29,6 @@ set(GR_SWIG_INCLUDE_DIRS
${GR_FCD_INCLUDE_DIRS}
${GR_AUDIO_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-fec/CMakeLists.txt b/gr-fec/CMakeLists.txt
index a63cf9cd14..171802610a 100644
--- a/gr-fec/CMakeLists.txt
+++ b/gr-fec/CMakeLists.txt
@@ -29,7 +29,6 @@ include(GrComponent)
GR_REGISTER_COMPONENT("gr-fec" ENABLE_GR_FEC
Boost_FOUND
- ENABLE_GRUEL
ENABLE_GNURADIO_RUNTIME
ENABLE_GR_BLOCKS
)
diff --git a/gr-fec/include/fec/api.h b/gr-fec/include/fec/api.h
index e6d8ca5e99..62c0fd98de 100644
--- a/gr-fec/include/fec/api.h
+++ b/gr-fec/include/fec/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_FEC_API_H
#define INCLUDED_FEC_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_fec_EXPORTS
# define FEC_API __GR_ATTR_EXPORT
diff --git a/gr-fec/lib/CMakeLists.txt b/gr-fec/lib/CMakeLists.txt
index d6c273aa9f..29eb36bd1c 100644
--- a/gr-fec/lib/CMakeLists.txt
+++ b/gr-fec/lib/CMakeLists.txt
@@ -30,7 +30,6 @@ include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${GR_FEC_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-fec/swig/CMakeLists.txt b/gr-fec/swig/CMakeLists.txt
index e071386237..9e80e74267 100644
--- a/gr-fec/swig/CMakeLists.txt
+++ b/gr-fec/swig/CMakeLists.txt
@@ -27,7 +27,6 @@ set(GR_SWIG_INCLUDE_DIRS
${CMAKE_CURRENT_BINARY_DIR}/../include
${GR_FEC_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-fft/CMakeLists.txt b/gr-fft/CMakeLists.txt
index 9133303d9b..37c0294cbf 100644
--- a/gr-fft/CMakeLists.txt
+++ b/gr-fft/CMakeLists.txt
@@ -30,7 +30,6 @@ find_package(FFTW3f)
include(GrComponent)
GR_REGISTER_COMPONENT("gr-fft" ENABLE_GR_FFT
- ENABLE_GRUEL
ENABLE_VOLK
Boost_FOUND
ENABLE_GNURADIO_RUNTIME
diff --git a/gr-fft/include/fft/api.h b/gr-fft/include/fft/api.h
index eef4563738..a569ceb265 100644
--- a/gr-fft/include/fft/api.h
+++ b/gr-fft/include/fft/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_FFT_API_H
#define INCLUDED_FFT_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_fft_EXPORTS
# define FFT_API __GR_ATTR_EXPORT
diff --git a/gr-fft/lib/CMakeLists.txt b/gr-fft/lib/CMakeLists.txt
index 6c0c18eaa0..20fb338465 100644
--- a/gr-fft/lib/CMakeLists.txt
+++ b/gr-fft/lib/CMakeLists.txt
@@ -25,7 +25,6 @@ include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${GR_FFT_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${FFTW3F_INCLUDE_DIRS}
)
diff --git a/gr-fft/swig/CMakeLists.txt b/gr-fft/swig/CMakeLists.txt
index 2545edece4..dae7abb6df 100644
--- a/gr-fft/swig/CMakeLists.txt
+++ b/gr-fft/swig/CMakeLists.txt
@@ -26,7 +26,6 @@ include(GrSwig)
set(GR_SWIG_INCLUDE_DIRS
${GR_FFT_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${FFTW3F_INCLUDE_DIRS}
)
diff --git a/gr-filter/CMakeLists.txt b/gr-filter/CMakeLists.txt
index 2b83542e6f..0aeb2bbbb6 100644
--- a/gr-filter/CMakeLists.txt
+++ b/gr-filter/CMakeLists.txt
@@ -28,7 +28,6 @@ include(GrBoost)
include(GrComponent)
GR_REGISTER_COMPONENT("gr-filter" ENABLE_GR_FILTER
- ENABLE_GRUEL
ENABLE_VOLK
Boost_FOUND
ENABLE_GNURADIO_RUNTIME
diff --git a/gr-filter/include/filter/api.h b/gr-filter/include/filter/api.h
index 025b0bd4a7..97f2d537a0 100644
--- a/gr-filter/include/filter/api.h
+++ b/gr-filter/include/filter/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_FILTER_API_H
#define INCLUDED_FILTER_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_filter_EXPORTS
# define FILTER_API __GR_ATTR_EXPORT
diff --git a/gr-filter/lib/CMakeLists.txt b/gr-filter/lib/CMakeLists.txt
index 2a32debd9a..c4d247785f 100644
--- a/gr-filter/lib/CMakeLists.txt
+++ b/gr-filter/lib/CMakeLists.txt
@@ -97,7 +97,6 @@ include_directories(
${GR_BLOCKS_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
${VOLK_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${LOG4CPP_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-filter/lib/fir_filter_XXX_impl.cc.t b/gr-filter/lib/fir_filter_XXX_impl.cc.t
index 319c267270..e48afe95f2 100644
--- a/gr-filter/lib/fir_filter_XXX_impl.cc.t
+++ b/gr-filter/lib/fir_filter_XXX_impl.cc.t
@@ -64,7 +64,7 @@ namespace gr {
void
@IMPL_NAME@::set_taps(const std::vector<@TAP_TYPE@> &taps)
{
- gruel::scoped_lock l(d_setlock);
+ gr::thread::scoped_lock l(d_setlock);
d_fir->set_taps(taps);
d_updated = true;
}
@@ -80,7 +80,7 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- gruel::scoped_lock l(d_setlock);
+ gr::thread::scoped_lock l(d_setlock);
const @I_TYPE@ *in = (const @I_TYPE@*)input_items[0];
@O_TYPE@ *out = (@O_TYPE@*)output_items[0];
diff --git a/gr-filter/lib/pfb_arb_resampler_ccf_impl.cc b/gr-filter/lib/pfb_arb_resampler_ccf_impl.cc
index 5480366de2..71507a5aa5 100644
--- a/gr-filter/lib/pfb_arb_resampler_ccf_impl.cc
+++ b/gr-filter/lib/pfb_arb_resampler_ccf_impl.cc
@@ -140,7 +140,7 @@ namespace gr {
void
pfb_arb_resampler_ccf_impl::set_taps(const std::vector<float> &taps)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
std::vector<float> dtaps;
create_diff_taps(taps, dtaps);
@@ -172,7 +172,7 @@ namespace gr {
void
pfb_arb_resampler_ccf_impl::set_rate(float rate)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
d_dec_rate = (unsigned int)floor(d_int_rate/rate);
d_flt_rate = (d_int_rate/rate) - d_dec_rate;
@@ -182,7 +182,7 @@ namespace gr {
void
pfb_arb_resampler_ccf_impl::set_phase(float ph)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
if((ph < 0) || (ph >= 2.0*M_PI)) {
throw std::runtime_error("pfb_arb_resampler_ccf: set_phase value out of bounds [0, 2pi).\n");
}
@@ -204,7 +204,7 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
gr_complex *in = (gr_complex*)input_items[0];
gr_complex *out = (gr_complex*)output_items[0];
diff --git a/gr-filter/lib/pfb_arb_resampler_ccf_impl.h b/gr-filter/lib/pfb_arb_resampler_ccf_impl.h
index 891e601e09..71f8957421 100644
--- a/gr-filter/lib/pfb_arb_resampler_ccf_impl.h
+++ b/gr-filter/lib/pfb_arb_resampler_ccf_impl.h
@@ -26,7 +26,7 @@
#include <filter/pfb_arb_resampler_ccf.h>
#include <filter/fir_filter.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
namespace gr {
namespace filter {
@@ -46,7 +46,7 @@ namespace gr {
int d_start_index;
unsigned int d_taps_per_filter;
bool d_updated;
- gruel::mutex d_mutex; // mutex to protect set/work access
+ gr::thread::mutex d_mutex; // mutex to protect set/work access
void create_diff_taps(const std::vector<float> &newtaps,
std::vector<float> &difftaps);
diff --git a/gr-filter/lib/pfb_arb_resampler_fff_impl.cc b/gr-filter/lib/pfb_arb_resampler_fff_impl.cc
index 6aff374fdd..2a60c1e2e2 100644
--- a/gr-filter/lib/pfb_arb_resampler_fff_impl.cc
+++ b/gr-filter/lib/pfb_arb_resampler_fff_impl.cc
@@ -147,7 +147,7 @@ namespace gr {
void
pfb_arb_resampler_fff_impl::set_taps(const std::vector<float> &taps)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
}
std::vector<std::vector<float> >
@@ -172,7 +172,7 @@ namespace gr {
void
pfb_arb_resampler_fff_impl::set_rate(float rate)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
d_dec_rate = (unsigned int)floor(d_int_rate/rate);
d_flt_rate = (d_int_rate/rate) - d_dec_rate;
@@ -182,7 +182,7 @@ namespace gr {
void
pfb_arb_resampler_fff_impl::set_phase(float ph)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
if((ph < 0) || (ph >= 2.0*M_PI)) {
throw std::runtime_error("pfb_arb_resampler_ccf: set_phase value out of bounds [0, 2pi).\n");
}
@@ -204,7 +204,7 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
float *in = (float*)input_items[0];
float *out = (float*)output_items[0];
diff --git a/gr-filter/lib/pfb_arb_resampler_fff_impl.h b/gr-filter/lib/pfb_arb_resampler_fff_impl.h
index 5889627114..fb871d4d44 100644
--- a/gr-filter/lib/pfb_arb_resampler_fff_impl.h
+++ b/gr-filter/lib/pfb_arb_resampler_fff_impl.h
@@ -26,7 +26,7 @@
#include <filter/pfb_arb_resampler_fff.h>
#include <filter/fir_filter.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
namespace gr {
namespace filter {
@@ -46,7 +46,7 @@ namespace gr {
int d_start_index;
unsigned int d_taps_per_filter;
bool d_updated;
- gruel::mutex d_mutex; // mutex to protect set/work access
+ gr::thread::mutex d_mutex; // mutex to protect set/work access
void create_diff_taps(const std::vector<float> &newtaps,
std::vector<float> &difftaps);
diff --git a/gr-filter/lib/pfb_channelizer_ccf_impl.cc b/gr-filter/lib/pfb_channelizer_ccf_impl.cc
index 28fc1dcc10..53d5375bec 100644
--- a/gr-filter/lib/pfb_channelizer_ccf_impl.cc
+++ b/gr-filter/lib/pfb_channelizer_ccf_impl.cc
@@ -92,7 +92,7 @@ namespace gr {
void
pfb_channelizer_ccf_impl::set_taps(const std::vector<float> &taps)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
polyphase_filterbank::set_taps(taps);
set_history(d_taps_per_filter+1);
@@ -114,7 +114,7 @@ namespace gr {
void
pfb_channelizer_ccf_impl::set_channel_map(const std::vector<int> &map)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
if(map.size() > 0) {
unsigned int max = (unsigned int)*std::max_element(map.begin(), map.end());
@@ -137,7 +137,7 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
gr_complex *in = (gr_complex *) input_items[0];
gr_complex *out = (gr_complex *) output_items[0];
diff --git a/gr-filter/lib/pfb_channelizer_ccf_impl.h b/gr-filter/lib/pfb_channelizer_ccf_impl.h
index 16b112b9a0..56f1103ca5 100644
--- a/gr-filter/lib/pfb_channelizer_ccf_impl.h
+++ b/gr-filter/lib/pfb_channelizer_ccf_impl.h
@@ -27,7 +27,7 @@
#include <filter/polyphase_filterbank.h>
#include <filter/fir_filter.h>
#include <fft/fft.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
namespace gr {
namespace filter {
@@ -41,7 +41,7 @@ namespace gr {
int d_rate_ratio;
int d_output_multiple;
std::vector<int> d_channel_map;
- gruel::mutex d_mutex; // mutex to protect set/work access
+ gr::thread::mutex d_mutex; // mutex to protect set/work access
public:
pfb_channelizer_ccf_impl(unsigned int nfilts,
diff --git a/gr-filter/lib/pfb_decimator_ccf_impl.cc b/gr-filter/lib/pfb_decimator_ccf_impl.cc
index f9a60cb28d..52c459f784 100644
--- a/gr-filter/lib/pfb_decimator_ccf_impl.cc
+++ b/gr-filter/lib/pfb_decimator_ccf_impl.cc
@@ -63,7 +63,7 @@ namespace gr {
void
pfb_decimator_ccf_impl::set_taps(const std::vector<float> &taps)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
polyphase_filterbank::set_taps(taps);
set_history(d_taps_per_filter+1);
@@ -89,7 +89,7 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
gr_complex *in;
gr_complex *out = (gr_complex *)output_items[0];
diff --git a/gr-filter/lib/pfb_decimator_ccf_impl.h b/gr-filter/lib/pfb_decimator_ccf_impl.h
index c4338a5eca..31b9910418 100644
--- a/gr-filter/lib/pfb_decimator_ccf_impl.h
+++ b/gr-filter/lib/pfb_decimator_ccf_impl.h
@@ -28,7 +28,7 @@
#include <filter/polyphase_filterbank.h>
#include <filter/fir_filter.h>
#include <fft/fft.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
namespace gr {
namespace filter {
@@ -40,7 +40,7 @@ namespace gr {
unsigned int d_rate;
unsigned int d_chan;
gr_complex *d_rotator;
- gruel::mutex d_mutex; // mutex to protect set/work access
+ gr::thread::mutex d_mutex; // mutex to protect set/work access
public:
pfb_decimator_ccf_impl(unsigned int decim,
diff --git a/gr-filter/lib/pfb_interpolator_ccf_impl.cc b/gr-filter/lib/pfb_interpolator_ccf_impl.cc
index 572db728b3..042238ff48 100644
--- a/gr-filter/lib/pfb_interpolator_ccf_impl.cc
+++ b/gr-filter/lib/pfb_interpolator_ccf_impl.cc
@@ -58,7 +58,7 @@ namespace gr {
void
pfb_interpolator_ccf_impl::set_taps(const std::vector<float> &taps)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
polyphase_filterbank::set_taps(taps);
set_history(d_taps_per_filter+1);
diff --git a/gr-filter/lib/pfb_interpolator_ccf_impl.h b/gr-filter/lib/pfb_interpolator_ccf_impl.h
index 7e1fe2ca11..fb54501b1a 100644
--- a/gr-filter/lib/pfb_interpolator_ccf_impl.h
+++ b/gr-filter/lib/pfb_interpolator_ccf_impl.h
@@ -28,7 +28,7 @@
#include <filter/polyphase_filterbank.h>
#include <filter/fir_filter.h>
#include <fft/fft.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
namespace gr {
namespace filter {
@@ -38,7 +38,7 @@ namespace gr {
private:
bool d_updated;
unsigned int d_rate;
- gruel::mutex d_mutex; // mutex to protect set/work access
+ gr::thread::mutex d_mutex; // mutex to protect set/work access
public:
pfb_interpolator_ccf_impl(unsigned int interp,
diff --git a/gr-filter/lib/pfb_synthesizer_ccf_impl.cc b/gr-filter/lib/pfb_synthesizer_ccf_impl.cc
index f89b48b125..0968bbc6c3 100644
--- a/gr-filter/lib/pfb_synthesizer_ccf_impl.cc
+++ b/gr-filter/lib/pfb_synthesizer_ccf_impl.cc
@@ -86,7 +86,7 @@ namespace gr {
void
pfb_synthesizer_ccf_impl::set_taps(const std::vector<float> &taps)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
if(d_twox == 1)
set_taps1(taps);
@@ -201,7 +201,7 @@ namespace gr {
void
pfb_synthesizer_ccf_impl::set_channel_map(const std::vector<int> &map)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
if(map.size() > 0) {
unsigned int max = (unsigned int)*std::max_element(map.begin(), map.end());
@@ -226,7 +226,7 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- gruel::scoped_lock guard(d_mutex);
+ gr::thread::scoped_lock guard(d_mutex);
gr_complex *in = (gr_complex*)input_items[0];
gr_complex *out = (gr_complex*)output_items[0];
diff --git a/gr-filter/lib/pfb_synthesizer_ccf_impl.h b/gr-filter/lib/pfb_synthesizer_ccf_impl.h
index adffc143f2..b443773de3 100644
--- a/gr-filter/lib/pfb_synthesizer_ccf_impl.h
+++ b/gr-filter/lib/pfb_synthesizer_ccf_impl.h
@@ -27,7 +27,7 @@
#include <filter/pfb_synthesizer_ccf.h>
#include <filter/fir_filter_with_buffer.h>
#include <fft/fft.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
namespace gr {
namespace filter {
@@ -48,7 +48,7 @@ namespace gr {
int d_state;
std::vector<int> d_channel_map;
unsigned int d_twox;
- gruel::mutex d_mutex; // mutex to protect set/work access
+ gr::thread::mutex d_mutex; // mutex to protect set/work access
/*!
* \brief Tap setting algorithm for critically sampled channels
diff --git a/gr-filter/lib/qa_filter.h b/gr-filter/lib/qa_filter.h
index 427e7f9f6a..d3bc0adecb 100644
--- a/gr-filter/lib/qa_filter.h
+++ b/gr-filter/lib/qa_filter.h
@@ -23,7 +23,7 @@
#ifndef _QA_GR_FILTER_H_
#define _QA_GR_FILTER_H_
-#include <gruel/attributes.h>
+#include <attributes.h>
#include <cppunit/TestSuite.h>
//! collect all the tests for the gr-filter directory
diff --git a/gr-filter/swig/CMakeLists.txt b/gr-filter/swig/CMakeLists.txt
index 5656c07877..d2be62e767 100644
--- a/gr-filter/swig/CMakeLists.txt
+++ b/gr-filter/swig/CMakeLists.txt
@@ -27,7 +27,6 @@ set(GR_SWIG_INCLUDE_DIRS
${GR_FILTER_INCLUDE_DIRS}
${GR_FFT_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${FFTW3F_INCLUDE_DIRS}
)
diff --git a/gr-noaa/include/noaa/api.h b/gr-noaa/include/noaa/api.h
index d3c3fbf2d0..86bc8eb077 100644
--- a/gr-noaa/include/noaa/api.h
+++ b/gr-noaa/include/noaa/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_NOAA_API_H
#define INCLUDED_NOAA_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_noaa_EXPORTS
# define NOAA_API __GR_ATTR_EXPORT
diff --git a/gr-noaa/lib/CMakeLists.txt b/gr-noaa/lib/CMakeLists.txt
index a5a5cfbb8f..2c69c65675 100644
--- a/gr-noaa/lib/CMakeLists.txt
+++ b/gr-noaa/lib/CMakeLists.txt
@@ -23,7 +23,6 @@
include_directories(
${GR_NOAA_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${LOG4CPP_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-noaa/swig/CMakeLists.txt b/gr-noaa/swig/CMakeLists.txt
index cc471a56c8..18cfc8b4cd 100644
--- a/gr-noaa/swig/CMakeLists.txt
+++ b/gr-noaa/swig/CMakeLists.txt
@@ -26,7 +26,6 @@ include(GrSwig)
set(GR_SWIG_INCLUDE_DIRS
${GR_NOAA_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-pager/include/pager/api.h b/gr-pager/include/pager/api.h
index 4312c5ae38..d14756277f 100644
--- a/gr-pager/include/pager/api.h
+++ b/gr-pager/include/pager/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_PAGER_API_H
#define INCLUDED_PAGER_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_pager_EXPORTS
# define PAGER_API __GR_ATTR_EXPORT
diff --git a/gr-pager/lib/CMakeLists.txt b/gr-pager/lib/CMakeLists.txt
index ca64bf38ef..fa87068478 100644
--- a/gr-pager/lib/CMakeLists.txt
+++ b/gr-pager/lib/CMakeLists.txt
@@ -24,7 +24,6 @@ include_directories(
${GR_PAGER_INCLUDE_DIRS}
${GR_BLOCKS_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-pager/swig/CMakeLists.txt b/gr-pager/swig/CMakeLists.txt
index 5fba4fa19a..db36f0ffc7 100644
--- a/gr-pager/swig/CMakeLists.txt
+++ b/gr-pager/swig/CMakeLists.txt
@@ -26,7 +26,6 @@ include(GrSwig)
set(GR_SWIG_INCLUDE_DIRS
${GR_PAGER_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-qtgui/CMakeLists.txt b/gr-qtgui/CMakeLists.txt
index 046fb3ca19..4457fbf6b9 100644
--- a/gr-qtgui/CMakeLists.txt
+++ b/gr-qtgui/CMakeLists.txt
@@ -46,7 +46,6 @@ GR_REGISTER_COMPONENT("gr-qtgui" ENABLE_GR_QTGUI
Boost_FOUND
QT4_FOUND
QWT_FOUND
- ENABLE_GRUEL
ENABLE_VOLK
ENABLE_GNURADIO_RUNTIME
ENABLE_GR_FFT
diff --git a/gr-qtgui/include/qtgui/SpectrumGUIClass.h b/gr-qtgui/include/qtgui/SpectrumGUIClass.h
index 844c6509d6..48b6a37501 100644
--- a/gr-qtgui/include/qtgui/SpectrumGUIClass.h
+++ b/gr-qtgui/include/qtgui/SpectrumGUIClass.h
@@ -23,7 +23,7 @@
#ifndef SPECTRUM_GUI_CLASS_HPP
#define SPECTRUM_GUI_CLASS_HPP
-#include <gruel/thread.h>
+#include <thread/thread.h>
#include <qwidget.h>
#include <qapplication.h>
#include <qlabel.h>
@@ -66,7 +66,7 @@ public:
const uint64_t, const float*,
const uint64_t, const float*,
const uint64_t,
- const gruel::high_res_timer_type, const bool);
+ const gr::high_res_timer_type, const bool);
float getPowerValue();
void setPowerValue(const float);
@@ -78,8 +78,8 @@ public:
int getFFTSizeIndex();
void setFFTSize(const int);
- gruel::high_res_timer_type getLastGUIUpdateTime();
- void setLastGUIUpdateTime(const gruel::high_res_timer_type);
+ gr::high_res_timer_type getLastGUIUpdateTime();
+ void setLastGUIUpdateTime(const gr::high_res_timer_type);
unsigned int getPendingGUIUpdateEvents();
void incrementPendingGUIUpdateEvents();
@@ -103,7 +103,7 @@ protected:
private:
- gruel::mutex d_mutex;
+ gr::thread::mutex d_mutex;
int64_t _dataPoints;
std::string _title;
double _centerFrequency;
@@ -114,7 +114,7 @@ private:
int _windowType;
int64_t _lastDataPointCount;
int _fftSize;
- gruel::high_res_timer_type _lastGUIUpdateTime;
+ gr::high_res_timer_type _lastGUIUpdateTime;
unsigned int _pendingGUIUpdateEventsCount;
int _droppedEntriesCount;
bool _fftBuffersCreatedFlag;
diff --git a/gr-qtgui/include/qtgui/TimeRasterDisplayPlot.h b/gr-qtgui/include/qtgui/TimeRasterDisplayPlot.h
index c1ea427769..fce22e9df1 100644
--- a/gr-qtgui/include/qtgui/TimeRasterDisplayPlot.h
+++ b/gr-qtgui/include/qtgui/TimeRasterDisplayPlot.h
@@ -30,7 +30,7 @@
#include <qtgui/DisplayPlot.h>
#include <qtgui/timeRasterGlobalData.h>
#include <qtgui/plot_raster.h>
-#include <gruel/high_res_timer.h>
+#include <high_res_timer.h>
#if QWT_VERSION < 0x060000
#include <qtgui/plot_waterfall.h>
diff --git a/gr-qtgui/include/qtgui/WaterfallDisplayPlot.h b/gr-qtgui/include/qtgui/WaterfallDisplayPlot.h
index 6545774325..6659f4f2d6 100644
--- a/gr-qtgui/include/qtgui/WaterfallDisplayPlot.h
+++ b/gr-qtgui/include/qtgui/WaterfallDisplayPlot.h
@@ -29,7 +29,7 @@
#include <qwt_plot_spectrogram.h>
#include <qtgui/DisplayPlot.h>
#include <qtgui/waterfallGlobalData.h>
-#include <gruel/high_res_timer.h>
+#include <high_res_timer.h>
#if QWT_VERSION < 0x060000
#include <qtgui/plot_waterfall.h>
@@ -61,14 +61,14 @@ public:
void plotNewData(const std::vector<double*> dataPoints,
const int64_t numDataPoints,
const double timePerFFT,
- const gruel::high_res_timer_type timestamp,
+ const gr::high_res_timer_type timestamp,
const int droppedFrames);
// to be removed
void plotNewData(const double* dataPoints,
const int64_t numDataPoints,
const double timePerFFT,
- const gruel::high_res_timer_type timestamp,
+ const gr::high_res_timer_type timestamp,
const int droppedFrames);
void setIntensityRange(const double minIntensity, const double maxIntensity);
@@ -111,7 +111,7 @@ private:
std::vector<QwtPlotSpectrogram*> d_spectrogram;
#endif
- gruel::high_res_timer_type _lastReplot;
+ gr::high_res_timer_type _lastReplot;
std::vector<int> _intensityColorMapType;
QColor _userDefinedLowIntensityColor;
diff --git a/gr-qtgui/include/qtgui/api.h b/gr-qtgui/include/qtgui/api.h
index e88948e07b..888dd656c8 100644
--- a/gr-qtgui/include/qtgui/api.h
+++ b/gr-qtgui/include/qtgui/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_QTGUI_API_H
#define INCLUDED_QTGUI_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_qtgui_EXPORTS
# define QTGUI_API __GR_ATTR_EXPORT
diff --git a/gr-qtgui/include/qtgui/qtgui_types.h b/gr-qtgui/include/qtgui/qtgui_types.h
index f4b16dfef2..135350dbb8 100644
--- a/gr-qtgui/include/qtgui/qtgui_types.h
+++ b/gr-qtgui/include/qtgui/qtgui_types.h
@@ -25,7 +25,7 @@
#include <qwt_color_map.h>
#include <qwt_scale_draw.h>
-#include <gruel/high_res_timer.h>
+#include <high_res_timer.h>
class FreqOffsetAndPrecisionClass
{
@@ -80,14 +80,14 @@ public:
{
}
- virtual gruel::high_res_timer_type getZeroTime() const
+ virtual gr::high_res_timer_type getZeroTime() const
{
return _zeroTime;
}
- virtual void setZeroTime(const gruel::high_res_timer_type newTime)
+ virtual void setZeroTime(const gr::high_res_timer_type newTime)
{
- _zeroTime = newTime - gruel::high_res_timer_epoch();
+ _zeroTime = newTime - gr::high_res_timer_epoch();
}
virtual void setSecondsPerLine(const double newTime)
@@ -104,7 +104,7 @@ public:
protected:
private:
- gruel::high_res_timer_type _zeroTime;
+ gr::high_res_timer_type _zeroTime;
double _secondsPerLine;
};
diff --git a/gr-qtgui/include/qtgui/spectrumUpdateEvents.h b/gr-qtgui/include/qtgui/spectrumUpdateEvents.h
index 97d9c90146..df61f7fdb2 100644
--- a/gr-qtgui/include/qtgui/spectrumUpdateEvents.h
+++ b/gr-qtgui/include/qtgui/spectrumUpdateEvents.h
@@ -28,7 +28,7 @@
#include <QString>
#include <complex>
#include <vector>
-#include <gruel/high_res_timer.h>
+#include <high_res_timer.h>
static const int SpectrumUpdateEventType = 10005;
static const int SpectrumWindowCaptionEventType = 10008;
@@ -43,10 +43,10 @@ public:
const double* realTimeDomainPoints,
const double* imagTimeDomainPoints,
const uint64_t numTimeDomainDataPoints,
- const gruel::high_res_timer_type dataTimestamp,
+ const gr::high_res_timer_type dataTimestamp,
const bool repeatDataFlag,
const bool lastOfMultipleUpdateFlag,
- const gruel::high_res_timer_type generatedTimestamp,
+ const gr::high_res_timer_type generatedTimestamp,
const int droppedFFTFrames);
~SpectrumUpdateEvent();
@@ -56,10 +56,10 @@ public:
const double* getImagTimeDomainPoints() const;
uint64_t getNumFFTDataPoints() const;
uint64_t getNumTimeDomainDataPoints() const;
- gruel::high_res_timer_type getDataTimestamp() const;
+ gr::high_res_timer_type getDataTimestamp() const;
bool getRepeatDataFlag() const;
bool getLastOfMultipleUpdateFlag() const;
- gruel::high_res_timer_type getEventGeneratedTimestamp() const;
+ gr::high_res_timer_type getEventGeneratedTimestamp() const;
int getDroppedFFTFrames() const;
protected:
@@ -70,10 +70,10 @@ private:
double* _imagDataTimeDomainPoints;
uint64_t _numFFTDataPoints;
uint64_t _numTimeDomainDataPoints;
- gruel::high_res_timer_type _dataTimestamp;
+ gr::high_res_timer_type _dataTimestamp;
bool _repeatDataFlag;
bool _lastOfMultipleUpdateFlag;
- gruel::high_res_timer_type _eventGeneratedTimestamp;
+ gr::high_res_timer_type _eventGeneratedTimestamp;
int _droppedFFTFrames;
};
@@ -209,7 +209,7 @@ class WaterfallUpdateEvent: public QEvent
public:
WaterfallUpdateEvent(const std::vector<double*> dataPoints,
const uint64_t numDataPoints,
- const gruel::high_res_timer_type dataTimestamp);
+ const gr::high_res_timer_type dataTimestamp);
~WaterfallUpdateEvent();
@@ -218,7 +218,7 @@ public:
uint64_t getNumDataPoints() const;
bool getRepeatDataFlag() const;
- gruel::high_res_timer_type getDataTimestamp() const;
+ gr::high_res_timer_type getDataTimestamp() const;
static QEvent::Type Type()
{ return QEvent::Type(SpectrumUpdateEventType); }
@@ -230,7 +230,7 @@ private:
std::vector<double*> _dataPoints;
uint64_t _numDataPoints;
- gruel::high_res_timer_type _dataTimestamp;
+ gr::high_res_timer_type _dataTimestamp;
};
diff --git a/gr-qtgui/lib/CMakeLists.txt b/gr-qtgui/lib/CMakeLists.txt
index 7c60eb7018..7114c6c390 100644
--- a/gr-qtgui/lib/CMakeLists.txt
+++ b/gr-qtgui/lib/CMakeLists.txt
@@ -105,7 +105,6 @@ include_directories(
${GR_FFT_INCLUDE_DIRS}
${GR_FILTER_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${VOLK_INCLUDE_DIRS}
${QWT_INCLUDE_DIRS}
${QT_INCLUDE_DIRS}
diff --git a/gr-qtgui/lib/SpectrumGUIClass.cc b/gr-qtgui/lib/SpectrumGUIClass.cc
index 328eaa9b6f..020cd8218a 100644
--- a/gr-qtgui/lib/SpectrumGUIClass.cc
+++ b/gr-qtgui/lib/SpectrumGUIClass.cc
@@ -126,7 +126,7 @@ SpectrumGUIClass::openSpectrumWindow(QWidget* parent,
_lastGUIUpdateTime = 0;
// Draw Blank Display
- updateWindow(false, NULL, 0, NULL, 0, NULL, 0, gruel::high_res_timer_now(), true);
+ updateWindow(false, NULL, 0, NULL, 0, NULL, 0, gr::high_res_timer_now(), true);
// Set up the initial frequency axis settings
setFrequencyRange(_centerFrequency, _startFrequency, _stopFrequency);
@@ -164,7 +164,7 @@ SpectrumGUIClass::setDisplayTitle(const std::string newString)
bool
SpectrumGUIClass::getWindowOpenFlag()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
bool returnFlag = false;
returnFlag = _windowOpennedFlag;
return returnFlag;
@@ -174,7 +174,7 @@ SpectrumGUIClass::getWindowOpenFlag()
void
SpectrumGUIClass::setWindowOpenFlag(const bool newFlag)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
_windowOpennedFlag = newFlag;
}
@@ -183,7 +183,7 @@ SpectrumGUIClass::setFrequencyRange(const double centerFreq,
const double startFreq,
const double stopFreq)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
_centerFrequency = centerFreq;
_startFrequency = startFreq;
_stopFrequency = stopFreq;
@@ -196,7 +196,7 @@ SpectrumGUIClass::setFrequencyRange(const double centerFreq,
double
SpectrumGUIClass::getStartFrequency()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
double returnValue = 0.0;
returnValue = _startFrequency;
return returnValue;
@@ -205,7 +205,7 @@ SpectrumGUIClass::getStartFrequency()
double
SpectrumGUIClass::getStopFrequency()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
double returnValue = 0.0;
returnValue = _stopFrequency;
return returnValue;
@@ -214,7 +214,7 @@ SpectrumGUIClass::getStopFrequency()
double
SpectrumGUIClass::getCenterFrequency()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
double returnValue = 0.0;
returnValue = _centerFrequency;
return returnValue;
@@ -229,10 +229,10 @@ SpectrumGUIClass::updateWindow(const bool updateDisplayFlag,
const uint64_t realTimeDomainDataSize,
const float* complexTimeDomainData,
const uint64_t complexTimeDomainDataSize,
- const gruel::high_res_timer_type timestamp,
+ const gr::high_res_timer_type timestamp,
const bool lastOfMultipleFFTUpdateFlag)
{
- //gruel::scoped_lock lock(d_mutex);
+ //gr::thread::scoped_lock lock(d_mutex);
int64_t bufferSize = inputBufferSize;
bool repeatDataFlag = false;
if(bufferSize > _dataPoints){
@@ -279,10 +279,10 @@ SpectrumGUIClass::updateWindow(const bool updateDisplayFlag,
_lastDataPointCount = bufferSize;
}
- const gruel::high_res_timer_type currentTime = gruel::high_res_timer_now();
- const gruel::high_res_timer_type lastUpdateGUITime = getLastGUIUpdateTime();
+ const gr::high_res_timer_type currentTime = gr::high_res_timer_now();
+ const gr::high_res_timer_type lastUpdateGUITime = getLastGUIUpdateTime();
- if((currentTime - lastUpdateGUITime > (4*_updateTime)*gruel::high_res_timer_tps()) &&
+ if((currentTime - lastUpdateGUITime > (4*_updateTime)*gr::high_res_timer_tps()) &&
(getPendingGUIUpdateEvents() > 0) && lastUpdateGUITime != 0) {
// Do not update the display if too much data is pending to be displayed
_droppedEntriesCount++;
@@ -312,7 +312,7 @@ SpectrumGUIClass::updateWindow(const bool updateDisplayFlag,
float
SpectrumGUIClass::getPowerValue()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
float returnValue = 0;
returnValue = _powerValue;
return returnValue;
@@ -321,14 +321,14 @@ SpectrumGUIClass::getPowerValue()
void
SpectrumGUIClass::setPowerValue(const float value)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
_powerValue = value;
}
int
SpectrumGUIClass::getWindowType()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
int returnValue = 0;
returnValue = _windowType;
return returnValue;
@@ -337,7 +337,7 @@ SpectrumGUIClass::getWindowType()
void
SpectrumGUIClass::setWindowType(const int newType)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
_windowType = newType;
}
@@ -352,7 +352,7 @@ SpectrumGUIClass::getFFTSize()
int
SpectrumGUIClass::getFFTSizeIndex()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
int fftsize = getFFTSize();
switch(fftsize) {
case(1024): return 0; break;
@@ -368,30 +368,30 @@ SpectrumGUIClass::getFFTSizeIndex()
void
SpectrumGUIClass::setFFTSize(const int newSize)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
_fftSize = newSize;
}
-gruel::high_res_timer_type
+gr::high_res_timer_type
SpectrumGUIClass::getLastGUIUpdateTime()
{
- gruel::scoped_lock lock(d_mutex);
- gruel::high_res_timer_type returnValue;
+ gr::thread::scoped_lock lock(d_mutex);
+ gr::high_res_timer_type returnValue;
returnValue = _lastGUIUpdateTime;
return returnValue;
}
void
-SpectrumGUIClass::setLastGUIUpdateTime(const gruel::high_res_timer_type newTime)
+SpectrumGUIClass::setLastGUIUpdateTime(const gr::high_res_timer_type newTime)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
_lastGUIUpdateTime = newTime;
}
unsigned int
SpectrumGUIClass::getPendingGUIUpdateEvents()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
unsigned int returnValue = 0;
returnValue = _pendingGUIUpdateEventsCount;
return returnValue;
@@ -400,14 +400,14 @@ SpectrumGUIClass::getPendingGUIUpdateEvents()
void
SpectrumGUIClass::incrementPendingGUIUpdateEvents()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
_pendingGUIUpdateEventsCount++;
}
void
SpectrumGUIClass::decrementPendingGUIUpdateEvents()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
if(_pendingGUIUpdateEventsCount > 0){
_pendingGUIUpdateEventsCount--;
}
@@ -416,7 +416,7 @@ SpectrumGUIClass::decrementPendingGUIUpdateEvents()
void
SpectrumGUIClass::resetPendingGUIUpdateEvents()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
_pendingGUIUpdateEventsCount = 0;
}
@@ -424,14 +424,14 @@ SpectrumGUIClass::resetPendingGUIUpdateEvents()
QWidget*
SpectrumGUIClass::qwidget()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
return (QWidget*)_spectrumDisplayForm;
}
void
SpectrumGUIClass::setTimeDomainAxis(double min, double max)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
_spectrumDisplayForm->setTimeDomainAxis(min, max);
}
@@ -439,14 +439,14 @@ void
SpectrumGUIClass::setConstellationAxis(double xmin, double xmax,
double ymin, double ymax)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
_spectrumDisplayForm->setConstellationAxis(xmin, xmax, ymin, ymax);
}
void
SpectrumGUIClass::setConstellationPenSize(int size)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
_spectrumDisplayForm->setConstellationPenSize(size);
}
@@ -454,14 +454,14 @@ SpectrumGUIClass::setConstellationPenSize(int size)
void
SpectrumGUIClass::setFrequencyAxis(double min, double max)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
_spectrumDisplayForm->setFrequencyAxis(min, max);
}
void
SpectrumGUIClass::setUpdateTime(double t)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
_updateTime = t;
_spectrumDisplayForm->setUpdateTime(_updateTime);
}
diff --git a/gr-qtgui/lib/WaterfallDisplayPlot.cc b/gr-qtgui/lib/WaterfallDisplayPlot.cc
index c1b8fd00c3..aa78000741 100644
--- a/gr-qtgui/lib/WaterfallDisplayPlot.cc
+++ b/gr-qtgui/lib/WaterfallDisplayPlot.cc
@@ -264,7 +264,7 @@ void
WaterfallDisplayPlot::plotNewData(const std::vector<double*> dataPoints,
const int64_t numDataPoints,
const double timePerFFT,
- const gruel::high_res_timer_type timestamp,
+ const gr::high_res_timer_type timestamp,
const int droppedFrames)
{
if(!_stop) {
@@ -283,7 +283,7 @@ WaterfallDisplayPlot::plotNewData(const std::vector<double*> dataPoints,
replot();
}
- _lastReplot = gruel::high_res_timer_now();
+ _lastReplot = gr::high_res_timer_now();
}
for(int i = 0; i < _nplots; i++) {
@@ -312,7 +312,7 @@ void
WaterfallDisplayPlot::plotNewData(const double* dataPoints,
const int64_t numDataPoints,
const double timePerFFT,
- const gruel::high_res_timer_type timestamp,
+ const gr::high_res_timer_type timestamp,
const int droppedFrames)
{
std::vector<double*> vecDataPoints;
@@ -569,7 +569,7 @@ WaterfallDisplayPlot::_updateIntensityRangeDisplay()
replot();
// Update the last replot timer
- _lastReplot = gruel::high_res_timer_now();
+ _lastReplot = gr::high_res_timer_now();
}
#endif /* WATERFALL_DISPLAY_PLOT_C */
diff --git a/gr-qtgui/lib/const_sink_c_impl.cc b/gr-qtgui/lib/const_sink_c_impl.cc
index b623dc2175..9064be4ebe 100644
--- a/gr-qtgui/lib/const_sink_c_impl.cc
+++ b/gr-qtgui/lib/const_sink_c_impl.cc
@@ -145,7 +145,7 @@ namespace gr {
const_sink_c_impl::set_update_time(double t)
{
//convert update time to ticks
- gruel::high_res_timer_type tps = gruel::high_res_timer_tps();
+ gr::high_res_timer_type tps = gr::high_res_timer_tps();
d_update_time = t * tps;
d_main_gui->setUpdateTime(t);
d_last_time = 0;
@@ -244,7 +244,7 @@ namespace gr {
void
const_sink_c_impl::set_nsamps(const int newsize)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
if(newsize != d_size) {
// Resize residbuf and replace data
@@ -325,8 +325,8 @@ namespace gr {
}
// Update the plot if its time
- if(gruel::high_res_timer_now() - d_last_time > d_update_time) {
- d_last_time = gruel::high_res_timer_now();
+ if(gr::high_res_timer_now() - d_last_time > d_update_time) {
+ d_last_time = gr::high_res_timer_now();
d_qApplication->postEvent(d_main_gui,
new ConstUpdateEvent(d_residbufs_real,
d_residbufs_imag,
diff --git a/gr-qtgui/lib/const_sink_c_impl.h b/gr-qtgui/lib/const_sink_c_impl.h
index b5b0858343..02b25409e6 100644
--- a/gr-qtgui/lib/const_sink_c_impl.h
+++ b/gr-qtgui/lib/const_sink_c_impl.h
@@ -24,8 +24,8 @@
#define INCLUDED_QTGUI_CONST_SINK_C_IMPL_H
#include <qtgui/const_sink_c.h>
-#include <gruel/high_res_timer.h>
-#include <gruel/thread.h>
+#include <high_res_timer.h>
+#include <thread/thread.h>
#include <qtgui/constellationdisplayform.h>
namespace gr {
@@ -36,7 +36,7 @@ namespace gr {
private:
void initialize();
- gruel::mutex d_mutex;
+ gr::thread::mutex d_mutex;
int d_size;
std::string d_name;
@@ -49,8 +49,8 @@ namespace gr {
QWidget *d_parent;
ConstellationDisplayForm *d_main_gui;
- gruel::high_res_timer_type d_update_time;
- gruel::high_res_timer_type d_last_time;
+ gr::high_res_timer_type d_update_time;
+ gr::high_res_timer_type d_last_time;
void npoints_resize();
diff --git a/gr-qtgui/lib/freq_sink_c_impl.cc b/gr-qtgui/lib/freq_sink_c_impl.cc
index b1f9a2b1a1..4508750457 100644
--- a/gr-qtgui/lib/freq_sink_c_impl.cc
+++ b/gr-qtgui/lib/freq_sink_c_impl.cc
@@ -208,7 +208,7 @@ namespace gr {
freq_sink_c_impl::set_update_time(double t)
{
//convert update time to ticks
- gruel::high_res_timer_type tps = gruel::high_res_timer_tps();
+ gr::high_res_timer_type tps = gr::high_res_timer_tps();
d_update_time = t * tps;
d_main_gui->setUpdateTime(t);
d_last_time = 0;
@@ -376,7 +376,7 @@ namespace gr {
void
freq_sink_c_impl::fftresize()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
int newfftsize = d_main_gui->getFFTSize();
d_fftavg = d_main_gui->getFFTAverage();
@@ -443,8 +443,8 @@ namespace gr {
//volk_32f_convert_64f_a(d_magbufs[n], d_fbuf, d_fftsize);
}
- if(gruel::high_res_timer_now() - d_last_time > d_update_time) {
- d_last_time = gruel::high_res_timer_now();
+ if(gr::high_res_timer_now() - d_last_time > d_update_time) {
+ d_last_time = gr::high_res_timer_now();
d_qApplication->postEvent(d_main_gui,
new FreqUpdateEvent(d_magbufs, d_fftsize));
}
diff --git a/gr-qtgui/lib/freq_sink_c_impl.h b/gr-qtgui/lib/freq_sink_c_impl.h
index e82f5c9ee7..ef17079567 100644
--- a/gr-qtgui/lib/freq_sink_c_impl.h
+++ b/gr-qtgui/lib/freq_sink_c_impl.h
@@ -26,8 +26,8 @@
#include <qtgui/freq_sink_c.h>
#include <filter/firdes.h>
#include <fft/fft.h>
-#include <gruel/high_res_timer.h>
-#include <gruel/thread.h>
+#include <high_res_timer.h>
+#include <thread/thread.h>
#include <qtgui/freqdisplayform.h>
namespace gr {
@@ -40,7 +40,7 @@ namespace gr {
void initialize();
- gruel::mutex d_mutex;
+ gr::thread::mutex d_mutex;
int d_fftsize;
float d_fftavg;
@@ -62,8 +62,8 @@ namespace gr {
QWidget *d_parent;
FreqDisplayForm *d_main_gui;
- gruel::high_res_timer_type d_update_time;
- gruel::high_res_timer_type d_last_time;
+ gr::high_res_timer_type d_update_time;
+ gr::high_res_timer_type d_last_time;
void windowreset();
void buildwindow();
diff --git a/gr-qtgui/lib/freq_sink_f_impl.cc b/gr-qtgui/lib/freq_sink_f_impl.cc
index f357ae10be..6028c8ec4e 100644
--- a/gr-qtgui/lib/freq_sink_f_impl.cc
+++ b/gr-qtgui/lib/freq_sink_f_impl.cc
@@ -208,7 +208,7 @@ namespace gr {
freq_sink_f_impl::set_update_time(double t)
{
//convert update time to ticks
- gruel::high_res_timer_type tps = gruel::high_res_timer_tps();
+ gr::high_res_timer_type tps = gr::high_res_timer_tps();
d_update_time = t * tps;
d_main_gui->setUpdateTime(t);
d_last_time = 0;
@@ -357,7 +357,7 @@ namespace gr {
void
freq_sink_f_impl::windowreset()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
filter::firdes::win_type newwintype;
newwintype = d_main_gui->getFFTWindowType();
@@ -379,7 +379,7 @@ namespace gr {
void
freq_sink_f_impl::fftresize()
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
int newfftsize = d_main_gui->getFFTSize();
d_fftavg = d_main_gui->getFFTAverage();
@@ -446,8 +446,8 @@ namespace gr {
//volk_32f_convert_64f_a(d_magbufs[n], d_fbuf, d_fftsize);
}
- if(gruel::high_res_timer_now() - d_last_time > d_update_time) {
- d_last_time = gruel::high_res_timer_now();
+ if(gr::high_res_timer_now() - d_last_time > d_update_time) {
+ d_last_time = gr::high_res_timer_now();
d_qApplication->postEvent(d_main_gui,
new FreqUpdateEvent(d_magbufs, d_fftsize));
}
diff --git a/gr-qtgui/lib/freq_sink_f_impl.h b/gr-qtgui/lib/freq_sink_f_impl.h
index d3d8851c88..6f4d9d2062 100644
--- a/gr-qtgui/lib/freq_sink_f_impl.h
+++ b/gr-qtgui/lib/freq_sink_f_impl.h
@@ -26,8 +26,8 @@
#include <qtgui/freq_sink_f.h>
#include <filter/firdes.h>
#include <fft/fft.h>
-#include <gruel/high_res_timer.h>
-#include <gruel/thread.h>
+#include <high_res_timer.h>
+#include <thread/thread.h>
#include <qtgui/freqdisplayform.h>
namespace gr {
@@ -40,7 +40,7 @@ namespace gr {
void initialize();
- gruel::mutex d_mutex;
+ gr::thread::mutex d_mutex;
int d_fftsize;
float d_fftavg;
@@ -62,8 +62,8 @@ namespace gr {
QWidget *d_parent;
FreqDisplayForm *d_main_gui;
- gruel::high_res_timer_type d_update_time;
- gruel::high_res_timer_type d_last_time;
+ gr::high_res_timer_type d_update_time;
+ gr::high_res_timer_type d_last_time;
void windowreset();
void buildwindow();
diff --git a/gr-qtgui/lib/sink_c_impl.cc b/gr-qtgui/lib/sink_c_impl.cc
index a8a0526e77..aab5be54bf 100644
--- a/gr-qtgui/lib/sink_c_impl.cc
+++ b/gr-qtgui/lib/sink_c_impl.cc
@@ -137,7 +137,7 @@ namespace gr {
// initialize update time to 10 times a second
set_update_time(0.5);
- d_last_update = gruel::high_res_timer_now();
+ d_last_update = gr::high_res_timer_now();
d_update_active = false;
}
@@ -215,7 +215,7 @@ namespace gr {
void
sink_c_impl::set_update_time(double t)
{
- d_update_time = t * gruel::high_res_timer_tps();
+ d_update_time = t * gr::high_res_timer_tps();
d_main_gui->setUpdateTime(t);
}
@@ -300,18 +300,18 @@ namespace gr {
unsigned int datasize = noutput_items - i;
unsigned int resid = d_fftsize-d_index;
- if (!d_update_active && (gruel::high_res_timer_now() - d_last_update) < d_update_time) {
+ if (!d_update_active && (gr::high_res_timer_now() - d_last_update) < d_update_time) {
consume_each(noutput_items);
return noutput_items;
}
else {
- d_last_update = gruel::high_res_timer_now();
+ d_last_update = gr::high_res_timer_now();
d_update_active = true;
}
// If we have enough input for one full FFT, do it
if(datasize >= resid) {
- const gruel::high_res_timer_type currentTime = gruel::high_res_timer_now();
+ const gr::high_res_timer_type currentTime = gr::high_res_timer_now();
// Fill up residbuf with d_fftsize number of items
memcpy(d_residbuf+d_index, &in[j], sizeof(gr_complex)*resid);
diff --git a/gr-qtgui/lib/sink_c_impl.h b/gr-qtgui/lib/sink_c_impl.h
index 83f542b426..77ddf79a0e 100644
--- a/gr-qtgui/lib/sink_c_impl.h
+++ b/gr-qtgui/lib/sink_c_impl.h
@@ -26,7 +26,7 @@
#include <qtgui/sink_c.h>
#include <filter/firdes.h>
#include <fft/fft.h>
-#include <gruel/high_res_timer.h>
+#include <high_res_timer.h>
#include <qtgui/SpectrumGUIClass.h>
namespace gr {
@@ -45,7 +45,7 @@ namespace gr {
double d_center_freq;
double d_bandwidth;
std::string d_name;
- gruel::high_res_timer_type d_last_update;
+ gr::high_res_timer_type d_last_update;
bool d_update_active;
bool d_shift;
@@ -57,7 +57,7 @@ namespace gr {
bool d_plotfreq, d_plotwaterfall, d_plottime, d_plotconst;
- gruel::high_res_timer_type d_update_time;
+ gr::high_res_timer_type d_update_time;
QWidget *d_parent;
SpectrumGUIClass *d_main_gui;
diff --git a/gr-qtgui/lib/sink_f_impl.cc b/gr-qtgui/lib/sink_f_impl.cc
index 5cb14db672..1fb2bbdbb7 100644
--- a/gr-qtgui/lib/sink_f_impl.cc
+++ b/gr-qtgui/lib/sink_f_impl.cc
@@ -297,7 +297,7 @@ namespace gr {
// If we have enough input for one full FFT, do it
if(datasize >= resid) {
- const gruel::high_res_timer_type currentTime = gruel::high_res_timer_now();
+ const gr::high_res_timer_type currentTime = gr::high_res_timer_now();
// Fill up residbuf with d_fftsize number of items
memcpy(d_residbuf+d_index, &in[j], sizeof(float)*resid);
diff --git a/gr-qtgui/lib/sink_f_impl.h b/gr-qtgui/lib/sink_f_impl.h
index 33dab713f6..24dff8d6b3 100644
--- a/gr-qtgui/lib/sink_f_impl.h
+++ b/gr-qtgui/lib/sink_f_impl.h
@@ -26,7 +26,7 @@
#include <qtgui/sink_f.h>
#include <filter/firdes.h>
#include <fft/fft.h>
-#include <gruel/high_res_timer.h>
+#include <high_res_timer.h>
#include <qtgui/SpectrumGUIClass.h>
namespace gr {
diff --git a/gr-qtgui/lib/spectrumUpdateEvents.cc b/gr-qtgui/lib/spectrumUpdateEvents.cc
index 82b195d692..21b1f4d6d9 100644
--- a/gr-qtgui/lib/spectrumUpdateEvents.cc
+++ b/gr-qtgui/lib/spectrumUpdateEvents.cc
@@ -30,10 +30,10 @@ SpectrumUpdateEvent::SpectrumUpdateEvent(const float* fftPoints,
const double* realTimeDomainPoints,
const double* imagTimeDomainPoints,
const uint64_t numTimeDomainDataPoints,
- const gruel::high_res_timer_type dataTimestamp,
+ const gr::high_res_timer_type dataTimestamp,
const bool repeatDataFlag,
const bool lastOfMultipleUpdateFlag,
- const gruel::high_res_timer_type generatedTimestamp,
+ const gr::high_res_timer_type generatedTimestamp,
const int droppedFFTFrames)
: QEvent(QEvent::Type(SpectrumUpdateEventType))
{
@@ -112,7 +112,7 @@ SpectrumUpdateEvent::getNumTimeDomainDataPoints() const
return _numTimeDomainDataPoints;
}
-gruel::high_res_timer_type
+gr::high_res_timer_type
SpectrumUpdateEvent::getDataTimestamp() const
{
return _dataTimestamp;
@@ -130,7 +130,7 @@ SpectrumUpdateEvent::getLastOfMultipleUpdateFlag() const
return _lastOfMultipleUpdateFlag;
}
-gruel::high_res_timer_type
+gr::high_res_timer_type
SpectrumUpdateEvent::getEventGeneratedTimestamp() const
{
return _eventGeneratedTimestamp;
@@ -348,7 +348,7 @@ ConstUpdateEvent::getNumDataPoints() const
WaterfallUpdateEvent::WaterfallUpdateEvent(const std::vector<double*> dataPoints,
const uint64_t numDataPoints,
- const gruel::high_res_timer_type dataTimestamp)
+ const gr::high_res_timer_type dataTimestamp)
: QEvent(QEvent::Type(SpectrumUpdateEventType))
{
if(numDataPoints < 1) {
@@ -389,7 +389,7 @@ WaterfallUpdateEvent::getNumDataPoints() const
return _numDataPoints;
}
-gruel::high_res_timer_type
+gr::high_res_timer_type
WaterfallUpdateEvent::getDataTimestamp() const
{
return _dataTimestamp;
diff --git a/gr-qtgui/lib/spectrumdisplayform.cc b/gr-qtgui/lib/spectrumdisplayform.cc
index e4ee028668..24f15886ba 100644
--- a/gr-qtgui/lib/spectrumdisplayform.cc
+++ b/gr-qtgui/lib/spectrumdisplayform.cc
@@ -192,10 +192,10 @@ SpectrumDisplayForm::newFrequencyData( const SpectrumUpdateEvent* spectrumUpdate
const float* fftMagDataPoints = spectrumUpdateEvent->getFFTPoints();
const uint64_t numFFTDataPoints = spectrumUpdateEvent->getNumFFTDataPoints();
const uint64_t numTimeDomainDataPoints = spectrumUpdateEvent->getNumTimeDomainDataPoints();
- const gruel::high_res_timer_type dataTimestamp = spectrumUpdateEvent->getDataTimestamp();
+ const gr::high_res_timer_type dataTimestamp = spectrumUpdateEvent->getDataTimestamp();
const bool repeatDataFlag = spectrumUpdateEvent->getRepeatDataFlag();
const bool lastOfMultipleUpdatesFlag = spectrumUpdateEvent->getLastOfMultipleUpdateFlag();
- const gruel::high_res_timer_type generatedTimestamp = spectrumUpdateEvent->getEventGeneratedTimestamp();
+ const gr::high_res_timer_type generatedTimestamp = spectrumUpdateEvent->getEventGeneratedTimestamp();
double* realTimeDomainDataPoints = (double*)spectrumUpdateEvent->getRealTimeDomainPoints();
double* imagTimeDomainDataPoints = (double*)spectrumUpdateEvent->getImagTimeDomainPoints();
diff --git a/gr-qtgui/lib/time_raster_sink_b_impl.cc b/gr-qtgui/lib/time_raster_sink_b_impl.cc
index d90661b968..6ec6c6075b 100644
--- a/gr-qtgui/lib/time_raster_sink_b_impl.cc
+++ b/gr-qtgui/lib/time_raster_sink_b_impl.cc
@@ -153,7 +153,7 @@ namespace gr {
time_raster_sink_b_impl::set_update_time(double t)
{
//convert update time to ticks
- gruel::high_res_timer_type tps = gruel::high_res_timer_tps();
+ gr::high_res_timer_type tps = gr::high_res_timer_tps();
d_update_time = t * tps;
d_main_gui->setUpdateTime(t);
d_last_time = 0;
@@ -404,8 +404,8 @@ namespace gr {
d_tmpflt, resid);
}
- if(gruel::high_res_timer_now() - d_last_time > d_update_time) {
- d_last_time = gruel::high_res_timer_now();
+ if(gr::high_res_timer_now() - d_last_time > d_update_time) {
+ d_last_time = gr::high_res_timer_now();
d_qApplication->postEvent(d_main_gui,
new TimeRasterUpdateEvent(d_residbufs, d_icols));
}
diff --git a/gr-qtgui/lib/time_raster_sink_b_impl.h b/gr-qtgui/lib/time_raster_sink_b_impl.h
index 93d8819fdb..09c471fcfc 100644
--- a/gr-qtgui/lib/time_raster_sink_b_impl.h
+++ b/gr-qtgui/lib/time_raster_sink_b_impl.h
@@ -26,8 +26,8 @@
#include <qtgui/time_raster_sink_b.h>
#include <filter/firdes.h>
#include <fft/fft.h>
-#include <gruel/high_res_timer.h>
-#include <gruel/thread.h>
+#include <high_res_timer.h>
+#include <thread/thread.h>
#include <qtgui/timerasterdisplayform.h>
namespace gr {
@@ -56,8 +56,8 @@ namespace gr {
std::vector<float> d_offset;
double d_samp_rate;
- gruel::high_res_timer_type d_update_time;
- gruel::high_res_timer_type d_last_time;
+ gr::high_res_timer_type d_update_time;
+ gr::high_res_timer_type d_last_time;
public:
time_raster_sink_b_impl(double samp_rate,
diff --git a/gr-qtgui/lib/time_raster_sink_c_impl.cc b/gr-qtgui/lib/time_raster_sink_c_impl.cc
index 17098f0d93..1c71258030 100644
--- a/gr-qtgui/lib/time_raster_sink_c_impl.cc
+++ b/gr-qtgui/lib/time_raster_sink_c_impl.cc
@@ -126,7 +126,7 @@ namespace gr {
time_raster_sink_c_impl::set_update_time(double t)
{
//convert update time to ticks
- gruel::high_res_timer_type tps = gruel::high_res_timer_tps();
+ gr::high_res_timer_type tps = gr::high_res_timer_tps();
d_update_time = t * tps;
d_main_gui->setUpdateTime(t);
}
@@ -193,8 +193,8 @@ namespace gr {
memcpy(d_residbufs[n]+d_index, &in[j], sizeof(gr_complex)*resid);
}
- if(gruel::high_res_timer_now() - d_last_time > d_update_time) {
- d_last_time = gruel::high_res_timer_now();
+ if(gr::high_res_timer_now() - d_last_time > d_update_time) {
+ d_last_time = gr::high_res_timer_now();
d_qApplication->postEvent(d_main_gui,
new TimeRasterUpdateEvent(d_residbufs,
d_fftsize,
diff --git a/gr-qtgui/lib/time_raster_sink_c_impl.h b/gr-qtgui/lib/time_raster_sink_c_impl.h
index 0e95733853..9f8a463bf8 100644
--- a/gr-qtgui/lib/time_raster_sink_c_impl.h
+++ b/gr-qtgui/lib/time_raster_sink_c_impl.h
@@ -26,8 +26,8 @@
#include <qtgui/time_raster_sink_c.h>
#include <filter/firdes.h>
#include <fft/fft.h>
-#include <gruel/high_res_timer.h>
-#include <gruel/thread.h>
+#include <high_res_timer.h>
+#include <thread/thread.h>
#include <qtgui/time_rasterdisplayform.h>
namespace gr {
@@ -52,8 +52,8 @@ namespace gr {
unsigned int d_rows, d_cols;
- gruel::high_res_timer_type d_update_time;
- gruel::high_res_timer_type d_last_time;
+ gr::high_res_timer_type d_update_time;
+ gr::high_res_timer_type d_last_time;
public:
time_raster_sink_c_impl(unsignedint rows,
diff --git a/gr-qtgui/lib/time_raster_sink_f_impl.cc b/gr-qtgui/lib/time_raster_sink_f_impl.cc
index 39237e2912..b6b0a1fc7d 100644
--- a/gr-qtgui/lib/time_raster_sink_f_impl.cc
+++ b/gr-qtgui/lib/time_raster_sink_f_impl.cc
@@ -151,7 +151,7 @@ namespace gr {
time_raster_sink_f_impl::set_update_time(double t)
{
//convert update time to ticks
- gruel::high_res_timer_type tps = gruel::high_res_timer_tps();
+ gr::high_res_timer_type tps = gr::high_res_timer_tps();
d_update_time = t * tps;
d_main_gui->setUpdateTime(t);
d_last_time = 0;
@@ -401,8 +401,8 @@ namespace gr {
}
// Update the plot if its time
- if(gruel::high_res_timer_now() - d_last_time > d_update_time) {
- d_last_time = gruel::high_res_timer_now();
+ if(gr::high_res_timer_now() - d_last_time > d_update_time) {
+ d_last_time = gr::high_res_timer_now();
d_qApplication->postEvent(d_main_gui,
new TimeRasterUpdateEvent(d_residbufs, d_cols));
}
diff --git a/gr-qtgui/lib/time_raster_sink_f_impl.h b/gr-qtgui/lib/time_raster_sink_f_impl.h
index fcaab8126a..fad731570c 100644
--- a/gr-qtgui/lib/time_raster_sink_f_impl.h
+++ b/gr-qtgui/lib/time_raster_sink_f_impl.h
@@ -26,8 +26,8 @@
#include <qtgui/time_raster_sink_f.h>
#include <filter/firdes.h>
#include <fft/fft.h>
-#include <gruel/high_res_timer.h>
-#include <gruel/thread.h>
+#include <high_res_timer.h>
+#include <thread/thread.h>
#include <qtgui/timerasterdisplayform.h>
namespace gr {
@@ -55,8 +55,8 @@ namespace gr {
std::vector<float> d_offset;
double d_samp_rate;
- gruel::high_res_timer_type d_update_time;
- gruel::high_res_timer_type d_last_time;
+ gr::high_res_timer_type d_update_time;
+ gr::high_res_timer_type d_last_time;
public:
time_raster_sink_f_impl(double samp_rate,
diff --git a/gr-qtgui/lib/time_sink_c_impl.cc b/gr-qtgui/lib/time_sink_c_impl.cc
index 2edb83fa12..f8ff758218 100644
--- a/gr-qtgui/lib/time_sink_c_impl.cc
+++ b/gr-qtgui/lib/time_sink_c_impl.cc
@@ -138,7 +138,7 @@ namespace gr {
time_sink_c_impl::set_update_time(double t)
{
//convert update time to ticks
- gruel::high_res_timer_type tps = gruel::high_res_timer_tps();
+ gr::high_res_timer_type tps = gr::high_res_timer_tps();
d_update_time = t * tps;
d_main_gui->setUpdateTime(t);
d_last_time = 0;
@@ -237,7 +237,7 @@ namespace gr {
void
time_sink_c_impl::set_nsamps(const int newsize)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
if(newsize != d_size) {
// Resize residbuf and replace data
@@ -260,7 +260,7 @@ namespace gr {
void
time_sink_c_impl::set_samp_rate(const double samp_rate)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
d_samp_rate = samp_rate;
d_main_gui->setSampleRate(d_samp_rate);
}
@@ -347,8 +347,8 @@ namespace gr {
}
// Update the plot if its time
- if(gruel::high_res_timer_now() - d_last_time > d_update_time) {
- d_last_time = gruel::high_res_timer_now();
+ if(gr::high_res_timer_now() - d_last_time > d_update_time) {
+ d_last_time = gr::high_res_timer_now();
d_qApplication->postEvent(d_main_gui,
new TimeUpdateEvent(d_residbufs, d_size));
}
diff --git a/gr-qtgui/lib/time_sink_c_impl.h b/gr-qtgui/lib/time_sink_c_impl.h
index 5a52a91316..2f9765c2c5 100644
--- a/gr-qtgui/lib/time_sink_c_impl.h
+++ b/gr-qtgui/lib/time_sink_c_impl.h
@@ -25,8 +25,8 @@
#include <qtgui/time_sink_c.h>
#include <qtgui/timedisplayform.h>
-#include <gruel/thread.h>
-#include <gruel/high_res_timer.h>
+#include <thread/thread.h>
+#include <high_res_timer.h>
namespace gr {
namespace qtgui {
@@ -36,7 +36,7 @@ namespace gr {
private:
void initialize();
- gruel::mutex d_mutex;
+ gr::thread::mutex d_mutex;
int d_size;
double d_samp_rate;
@@ -49,8 +49,8 @@ namespace gr {
QWidget *d_parent;
TimeDisplayForm *d_main_gui;
- gruel::high_res_timer_type d_update_time;
- gruel::high_res_timer_type d_last_time;
+ gr::high_res_timer_type d_update_time;
+ gr::high_res_timer_type d_last_time;
void npoints_resize();
diff --git a/gr-qtgui/lib/time_sink_f_impl.cc b/gr-qtgui/lib/time_sink_f_impl.cc
index 39a62d3d6b..6011751b2b 100644
--- a/gr-qtgui/lib/time_sink_f_impl.cc
+++ b/gr-qtgui/lib/time_sink_f_impl.cc
@@ -138,7 +138,7 @@ namespace gr {
time_sink_f_impl::set_update_time(double t)
{
//convert update time to ticks
- gruel::high_res_timer_type tps = gruel::high_res_timer_tps();
+ gr::high_res_timer_type tps = gr::high_res_timer_tps();
d_update_time = t * tps;
d_main_gui->setUpdateTime(t);
d_last_time = 0;
@@ -237,7 +237,7 @@ namespace gr {
void
time_sink_f_impl::set_nsamps(const int newsize)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
if(newsize != d_size) {
// Resize residbuf and replace data
@@ -260,7 +260,7 @@ namespace gr {
void
time_sink_f_impl::set_samp_rate(const double samp_rate)
{
- gruel::scoped_lock lock(d_mutex);
+ gr::thread::scoped_lock lock(d_mutex);
d_samp_rate = samp_rate;
d_main_gui->setSampleRate(d_samp_rate);
}
@@ -346,8 +346,8 @@ namespace gr {
}
// Update the plot if its time
- if(gruel::high_res_timer_now() - d_last_time > d_update_time) {
- d_last_time = gruel::high_res_timer_now();
+ if(gr::high_res_timer_now() - d_last_time > d_update_time) {
+ d_last_time = gr::high_res_timer_now();
d_qApplication->postEvent(d_main_gui,
new TimeUpdateEvent(d_residbufs, d_size));
}
diff --git a/gr-qtgui/lib/time_sink_f_impl.h b/gr-qtgui/lib/time_sink_f_impl.h
index 3d4f6417a6..1012ffbd77 100644
--- a/gr-qtgui/lib/time_sink_f_impl.h
+++ b/gr-qtgui/lib/time_sink_f_impl.h
@@ -25,8 +25,8 @@
#include <qtgui/time_sink_f.h>
#include <qtgui/timedisplayform.h>
-#include <gruel/thread.h>
-#include <gruel/high_res_timer.h>
+#include <thread/thread.h>
+#include <high_res_timer.h>
namespace gr {
namespace qtgui {
@@ -36,7 +36,7 @@ namespace gr {
private:
void initialize();
- gruel::mutex d_mutex;
+ gr::thread::mutex d_mutex;
int d_size;
double d_samp_rate;
@@ -49,8 +49,8 @@ namespace gr {
QWidget *d_parent;
TimeDisplayForm *d_main_gui;
- gruel::high_res_timer_type d_update_time;
- gruel::high_res_timer_type d_last_time;
+ gr::high_res_timer_type d_update_time;
+ gr::high_res_timer_type d_last_time;
void npoints_resize();
diff --git a/gr-qtgui/lib/waterfall_sink_c_impl.cc b/gr-qtgui/lib/waterfall_sink_c_impl.cc
index 72908b51b9..817a5a126e 100644
--- a/gr-qtgui/lib/waterfall_sink_c_impl.cc
+++ b/gr-qtgui/lib/waterfall_sink_c_impl.cc
@@ -214,7 +214,7 @@ namespace gr {
waterfall_sink_c_impl::set_update_time(double t)
{
//convert update time to ticks
- gruel::high_res_timer_type tps = gruel::high_res_timer_tps();
+ gr::high_res_timer_type tps = gr::high_res_timer_tps();
d_update_time = t * tps;
d_main_gui->setUpdateTime(t);
d_last_time = 0;
@@ -417,8 +417,8 @@ namespace gr {
//volk_32f_convert_64f_a(d_magbufs[n], d_fbuf, d_fftsize);
}
- if(gruel::high_res_timer_now() - d_last_time > d_update_time) {
- d_last_time = gruel::high_res_timer_now();
+ if(gr::high_res_timer_now() - d_last_time > d_update_time) {
+ d_last_time = gr::high_res_timer_now();
d_qApplication->postEvent(d_main_gui,
new WaterfallUpdateEvent(d_magbufs,
d_fftsize,
diff --git a/gr-qtgui/lib/waterfall_sink_c_impl.h b/gr-qtgui/lib/waterfall_sink_c_impl.h
index d9a90875af..7483989c00 100644
--- a/gr-qtgui/lib/waterfall_sink_c_impl.h
+++ b/gr-qtgui/lib/waterfall_sink_c_impl.h
@@ -26,8 +26,8 @@
#include <qtgui/waterfall_sink_c.h>
#include <filter/firdes.h>
#include <fft/fft.h>
-#include <gruel/high_res_timer.h>
-#include <gruel/thread.h>
+#include <high_res_timer.h>
+#include <thread/thread.h>
#include <qtgui/waterfalldisplayform.h>
namespace gr {
@@ -60,8 +60,8 @@ namespace gr {
QWidget *d_parent;
WaterfallDisplayForm *d_main_gui;
- gruel::high_res_timer_type d_update_time;
- gruel::high_res_timer_type d_last_time;
+ gr::high_res_timer_type d_update_time;
+ gr::high_res_timer_type d_last_time;
void windowreset();
void buildwindow();
diff --git a/gr-qtgui/lib/waterfall_sink_f_impl.cc b/gr-qtgui/lib/waterfall_sink_f_impl.cc
index bdf1159e5a..aad2ffe5c7 100644
--- a/gr-qtgui/lib/waterfall_sink_f_impl.cc
+++ b/gr-qtgui/lib/waterfall_sink_f_impl.cc
@@ -213,7 +213,7 @@ namespace gr {
waterfall_sink_f_impl::set_update_time(double t)
{
//convert update time to ticks
- gruel::high_res_timer_type tps = gruel::high_res_timer_tps();
+ gr::high_res_timer_type tps = gr::high_res_timer_tps();
d_update_time = t * tps;
d_main_gui->setUpdateTime(t);
d_last_time = 0;
@@ -418,8 +418,8 @@ namespace gr {
//volk_32f_convert_64f_a(d_magbufs[n], d_fbuf, d_fftsize);
}
- if(gruel::high_res_timer_now() - d_last_time > d_update_time) {
- d_last_time = gruel::high_res_timer_now();
+ if(gr::high_res_timer_now() - d_last_time > d_update_time) {
+ d_last_time = gr::high_res_timer_now();
d_qApplication->postEvent(d_main_gui,
new WaterfallUpdateEvent(d_magbufs,
d_fftsize,
diff --git a/gr-qtgui/lib/waterfall_sink_f_impl.h b/gr-qtgui/lib/waterfall_sink_f_impl.h
index c204ef1509..02556fd9d6 100644
--- a/gr-qtgui/lib/waterfall_sink_f_impl.h
+++ b/gr-qtgui/lib/waterfall_sink_f_impl.h
@@ -26,8 +26,8 @@
#include <qtgui/waterfall_sink_f.h>
#include <filter/firdes.h>
#include <fft/fft.h>
-#include <gruel/high_res_timer.h>
-#include <gruel/thread.h>
+#include <high_res_timer.h>
+#include <thread/thread.h>
#include <qtgui/waterfalldisplayform.h>
namespace gr {
@@ -60,8 +60,8 @@ namespace gr {
QWidget *d_parent;
WaterfallDisplayForm *d_main_gui;
- gruel::high_res_timer_type d_update_time;
- gruel::high_res_timer_type d_last_time;
+ gr::high_res_timer_type d_update_time;
+ gr::high_res_timer_type d_last_time;
void windowreset();
void buildwindow();
diff --git a/gr-qtgui/lib/waterfalldisplayform.cc b/gr-qtgui/lib/waterfalldisplayform.cc
index 23b2a486bb..fb5df230c2 100644
--- a/gr-qtgui/lib/waterfalldisplayform.cc
+++ b/gr-qtgui/lib/waterfalldisplayform.cc
@@ -115,7 +115,7 @@ WaterfallDisplayForm::newData(const QEvent *updateEvent)
WaterfallUpdateEvent *event = (WaterfallUpdateEvent*)updateEvent;
const std::vector<double*> dataPoints = event->getPoints();
const uint64_t numDataPoints = event->getNumDataPoints();
- const gruel::high_res_timer_type dataTimestamp = event->getDataTimestamp();
+ const gr::high_res_timer_type dataTimestamp = event->getDataTimestamp();
_min_val = 1000;
_max_val = -1000;
diff --git a/gr-qtgui/swig/CMakeLists.txt b/gr-qtgui/swig/CMakeLists.txt
index 7232d05a8f..66d4d643c0 100644
--- a/gr-qtgui/swig/CMakeLists.txt
+++ b/gr-qtgui/swig/CMakeLists.txt
@@ -28,7 +28,6 @@ set(GR_SWIG_INCLUDE_DIRS
${GR_FFT_INCLUDE_DIRS}
${GR_FILTER_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${QWT_INCLUDE_DIRS}
${QT_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
diff --git a/gr-shd/lib/CMakeLists.txt b/gr-shd/lib/CMakeLists.txt
index e71efd0ea0..63db4acc80 100644
--- a/gr-shd/lib/CMakeLists.txt
+++ b/gr-shd/lib/CMakeLists.txt
@@ -23,7 +23,6 @@
include_directories(
${GR_SHD_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${SHD_INCLUDE_DIRS}
}
diff --git a/gr-shd/swig/CMakeLists.txt b/gr-shd/swig/CMakeLists.txt
index eb33845f96..57e9afdacf 100644
--- a/gr-shd/swig/CMakeLists.txt
+++ b/gr-shd/swig/CMakeLists.txt
@@ -28,7 +28,6 @@ set(GR_SWIG_FLAGS -DGR_HAVE_SHD) #needed to parse shd_swig.i
set(GR_SWIG_INCLUDE_DIRS
${GR_SHD_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${SHD_INCLUDE_DIRS}
)
diff --git a/gr-trellis/include/trellis/api.h b/gr-trellis/include/trellis/api.h
index c09b340d6d..8b85addd96 100644
--- a/gr-trellis/include/trellis/api.h
+++ b/gr-trellis/include/trellis/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_TRELLIS_API_H
#define INCLUDED_TRELLIS_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_trellis_EXPORTS
# define TRELLIS_API __GR_ATTR_EXPORT
diff --git a/gr-trellis/lib/CMakeLists.txt b/gr-trellis/lib/CMakeLists.txt
index 099db57734..fc08dbf7af 100644
--- a/gr-trellis/lib/CMakeLists.txt
+++ b/gr-trellis/lib/CMakeLists.txt
@@ -25,7 +25,6 @@ include_directories(
${GR_TRELLIS_INCLUDE_DIRS}
${GR_DIGITAL_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${LOG4CXX_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-trellis/src/lib/CMakeLists.txt b/gr-trellis/src/lib/CMakeLists.txt
index c20f4df101..07d0851105 100644
--- a/gr-trellis/src/lib/CMakeLists.txt
+++ b/gr-trellis/src/lib/CMakeLists.txt
@@ -26,7 +26,6 @@ include_directories(
${GR_TRELLIS_INCLUDE_DIRS}
${GR_DIGITAL_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-trellis/swig/CMakeLists.txt b/gr-trellis/swig/CMakeLists.txt
index 8e15fc8858..240e93ce48 100644
--- a/gr-trellis/swig/CMakeLists.txt
+++ b/gr-trellis/swig/CMakeLists.txt
@@ -27,7 +27,6 @@ set(GR_SWIG_INCLUDE_DIRS
${GR_TRELLIS_INCLUDE_DIRS}
${GR_DIGITAL_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-uhd/examples/c++/CMakeLists.txt b/gr-uhd/examples/c++/CMakeLists.txt
index aa50c589fc..655ef0c0a9 100644
--- a/gr-uhd/examples/c++/CMakeLists.txt
+++ b/gr-uhd/examples/c++/CMakeLists.txt
@@ -24,7 +24,6 @@ include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${GR_UHD_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${UHD_INCLUDE_DIRS}
)
diff --git a/gr-uhd/lib/CMakeLists.txt b/gr-uhd/lib/CMakeLists.txt
index fe95fcb7ef..9121dd41b8 100644
--- a/gr-uhd/lib/CMakeLists.txt
+++ b/gr-uhd/lib/CMakeLists.txt
@@ -24,7 +24,6 @@ include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${GR_UHD_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${LOG4CXX_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${UHD_INCLUDE_DIRS}
diff --git a/gr-uhd/lib/amsg_source_impl.cc b/gr-uhd/lib/amsg_source_impl.cc
index 76603e4989..cf344db202 100644
--- a/gr-uhd/lib/amsg_source_impl.cc
+++ b/gr-uhd/lib/amsg_source_impl.cc
@@ -48,7 +48,7 @@ namespace gr {
{
_dev = ::uhd::usrp::multi_usrp::make(device_addr);
_amsg_thread =
- gruel::thread(boost::bind(&amsg_source_impl::recv_loop, this));
+ gr::thread::thread(boost::bind(&amsg_source_impl::recv_loop, this));
}
amsg_source_impl::~amsg_source_impl()
diff --git a/gr-uhd/lib/amsg_source_impl.h b/gr-uhd/lib/amsg_source_impl.h
index 2928e85adb..f0f3d4bfb1 100644
--- a/gr-uhd/lib/amsg_source_impl.h
+++ b/gr-uhd/lib/amsg_source_impl.h
@@ -21,7 +21,7 @@
*/
#include <uhd/amsg_source.h>
-#include <gruel/thread.h>
+#include <thread/thread.h>
namespace gr {
namespace uhd {
@@ -38,7 +38,7 @@ namespace gr {
protected:
::uhd::usrp::multi_usrp::sptr _dev;
- gruel::thread _amsg_thread;
+ gr::thread::thread _amsg_thread;
gr_msg_queue_sptr _msgq;
bool _running;
};
diff --git a/gr-uhd/swig/CMakeLists.txt b/gr-uhd/swig/CMakeLists.txt
index 5f25bb87fd..702613adcc 100644
--- a/gr-uhd/swig/CMakeLists.txt
+++ b/gr-uhd/swig/CMakeLists.txt
@@ -28,7 +28,6 @@ set(GR_SWIG_FLAGS -DGR_HAVE_UHD) #needed to parse uhd_swig.i
set(GR_SWIG_INCLUDE_DIRS
${GR_UHD_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${UHD_INCLUDE_DIRS}
)
diff --git a/gr-utils/python/gr_read_file_metadata b/gr-utils/python/gr_read_file_metadata
index 3bc448b04e..4373cd054b 100644
--- a/gr-utils/python/gr_read_file_metadata
+++ b/gr-utils/python/gr_read_file_metadata
@@ -23,7 +23,7 @@
import sys
from optparse import OptionParser
-from gruel import pmt
+import pmt
from gnuradio.blocks import parse_file_metadata
def main(filename, detached=False):
diff --git a/gr-utils/python/modtool/gr-newmod/CMakeLists.txt b/gr-utils/python/modtool/gr-newmod/CMakeLists.txt
index 1f32ef168e..f68db5c475 100644
--- a/gr-utils/python/modtool/gr-newmod/CMakeLists.txt
+++ b/gr-utils/python/modtool/gr-newmod/CMakeLists.txt
@@ -87,10 +87,6 @@ find_package(Gruel)
find_package(GnuradioRuntime)
find_package(CppUnit)
-if(NOT GRUEL_FOUND)
- message(FATAL_ERROR "Gruel required to compile howto")
-endif()
-
if(NOT GNURADIO_RUNTIME_FOUND)
message(FATAL_ERROR "GnuRadio Runtime required to compile howto")
endif()
diff --git a/gr-utils/python/modtool/gr-newmod/include/howto/api.h b/gr-utils/python/modtool/gr-newmod/include/howto/api.h
index 5263a1cf70..0c20712786 100644
--- a/gr-utils/python/modtool/gr-newmod/include/howto/api.h
+++ b/gr-utils/python/modtool/gr-newmod/include/howto/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_HOWTO_API_H
#define INCLUDED_HOWTO_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_howto_EXPORTS
# define HOWTO_API __GR_ATTR_EXPORT
diff --git a/gr-utils/python/modtool/gr-newmod/lib/qa_howto.h b/gr-utils/python/modtool/gr-newmod/lib/qa_howto.h
index 8eff956b61..069afd38ae 100644
--- a/gr-utils/python/modtool/gr-newmod/lib/qa_howto.h
+++ b/gr-utils/python/modtool/gr-newmod/lib/qa_howto.h
@@ -23,7 +23,7 @@
#ifndef _QA_HOWTO_H_
#define _QA_HOWTO_H_
-#include <gruel/attributes.h>
+#include <attributes.h>
#include <cppunit/TestSuite.h>
//! collect all the tests for the gr-filter directory
diff --git a/gr-utils/python/modtool/gr-newmod/swig/CMakeLists.txt b/gr-utils/python/modtool/gr-newmod/swig/CMakeLists.txt
index d896dc3199..bfcf3d521f 100644
--- a/gr-utils/python/modtool/gr-newmod/swig/CMakeLists.txt
+++ b/gr-utils/python/modtool/gr-newmod/swig/CMakeLists.txt
@@ -35,10 +35,6 @@ foreach(incdir ${GNURADIO_RUNTIME_INCLUDE_DIRS})
list(APPEND GR_SWIG_INCLUDE_DIRS ${incdir}/swig)
endforeach(incdir)
-foreach(incdir ${GRUEL_INCLUDE_DIRS})
- list(APPEND GR_SWIG_INCLUDE_DIRS ${incdir}/gruel/swig)
-endforeach(incdir)
-
set(GR_SWIG_LIBRARIES gnuradio-howto)
set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/howto_swig_doc.i)
set(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../include)
diff --git a/gr-video-sdl/include/video_sdl/api.h b/gr-video-sdl/include/video_sdl/api.h
index 5418f86f03..981292658c 100644
--- a/gr-video-sdl/include/video_sdl/api.h
+++ b/gr-video-sdl/include/video_sdl/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_VIDEO_SDL_API_H
#define INCLUDED_VIDEO_SDL_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_video_sdl_EXPORTS
# define VIDEO_SDL_API __GR_ATTR_EXPORT
diff --git a/gr-video-sdl/lib/CMakeLists.txt b/gr-video-sdl/lib/CMakeLists.txt
index 5b0b9fdfae..e90aa17273 100644
--- a/gr-video-sdl/lib/CMakeLists.txt
+++ b/gr-video-sdl/lib/CMakeLists.txt
@@ -23,7 +23,6 @@
include_directories(
${GR_VIDEO_SDL_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${LOG4CXX_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${SDL_INCLUDE_DIR}
diff --git a/gr-video-sdl/src/CMakeLists.txt b/gr-video-sdl/src/CMakeLists.txt
index 636b34d6df..ae0a0d98ca 100644
--- a/gr-video-sdl/src/CMakeLists.txt
+++ b/gr-video-sdl/src/CMakeLists.txt
@@ -23,7 +23,6 @@
include_directories(
${GR_VIDEO_SDL_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${LOG4CPP_INCLUDE_DIRS}
${SDL_INCLUDE_DIR}
diff --git a/gr-video-sdl/swig/CMakeLists.txt b/gr-video-sdl/swig/CMakeLists.txt
index 00bb8755d5..26f4f6d596 100644
--- a/gr-video-sdl/swig/CMakeLists.txt
+++ b/gr-video-sdl/swig/CMakeLists.txt
@@ -26,7 +26,6 @@ include(GrSwig)
set(GR_SWIG_INCLUDE_DIRS
${GR_VIDEO_SDL_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-vocoder/include/vocoder/api.h b/gr-vocoder/include/vocoder/api.h
index 331cf5d0bc..613a19f4bc 100644
--- a/gr-vocoder/include/vocoder/api.h
+++ b/gr-vocoder/include/vocoder/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_VOCODER_API_H
#define INCLUDED_VOCODER_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_vocoder_EXPORTS
# define VOCODER_API __GR_ATTR_EXPORT
diff --git a/gr-vocoder/lib/CMakeLists.txt b/gr-vocoder/lib/CMakeLists.txt
index 4512c19704..08ff4108d3 100644
--- a/gr-vocoder/lib/CMakeLists.txt
+++ b/gr-vocoder/lib/CMakeLists.txt
@@ -23,7 +23,6 @@
include_directories(
${GR_VOCODER_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${LOG4CXX_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-vocoder/swig/CMakeLists.txt b/gr-vocoder/swig/CMakeLists.txt
index 1fa5c0abb7..585e502ef0 100644
--- a/gr-vocoder/swig/CMakeLists.txt
+++ b/gr-vocoder/swig/CMakeLists.txt
@@ -26,7 +26,6 @@ include(GrSwig)
set(GR_SWIG_INCLUDE_DIRS
${GR_VOCODER_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-wavelet/include/wavelet/api.h b/gr-wavelet/include/wavelet/api.h
index 68b2c04d78..f1b281440d 100644
--- a/gr-wavelet/include/wavelet/api.h
+++ b/gr-wavelet/include/wavelet/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_WAVELET_API_H
#define INCLUDED_WAVELET_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_wavelet_EXPORTS
# define WAVELET_API __GR_ATTR_EXPORT
diff --git a/gr-wavelet/lib/CMakeLists.txt b/gr-wavelet/lib/CMakeLists.txt
index d25245f0cc..eb01d7d1cb 100644
--- a/gr-wavelet/lib/CMakeLists.txt
+++ b/gr-wavelet/lib/CMakeLists.txt
@@ -26,7 +26,6 @@ include_directories(
${GR_WAVELET_INCLUDE_DIRS}
${GR_BLOCKS_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${LOG4CXX_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${GSL_INCLUDE_DIRS}
diff --git a/gr-wavelet/swig/CMakeLists.txt b/gr-wavelet/swig/CMakeLists.txt
index 38f9b0a016..b16f1b6efe 100644
--- a/gr-wavelet/swig/CMakeLists.txt
+++ b/gr-wavelet/swig/CMakeLists.txt
@@ -27,7 +27,6 @@ set(GR_SWIG_INCLUDE_DIRS
${GR_WAVELET_INCLUDE_DIRS}
${GR_BLOCKS_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${GSL_INCLUDE_DIRS}
)
diff --git a/gr-wxgui/include/wxgui/api.h b/gr-wxgui/include/wxgui/api.h
index 442e112e4b..cf9e980a9c 100644
--- a/gr-wxgui/include/wxgui/api.h
+++ b/gr-wxgui/include/wxgui/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_WXGUI_API_H
#define INCLUDED_WXGUI_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_wxgui_EXPORTS
# define WXGUI_API __GR_ATTR_EXPORT
diff --git a/gr-wxgui/lib/CMakeLists.txt b/gr-wxgui/lib/CMakeLists.txt
index dc4dbbc40b..c33a7b9a33 100644
--- a/gr-wxgui/lib/CMakeLists.txt
+++ b/gr-wxgui/lib/CMakeLists.txt
@@ -27,7 +27,6 @@ include_directories(
${GR_WXGUI_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
${VOLK_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gr-wxgui/lib/histo_sink_f_impl.cc b/gr-wxgui/lib/histo_sink_f_impl.cc
index f9459ac8d9..9b168de547 100644
--- a/gr-wxgui/lib/histo_sink_f_impl.cc
+++ b/gr-wxgui/lib/histo_sink_f_impl.cc
@@ -80,7 +80,7 @@ namespace gr {
gr_vector_void_star &output_items)
{
const float *in = (const float*)input_items[0];
- gruel::scoped_lock guard(d_mutex); // hold mutex for duration of this function
+ gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this function
for(unsigned int i = 0; i < (unsigned int)noutput_items; i++) {
d_samps[d_sample_count] = in[i];
d_sample_count++;
@@ -164,7 +164,7 @@ namespace gr {
void
histo_sink_f_impl::set_frame_size(unsigned int frame_size)
{
- gruel::scoped_lock guard(d_mutex); // hold mutex for duration of this function
+ gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this function
d_frame_size = frame_size;
/* allocate a new sample array */
delete [] d_samps;
@@ -174,7 +174,7 @@ namespace gr {
void
histo_sink_f_impl::set_num_bins(unsigned int num_bins) {
- gruel::scoped_lock guard(d_mutex); // hold mutex for duration of this function
+ gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this function
d_num_bins = num_bins;
/* allocate a new bin array */
delete [] d_bins;
diff --git a/gr-wxgui/lib/histo_sink_f_impl.h b/gr-wxgui/lib/histo_sink_f_impl.h
index e160e0e550..98b0fe6706 100644
--- a/gr-wxgui/lib/histo_sink_f_impl.h
+++ b/gr-wxgui/lib/histo_sink_f_impl.h
@@ -37,7 +37,7 @@ namespace gr {
unsigned int d_sample_count;
unsigned int *d_bins;
float *d_samps;
- gruel::mutex d_mutex;
+ gr::thread::mutex d_mutex;
void send_frame(void);
void clear(void);
diff --git a/gr-wxgui/swig/CMakeLists.txt b/gr-wxgui/swig/CMakeLists.txt
index aa0750f44b..ad2623cdac 100644
--- a/gr-wxgui/swig/CMakeLists.txt
+++ b/gr-wxgui/swig/CMakeLists.txt
@@ -27,7 +27,6 @@ set(GR_SWIG_INCLUDE_DIRS
${CMAKE_CURRENT_BINARY_DIR}/../include
${GR_WXGUI_INCLUDE_DIRS}
${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
diff --git a/gruel/CMakeLists.txt b/gruel/CMakeLists.txt
index 3bdb7406ed..377add8f98 100644
--- a/gruel/CMakeLists.txt
+++ b/gruel/CMakeLists.txt
@@ -85,7 +85,6 @@ add_subdirectory(src/include/gruel)
add_subdirectory(src/lib)
if(ENABLE_PYTHON)
add_subdirectory(src/swig)
- add_subdirectory(src/python)
endif(ENABLE_PYTHON)
########################################################################
diff --git a/gruel/src/include/gruel/api.h b/gruel/src/include/gruel/api.h
index 945814d43c..73a8a5719b 100644
--- a/gruel/src/include/gruel/api.h
+++ b/gruel/src/include/gruel/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_GRUEL_API_H
#define INCLUDED_GRUEL_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gruel_EXPORTS
# define GRUEL_API __GR_ATTR_EXPORT
diff --git a/gruel/src/include/gruel/msg_accepter.h b/gruel/src/include/gruel/msg_accepter.h
deleted file mode 100644
index 45acb3c784..0000000000
--- a/gruel/src/include/gruel/msg_accepter.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-#ifndef INCLUDED_GRUEL_MSG_ACCEPTER_H
-#define INCLUDED_GRUEL_MSG_ACCEPTER_H
-
-#include <gruel/api.h>
-#include <gruel/pmt.h>
-#include <boost/shared_ptr.hpp>
-
-namespace gruel {
-
- /*!
- * \brief Virtual base class that accepts messages
- */
- class GRUEL_API msg_accepter
- {
- public:
- msg_accepter() {};
- virtual ~msg_accepter();
-
- /*!
- * \brief send \p msg to \p msg_accepter on port \p which_port
- *
- * Sending a message is an asynchronous operation. The \p post
- * call will not wait for the message either to arrive at the
- * destination or to be received.
- */
- virtual void post(pmt::pmt_t which_port, pmt::pmt_t msg) = 0;
- };
-
- typedef boost::shared_ptr<msg_accepter> msg_accepter_sptr;
-
-} /* namespace gruel */
-
-#endif /* INCLUDED_GRUEL_MSG_ACCEPTER_H */
diff --git a/gruel/src/include/gruel/msg_passing.h b/gruel/src/include/gruel/msg_passing.h
deleted file mode 100644
index 572507e0f3..0000000000
--- a/gruel/src/include/gruel/msg_passing.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-#ifndef INCLUDED_GRUEL_MSG_PASSING_H
-#define INCLUDED_GRUEL_MSG_PASSING_H
-
-/*!
- * \brief Include this header to use the message passing features
- */
-
-#include <gruel/api.h>
-#include <gruel/pmt.h>
-#include <gruel/msg_accepter.h>
-
-
-namespace gruel {
-
- /*!
- * \brief send message to msg_accepter
- *
- * \param accepter is the target of the send.
- * \param which_port A pmt symbol describing the port by name.
- * \param msg is the message to send. It's usually a pmt tuple.
- *
- * Sending a message is an asynchronous operation. The \p send
- * call will not wait for the message either to arrive at the
- * destination or to be received.
- *
- * \returns msg
- */
- static inline pmt::pmt_t
- send(msg_accepter_sptr accepter, const pmt::pmt_t &which_port, const pmt::pmt_t &msg)
- {
- accepter->post(which_port, msg);
- return msg;
- }
-
- /*!
- * \brief send message to msg_accepter
- *
- * \param accepter is the target of the send.
- * \param which_port A pmt symbol describing the port by name.
- * \param msg is the message to send. It's usually a pmt tuple.
- *
- * Sending a message is an asynchronous operation. The \p send
- * call will not wait for the message either to arrive at the
- * destination or to be received.
- *
- * \returns msg
- */
- static inline pmt::pmt_t
- send(msg_accepter *accepter, const pmt::pmt_t &which_port, const pmt::pmt_t &msg)
- {
- accepter->post(which_port, msg);
- return msg;
- }
-
- /*!
- * \brief send message to msg_accepter
- *
- * \param accepter is the target of the send.
- * \param which_port A pmt symbol describing the port by name.
- * \param msg is the message to send. It's usually a pmt tuple.
- *
- * Sending a message is an asynchronous operation. The \p send
- * call will not wait for the message either to arrive at the
- * destination or to be received.
- *
- * \returns msg
- */
- static inline pmt::pmt_t
- send(msg_accepter &accepter, const pmt::pmt_t &which_port, const pmt::pmt_t &msg)
- {
- accepter.post(which_port, msg);
- return msg;
- }
-
- /*!
- * \brief send message to msg_accepter
- *
- * \param accepter is the target of the send. precond: pmt::is_msg_accepter(accepter)
- * \param which_port A pmt symbol describing the port by name.
- * \param msg is the message to send. It's usually a pmt tuple.
- *
- * Sending a message is an asynchronous operation. The \p send
- * call will not wait for the message either to arrive at the
- * destination or to be received.
- *
- * \returns msg
- */
- static inline pmt::pmt_t
- send(pmt::pmt_t accepter, const pmt::pmt_t &which_port, const pmt::pmt_t &msg)
- {
- return send(pmt::msg_accepter_ref(accepter), which_port, msg);
- }
-
-} /* namespace gruel */
-
-#endif /* INCLUDED_GRUEL_MSG_PASSING_H */
diff --git a/gruel/src/include/gruel/msg_queue.h b/gruel/src/include/gruel/msg_queue.h
deleted file mode 100644
index f038ca3259..0000000000
--- a/gruel/src/include/gruel/msg_queue.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_MSG_QUEUE_H
-#define INCLUDED_MSG_QUEUE_H
-
-#include <gruel/api.h>
-#include <gruel/thread.h>
-#include <gruel/pmt.h>
-#include <deque>
-
-namespace gruel {
-
- class msg_queue;
- typedef boost::shared_ptr<msg_queue> msg_queue_sptr;
-
- msg_queue_sptr make_msg_queue(unsigned int limit=0);
-
- /*!
- * \brief thread-safe message queue
- */
- class GRUEL_API msg_queue {
-
- gruel::mutex d_mutex;
- gruel::condition_variable d_not_empty;
- gruel::condition_variable d_not_full;
- unsigned int d_limit; // max # of messages in queue. 0 -> unbounded
-
- std::deque<pmt::pmt_t> d_msgs;
-
- public:
- msg_queue(unsigned int limit);
- ~msg_queue();
-
- /*!
- * \brief Insert message at tail of queue.
- * \param msg message
- *
- * Block if queue if full.
- */
- void insert_tail(pmt::pmt_t msg);
-
- /*!
- * \brief Delete message from head of queue and return it.
- * Block if no message is available.
- */
- pmt::pmt_t delete_head();
-
- /*!
- * \brief If there's a message in the q, delete it and return it.
- * If no message is available, return pmt_t().
- */
- pmt::pmt_t delete_head_nowait();
-
- //! Delete all messages from the queue
- void flush();
-
- //! is the queue empty?
- bool empty_p() const { return d_msgs.empty(); }
-
- //! is the queue full?
- bool full_p() const { return d_limit != 0 && count() >= d_limit; }
-
- //! return number of messages in queue
- unsigned int count() const { return d_msgs.size(); }
-
- //! return limit on number of message in queue. 0 -> unbounded
- unsigned int limit() const { return d_limit; }
- };
-
-} /* namespace gruel */
-
-#endif /* INCLUDED_MSG_QUEUE_H */
diff --git a/gruel/src/include/gruel/thread.h b/gruel/src/include/gruel/thread.h
deleted file mode 100644
index 10c6c38ccc..0000000000
--- a/gruel/src/include/gruel/thread.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2009-2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-#ifndef INCLUDED_THREAD_H
-#define INCLUDED_THREAD_H
-
-#include <gruel/api.h>
-#include <boost/thread/thread.hpp>
-#include <boost/thread/mutex.hpp>
-#include <boost/thread/locks.hpp>
-#include <boost/thread/condition_variable.hpp>
-#include <vector>
-
-#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
-
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-
-#include <windows.h>
-
-#endif
-
-namespace gruel {
-
- typedef boost::thread thread;
- typedef boost::mutex mutex;
- typedef boost::unique_lock<boost::mutex> scoped_lock;
- typedef boost::condition_variable condition_variable;
-
- /*! \brief a system-dependent typedef for the underlying thread type.
- */
-#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
- typedef HANDLE gr_thread_t;
-#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
- typedef pthread_t gr_thread_t;
-#else
- typedef pthread_t gr_thread_t;
-#endif
-
- /*! \brief Get the current thread's ID as a gr_thread_t
- *
- * We use this when setting the thread affinity or any other
- * low-level thread settings. Can be called withing a GNU Radio
- * block to get a reference to its current thread ID.
- */
- GRUEL_API gr_thread_t get_current_thread_id();
-
- /*! \brief Bind the current thread to a set of cores.
- *
- * Wrapper for system-dependent calls to set the affinity of the
- * current thread to the processor mask. The mask is simply a
- * 1-demensional vector containing the processor or core number from
- * 0 to N-1 for N cores.
- *
- * Note: this does not work on OSX; it is a nop call since OSX does
- * not support the concept of thread affinity (and what they do
- * support in this way since 10.5 is not what we want or can use in
- * this fashion).
- */
- GRUEL_API void thread_bind_to_processor(const std::vector<int> &mask);
-
- /*! \brief Convineince function to bind the current thread to a single core.
- *
- * Wrapper for system-dependent calls to set the affinity of the
- * current thread to a given core from 0 to N-1 for N cores.
- *
- * Note: this does not work on OSX; it is a nop call since OSX does
- * not support the concept of thread affinity (and what they do
- * support in this way since 10.5 is not what we want or can use in
- * this fashion).
- */
- GRUEL_API void thread_bind_to_processor(int n);
-
- /*! \brief Bind a thread to a set of cores.
- *
- * Wrapper for system-dependent calls to set the affinity of the
- * given thread ID to the processor mask. The mask is simply a
- * 1-demensional vector containing the processor or core number from
- * 0 to N-1 for N cores.
- *
- * Note: this does not work on OSX; it is a nop call since OSX does
- * not support the concept of thread affinity (and what they do
- * support in this way since 10.5 is not what we want or can use in
- * this fashion).
- */
- GRUEL_API void thread_bind_to_processor(gr_thread_t thread, const std::vector<int> &mask);
-
-
- /*! \brief Convineince function to bind the a thread to a single core.
- *
- * Wrapper for system-dependent calls to set the affinity of the
- * given thread ID to a given core from 0 to N-1 for N cores.
- *
- * Note: this does not work on OSX; it is a nop call since OSX does
- * not support the concept of thread affinity (and what they do
- * support in this way since 10.5 is not what we want or can use in
- * this fashion).
- */
- GRUEL_API void thread_bind_to_processor(gr_thread_t thread, unsigned int n);
-
- /*! \brief Remove any thread-processor affinity for the current thread.
- *
- * Note: this does not work on OSX; it is a nop call since OSX does
- * not support the concept of thread affinity (and what they do
- * support in this way since 10.5 is not what we want or can use in
- * this fashion).
- */
- GRUEL_API void thread_unbind();
-
- /*! \brief Remove any thread-processor affinity for a given thread ID.
- *
- * Note: this does not work on OSX; it is a nop call since OSX does
- * not support the concept of thread affinity (and what they do
- * support in this way since 10.5 is not what we want or can use in
- * this fashion).
- */
- GRUEL_API void thread_unbind(gr_thread_t thread);
-
-} /* namespace gruel */
-
-#endif /* INCLUDED_THREAD_H */
diff --git a/gruel/src/include/gruel/thread_group.h b/gruel/src/include/gruel/thread_group.h
deleted file mode 100644
index 1b8a0a4bfb..0000000000
--- a/gruel/src/include/gruel/thread_group.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright (C) 2001-2003 William E. Kempf
- * Copyright (C) 2007 Anthony Williams
- * Copyright 2008,2009 Free Software Foundation, Inc.
- *
- * Distributed under the Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- */
-
-/*
- * This was extracted from Boost 1.35.0 and fixed.
- */
-
-#ifndef INCLUDED_GRUEL_THREAD_GROUP_H
-#define INCLUDED_GRUEL_THREAD_GROUP_H
-
-#include <gruel/api.h>
-#include <gruel/thread.h>
-#include <boost/utility.hpp>
-#include <boost/thread/shared_mutex.hpp>
-#include <boost/function.hpp>
-
-namespace gruel
-{
- class GRUEL_API thread_group : public boost::noncopyable
- {
- public:
- thread_group();
- ~thread_group();
-
- boost::thread* create_thread(const boost::function0<void>& threadfunc);
- void add_thread(boost::thread* thrd);
- void remove_thread(boost::thread* thrd);
- void join_all();
- void interrupt_all();
- size_t size() const;
-
- private:
- std::list<boost::thread*> m_threads;
- mutable boost::shared_mutex m_mutex;
- };
-}
-
-#endif /* INCLUDED_GRUEL_THREAD_GROUP_H */
diff --git a/gruel/src/lib/CMakeLists.txt b/gruel/src/lib/CMakeLists.txt
index a3baa4fa5c..fc51c8f927 100644
--- a/gruel/src/lib/CMakeLists.txt
+++ b/gruel/src/lib/CMakeLists.txt
@@ -59,14 +59,12 @@ GR_ADD_COND_DEF(HAVE_SCHED_SETSCHEDULER)
# Include subdirs rather to populate to the sources lists.
########################################################################
GR_INCLUDE_SUBDIRECTORY(msg)
-GR_INCLUDE_SUBDIRECTORY(pmt)
########################################################################
# Setup the include and linker paths
########################################################################
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
- ${GRUEL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
link_directories(${Boost_LIBRARY_DIRS})
diff --git a/gruel/src/lib/msg/msg_queue.cc b/gruel/src/lib/msg/msg_queue.cc
deleted file mode 100644
index a0b120e40d..0000000000
--- a/gruel/src/lib/msg/msg_queue.cc
+++ /dev/null
@@ -1,103 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gruel/msg_queue.h>
-#include <stdexcept>
-
-using namespace pmt;
-
-namespace gruel {
-
- msg_queue_sptr
- make_msg_queue(unsigned int limit)
- {
- return msg_queue_sptr(new msg_queue(limit));
- }
-
- msg_queue::msg_queue(unsigned int limit)
- : d_limit(limit)
- {
- }
-
- msg_queue::~msg_queue()
- {
- flush();
- }
-
- void
- msg_queue::insert_tail(pmt_t msg)
- {
- gruel::scoped_lock guard(d_mutex);
-
- while (full_p())
- d_not_full.wait(guard);
-
- d_msgs.push_back(msg);
- d_not_empty.notify_one();
- }
-
- pmt_t
- msg_queue::delete_head()
- {
- gruel::scoped_lock guard(d_mutex);
-
- while (empty_p())
- d_not_empty.wait(guard);
-
- pmt_t m(d_msgs.front());
- d_msgs.pop_front();
-
- if (d_limit > 0) // Unlimited length queues never block on write
- d_not_full.notify_one();
-
- return m;
- }
-
- pmt_t
- msg_queue::delete_head_nowait()
- {
- gruel::scoped_lock guard(d_mutex);
-
- if (empty_p())
- return pmt_t();
-
- pmt_t m(d_msgs.front());
- d_msgs.pop_front();
-
- if (d_limit > 0) // Unlimited length queues never block on write
- d_not_full.notify_one();
-
- return m;
- }
-
- void
- msg_queue::flush()
- {
- while (delete_head_nowait() != pmt_t())
- ;
- }
-
-} /* namespace gruel */
diff --git a/gruel/src/lib/thread.cc b/gruel/src/lib/thread.cc
deleted file mode 100644
index a5116b687b..0000000000
--- a/gruel/src/lib/thread.cc
+++ /dev/null
@@ -1,226 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gruel/thread.h>
-
-#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
-
-#include <Windows.h>
-
-namespace gruel {
-
- gr_thread_t
- get_current_thread_id()
- {
- return GetCurrentThread();
- }
-
- void
- thread_bind_to_processor(int n)
- {
- std::vector<int> mask(1, n);
- thread_bind_to_processor(get_current_thread_id(), mask);
- }
-
- void
- thread_bind_to_processor(const std::vector<int> &mask)
- {
- thread_bind_to_processor(get_current_thread_id(), mask);
- }
-
- void
- thread_bind_to_processor(gr_thread_t thread, int n)
- {
- std::vector<int> mask(1, n);
- thread_bind_to_processor(thread, mask);
- }
-
- void
- thread_bind_to_processor(gr_thread_t thread, const std::vector<int> &mask)
- {
- //DWORD_PTR mask = (1 << n);
- DWORD_PTR dword_mask = 0;
-
- std::vector<int> _mask = mask;
- std::vector<int>::iterator itr;
- for(itr = _mask.begin(); itr != _mask.end(); itr++)
- dword_mask |= (1 << (*itr));
-
- DWORD_PTR ret = SetThreadAffinityMask(thread, dword_mask);
- if(ret == 0) {
- std::stringstream s;
- s << "thread_bind_to_processor failed with error: " << GetLastError() << std::endl;
- throw std::runtime_error(s.str());
- }
- }
-
- void
- thread_unbind()
- {
- thread_unbind(get_current_thread_id());
- }
-
- void
- thread_unbind(gr_thread_t thread)
- {
- DWORD_PTR dword_mask = sizeof(DWORD_PTR) - 1;
- DWORD_PTR ret = SetThreadAffinityMask(thread, dword_mask);
- if(ret == 0) {
- std::stringstream s;
- s << "thread_unbind failed with error: " << GetLastError() << std::endl;
- throw std::runtime_error(s.str());
- }
- }
-} /* namespace gruel */
-
-#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
-
-namespace gruel {
-
- gr_thread_t
- get_current_thread_id()
- {
- // Not implemented on OSX
- }
-
- void
- thread_bind_to_processor(int n)
- {
- // Not implemented on OSX
- }
-
- void
- thread_bind_to_processor(gr_thread_t thread, int n)
- {
- // Not implemented on OSX
- }
-
- void
- thread_bind_to_processor(const std::vector<int> &mask)
- {
- // Not implemented on OSX
- }
-
- void
- thread_bind_to_processor(gr_thread_t thread, const std::vector<int> &mask)
- {
- // Not implemented on OSX
- }
-
- void
- thread_unbind()
- {
- // Not implemented on OSX
- }
-
- void
- thread_unbind(gr_thread_t thread)
- {
- // Not implemented on OSX
- }
-} /* namespace gruel */
-
-#else
-
-#include <sstream>
-#include <stdexcept>
-#include <pthread.h>
-
-namespace gruel {
-
- gr_thread_t
- get_current_thread_id()
- {
- return pthread_self();
- }
-
- void
- thread_bind_to_processor(int n)
- {
- std::vector<int> mask(1, n);
- thread_bind_to_processor(get_current_thread_id(), mask);
- }
-
- void
- thread_bind_to_processor(const std::vector<int> &mask)
- {
- thread_bind_to_processor(get_current_thread_id(), mask);
- }
-
- void
- thread_bind_to_processor(gr_thread_t thread, int n)
- {
- std::vector<int> mask(1, n);
- thread_bind_to_processor(thread, mask);
- }
-
- void
- thread_bind_to_processor(gr_thread_t thread, const std::vector<int> &mask)
- {
- cpu_set_t set;
- size_t len = sizeof(cpu_set_t);
- std::vector<int> _mask = mask;
- std::vector<int>::iterator itr;
-
- CPU_ZERO(&set);
- for(itr = _mask.begin(); itr != _mask.end(); itr++)
- CPU_SET(*itr, &set);
-
- int ret = pthread_setaffinity_np(thread, len, &set);
- if(ret != 0) {
- std::stringstream s;
- s << "thread_bind_to_processor failed with error: " << ret << std::endl;
- throw std::runtime_error(s.str());
- }
- }
-
- void
- thread_unbind()
- {
- thread_unbind(get_current_thread_id());
- }
-
- void
- thread_unbind(gr_thread_t thread)
- {
- cpu_set_t set;
- size_t len = sizeof(cpu_set_t);
-
- CPU_ZERO(&set);
- long ncpus = sysconf(_SC_NPROCESSORS_ONLN);
- for(long n = 0; n < ncpus; n++) {
- CPU_SET(n, &set);
- }
-
- int ret = pthread_setaffinity_np(thread, len, &set);
- if(ret != 0) {
- std::stringstream s;
- s << "thread_unbind failed with error: " << ret << std::endl;
- throw std::runtime_error(s.str());
- }
- }
-} /* namespace gruel */
-
-#endif
diff --git a/gruel/src/lib/thread_group.cc b/gruel/src/lib/thread_group.cc
deleted file mode 100644
index 9e8ded4dfc..0000000000
--- a/gruel/src/lib/thread_group.cc
+++ /dev/null
@@ -1,99 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright (C) 2001-2003 William E. Kempf
- * Copyright (C) 2007 Anthony Williams
- * Copyright 2008 Free Software Foundation, Inc.
- *
- * Distributed under the Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- */
-
-/*
- * This was extracted from Boost 1.35.0 and fixed.
- */
-
-#include <gruel/thread_group.h>
-
-namespace gruel
-{
- thread_group::thread_group()
- {
- }
-
- thread_group::~thread_group()
- {
- // We shouldn't have to scoped_lock here, since referencing this object
- // from another thread while we're deleting it in the current thread is
- // going to lead to undefined behavior any way.
- for (std::list<boost::thread*>::iterator it = m_threads.begin();
- it != m_threads.end(); ++it)
- {
- delete (*it);
- }
- }
-
- boost::thread* thread_group::create_thread(const boost::function0<void>& threadfunc)
- {
- // No scoped_lock required here since the only "shared data" that's
- // modified here occurs inside add_thread which does scoped_lock.
- std::auto_ptr<boost::thread> thrd(new boost::thread(threadfunc));
- add_thread(thrd.get());
- return thrd.release();
- }
-
- void thread_group::add_thread(boost::thread* thrd)
- {
- boost::lock_guard<boost::shared_mutex> guard(m_mutex);
-
- // For now we'll simply ignore requests to add a thread object multiple
- // times. Should we consider this an error and either throw or return an
- // error value?
- std::list<boost::thread*>::iterator it = std::find(m_threads.begin(),
- m_threads.end(), thrd);
- BOOST_ASSERT(it == m_threads.end());
- if (it == m_threads.end())
- m_threads.push_back(thrd);
- }
-
- void thread_group::remove_thread(boost::thread* thrd)
- {
- boost::lock_guard<boost::shared_mutex> guard(m_mutex);
-
- // For now we'll simply ignore requests to remove a thread object that's
- // not in the group. Should we consider this an error and either throw or
- // return an error value?
- std::list<boost::thread*>::iterator it = std::find(m_threads.begin(),
- m_threads.end(), thrd);
- BOOST_ASSERT(it != m_threads.end());
- if (it != m_threads.end())
- m_threads.erase(it);
- }
-
- void thread_group::join_all()
- {
- boost::shared_lock<boost::shared_mutex> guard(m_mutex);
- for (std::list<boost::thread*>::iterator it = m_threads.begin();
- it != m_threads.end(); ++it)
- {
- (*it)->join();
- }
- }
-
- void thread_group::interrupt_all()
- {
- boost::shared_lock<boost::shared_mutex> guard(m_mutex);
- for(std::list<boost::thread*>::iterator it=m_threads.begin(),end=m_threads.end();
- it!=end;
- ++it)
- {
- (*it)->interrupt();
- }
- }
-
- size_t thread_group::size() const
- {
- boost::shared_lock<boost::shared_mutex> guard(m_mutex);
- return m_threads.size();
- }
-
-} // namespace gruel