summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/lib/block_executor.cc
Commit message (Collapse)AuthorAgeFilesLines
* runtime: add logic to call the input_blocked_callback() if a sink blockDavid Sorber2021-10-251-0/+26
| | | | | | determines that it is input blocked Signed-off-by: David Sorber <david.sorber@blacklynx.tech>
* runtime: Custom Buffer/Accelerator Device Support - Milestone 2David Sorber2021-10-251-14/+8
| | | | | | | | | | | | | | | | | Completion of custom buffer/accelerator device support changes: * Improved custom buffer interface by removing awkward memory allocation functions from the block class * Increased flexibility for creating custom buffers by allowing creation of buffer_single_mapped subclasses * Fully incorporated data movement abstraction into the custom buffer interface and the runtime itself; accelerated blocks are no longer directly responsible for their own data movement * Zero copy back-to-back accelerated blocks are now supported (data no longer needs to be moved back to the host between each block) Signed-off-by: David Sorber <david.sorber@blacklynx.tech> Signed-off-by: Mike Mason <mike.mason@blacklynx.tech>
* runtime: Custom Buffer/Accelerator Device Support - Milestone 1David Sorber2021-10-251-38/+168
| | | | | | | | | | | | | | | Custom Buffer/Accelerator Device Support - Milestone 1 changes: * Refactored existing single mapped buffer code and created single mapped buffer abstraction; wrapping within single mapped buffers is handled explicitly by input blocked and output blocked callbacks that are called from block_executor * Added simple custom buffer allocation interface (NOTE: this interface will change for milestone 2) * Accelerated blocks are still responsible for data transfer but the custom buffer interface eliminates the double copy problem Signed-off-by: David Sorber <david.sorber@blacklynx.tech>
* block_executor: invalid states log errors without debug buildMarcus Müller2021-02-181-7/+3
| | | | | | Clean up includes on the way. Signed-off-by: Marcus Müller <mmueller@gnuradio.org>
* clang-tidy: run full .clang-tidy on C++17 codebaseMarcus Müller2021-01-191-2/+2
| | | | | | | | | | | | | | | | | | | | run /usr/share/clang/run-clang-tidy.py -checks=file '-header-filter=.*' -fix .. from build directory. Then, clang-format -i $(git diff --name-only origin/master) to clang-format changed files. Then, refresh all header hashes in pybind bindings (*/python/bindings/*.cc) Signed-off-by: Marcus Müller <mmueller@gnuradio.org>
* C++14: Use std::make_unique instead of boost::make_uniqueMarcus Müller2021-01-041-1/+0
| | | | | | Also, clean up includes Signed-off-by: Marcus Müller <mmueller@gnuradio.org>
* runtime: replace stderr logging by calls to GR's logging faciltiesMarcus Müller2020-04-131-44/+49
|
* runtime: Remove most manual memory managementThomas Habets2020-04-111-5/+3
| | | | | | The remaining ones: * `pmt_pool.cc`, which is a memory allocator so that makes sense * the tricky and aptly named `sptr_magic.cc`.
* Update license header to SPDX formatdevnulling2020-01-271-13/+1
|
* change rounding method to `lround`Mathias Rasmussen2019-11-171-2/+2
|
* clang-tidy in gnuradio-runtime: use empty() instead of size()!=0Marcus Müller2019-08-221-3/+5
|
* clang-format: Ordering all the includesMarcus Müller2019-08-091-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | clang-format: ordering includes in gnuradio-runtime clang-format: ordering includes in gr-filter clang-format: ordering includes in gr-fft clang-format: ordering includes in gr-audio clang-format: ordering includes in gr-analog clang-format: ordering includes in gr-fec clang-format: ordering includes in gr-wavelet clang-format: ordering includes in gr-zeromq clang-format: ordering includes in gr-vocoder clang-format: ordering includes in gr-video-sdl clang-format: ordering includes in gr-trellis clang-format: ordering includes in gr-blocks clang-format: ordering includes in gr-digital clang-format: ordering includes in gr-uhd clang-format: ordering includes in gr-dtv clang-format: ordering includes in gr-channels clang-format: ordering includes in gr-qtgui clang_format.py: re-enable include reordering
* Tree: clang-format without the include sortingMarcus Müller2019-08-091-428/+442
|
* runtime: Fix tag propagationAndrej Rode2018-11-271-2/+2
| | | | | | | | | During the fix for long long on 32bit architectures a bug was introduced which lead to offset being multiplied by (mp_rrate + one_half). The correct solution is to multiply with mp_rrate and then add one_half. Fixes #2201
* runtime: circumvent long long, uint64_t problems on 32-bit archsAndrej Rode2018-11-131-2/+4
| | | | | | | | C++ bindings for MPIR/GMP don't provide conversion for uint64_t, also known as "long long" on 32-bit architectures. Using the underlying (GMP/MPIR) C library directly allows usage of these types.
* runtime: Use multiprecision rational arithmetic to propagate tagsAndy Walls2018-08-231-13/+41
| | | | | | | | | | | | | | | | | | Avoid floating point precision problems in propagation of tags for the following cases: - Common relative rates that are non-terminating in binary (1/3, 1/5, 1/7, ...) - Large tag offsets - Inexact floating point reciprocals when specifying the relative rate This change to the runtime only fixes the tag propagation problems for blocks with a fixed/unchanging relative rate. This change adds a dependency on the MIPR library (a fork of the GMP library) to perform multiple precision interger rational arithmetic. MIPR was chosen as it purports to maintain a properly working Windows build for cross-platform compatability. Optimizations in MIPR are also targeted to ARM in additional to x86-64.
* Comment typo fixing.luz.paz2018-02-031-1/+1
| | | | Luzpaz went ahead and found typos using `codespell -q 3`.
* gnuradio-runtime: Optimize some buffer[_reader]_sptr grabs and releasesAndy Walls2018-02-031-16/+39
| | | | | | | | | Optimize some reference counted buffer[_reader]_sptr grabs and releases that show up as minor CPU wasters in profiling when there are a lot of tags or some blocks that "return 0" often. At high sample rates (e.g. 160 Msps), this can save ~2% CPU on blocks that propagate a fair number of tags.
* fix: can't pass non-enum integer as enum parameter (#1337)Marcus Müller2017-06-241-2/+2
|
* runtime: executor fixes for tag propagationTom Rondeau2016-06-141-10/+11
| | | | | | | Executor uses information about the number of items produced/consumed to update the relative rate. This makes sure tags are being propagated by all blocks correctly. Needed for pfb_clock_sync to use the correlate_and_sync block's tags.
* runtime: addresses issue 768.Tom Rondeau2016-01-271-2/+15
| | | | | | | | | | | | | Because of the data types in use here, d_ninput_items_required can overflow and become negative, which then causes bad addressing of the input buffer in a block's work function. Even if we were using unsigned types, we might still have situations of overflow; it wouldn't crash in this case but cause wrong addressing, anyways. We might be able to catch and handle this situation better. This fix tests for the condition and shuts down the flowgraph with an error message. Basically, parameters that cause this effect are well out of bounds of what we want to handle, anyways.
* Removing trailing/extra whitespaces before release.Tom Rondeau2014-07-071-4/+4
| | | | We should be more careful about letting these into the code in the future. In emacs, we can use (add-hook 'before-save-hook 'delete-trailing-whitespace).
* Removed old codeEthan Trewhitt2014-02-221-2/+0
|
* Corrected double-to-int conversion in tags propagation that should have ↵Ethan Trewhitt2014-02-221-2/+4
| | | | included rounding behavior
* runtime: add concept up an automatic update_rate to gr::block.Tom Rondeau2013-10-291-11/+12
| | | | | | When enabled, uses nitems_written/nitems_read to update the relative_rate of a block. Useful for blocks that change their relative rate based on activity in the work function. Disabled by default. digital: PFB clock sync blocks set update_rate to True.
* runtime: executor uses information about the numer items produced/consumed ↵Tom Rondeau2013-10-291-5/+16
| | | | to update the relative rate. This makes sure tags are being propagated by all blocks correctly. Needed for pfb_clock_sync to use the correlate_and_sync block's tags.
* runtime: makes sure if capping to max_noutput_items with output_multiple ↵Tom Rondeau2013-06-271-1/+3
| | | | that the value is always an output_multiple.
* Merge branch 'next' into runtime_pimplJohnathan Corgan2013-05-121-4/+4
| | | | | | | | | | | | | | | | | | Catches up runtime_pimpl branch with changes on next since the initial branch start. Conflicts: gnuradio-runtime/include/gnuradio/constants.h gnuradio-runtime/include/gnuradio/tags.h gnuradio-runtime/include/gr_block_detail.h gnuradio-runtime/include/gr_buffer.h gnuradio-runtime/lib/CMakeLists.txt gnuradio-runtime/lib/gr_block.cc gnuradio-runtime/lib/gr_block_detail.cc gnuradio-runtime/lib/gr_block_executor.cc gnuradio-runtime/lib/gr_buffer.cc gnuradio-runtime/lib/gr_realtime.cc gr-blocks/lib/interleaved_short_to_complex_impl.cc
* runtime: converting runtime core to gr namespace, gnuradio include dir.Tom Rondeau2013-04-291-0/+489