diff options
author | Josh Blum | 2013-06-15 23:33:18 -0700 |
---|---|---|
committer | Josh Blum | 2013-06-15 23:33:18 -0700 |
commit | e6d6d285cfd7f4d8f63c45bc77cb53943a04a5eb (patch) | |
tree | 904c042399ee0cac75b3f66483269feb836dca27 /lib/gras_impl | |
parent | f6140c831e1585eed07d35c17a2792f214e94636 (diff) | |
download | sandhi-e6d6d285cfd7f4d8f63c45bc77cb53943a04a5eb.tar.gz sandhi-e6d6d285cfd7f4d8f63c45bc77cb53943a04a5eb.tar.bz2 sandhi-e6d6d285cfd7f4d8f63c45bc77cb53943a04a5eb.zip |
gras: dont update item counts until after work
This lets API calls like get_consumed/produced
keep their values until after work is called.
The propagate tags overload need this to work.
Diffstat (limited to 'lib/gras_impl')
-rw-r--r-- | lib/gras_impl/block_data.hpp | 6 | ||||
-rw-r--r-- | lib/gras_impl/input_buffer_queues.hpp | 5 |
2 files changed, 7 insertions, 4 deletions
diff --git a/lib/gras_impl/block_data.hpp b/lib/gras_impl/block_data.hpp index 170f7c6..8697d48 100644 --- a/lib/gras_impl/block_data.hpp +++ b/lib/gras_impl/block_data.hpp @@ -55,7 +55,6 @@ struct BlockData //buffer queues and ready conditions InputBufferQueues input_queues; OutputBufferQueues output_queues; - std::vector<bool> produce_outputs; BitSet inputs_available; std::vector<time_ticks_t> time_input_not_ready; std::vector<time_ticks_t> time_output_not_ready; @@ -64,7 +63,10 @@ struct BlockData std::vector<bool> input_tags_changed; std::vector<std::vector<Tag> > input_tags; std::vector<size_t> num_input_msgs_read; - std::vector<size_t> num_input_bytes_read; + std::vector<size_t> num_input_items_read; + std::vector<size_t> num_output_items_read; + std::vector<size_t> total_items_consumed; + std::vector<size_t> total_items_produced; std::vector<std::vector<PMCC> > input_msgs; //interruptible thread stuff diff --git a/lib/gras_impl/input_buffer_queues.hpp b/lib/gras_impl/input_buffer_queues.hpp index 7d31b9a..b9bd1b7 100644 --- a/lib/gras_impl/input_buffer_queues.hpp +++ b/lib/gras_impl/input_buffer_queues.hpp @@ -77,7 +77,7 @@ struct InputBufferQueues } //! Call when input bytes consumed by work - void consume(const size_t i, const size_t bytes_consumed); + void consume(const size_t i, const size_t items_consumed); void resize(const size_t size); @@ -330,8 +330,9 @@ GRAS_FORCE_INLINE void InputBufferQueues::push(const size_t i, const SBuffer &bu } -GRAS_FORCE_INLINE void InputBufferQueues::consume(const size_t i, const size_t bytes_consumed) +GRAS_FORCE_INLINE void InputBufferQueues::consume(const size_t i, const size_t items_consumed) { + const size_t bytes_consumed = items_consumed * _items_sizes[i]; ASSERT(not _queues[i].empty()); ASSERT((bytes_consumed % _items_sizes[i]) == 0); SBuffer &front = _queues[i].front(); |