summaryrefslogtreecommitdiff
path: root/lib/block_allocator.cpp
diff options
context:
space:
mode:
authorJosh Blum2012-12-15 09:53:25 -0800
committerJosh Blum2012-12-15 09:53:25 -0800
commitb7c0a59c0a86f289f55935b19efaf448e892eefb (patch)
tree1e641f9816237481124835ac2fbf2792a8b1d50f /lib/block_allocator.cpp
parent6a03c661ede88203ff90eb01bf1e678b87cb6056 (diff)
downloadsandhi-b7c0a59c0a86f289f55935b19efaf448e892eefb.tar.gz
sandhi-b7c0a59c0a86f289f55935b19efaf448e892eefb.tar.bz2
sandhi-b7c0a59c0a86f289f55935b19efaf448e892eefb.zip
work on the buffer queue api
Diffstat (limited to 'lib/block_allocator.cpp')
-rw-r--r--lib/block_allocator.cpp28
1 files changed, 11 insertions, 17 deletions
diff --git a/lib/block_allocator.cpp b/lib/block_allocator.cpp
index 64b3aed..54654ba 100644
--- a/lib/block_allocator.cpp
+++ b/lib/block_allocator.cpp
@@ -58,7 +58,6 @@ void BlockActor::handle_top_alloc(const TopAllocMessage &, const Theron::Address
//allocate output buffers which will also wake up the task
const size_t num_outputs = this->get_num_outputs();
- this->output_buffer_tokens.resize(num_outputs);
for (size_t i = 0; i < num_outputs; i++)
{
const size_t bytes = recommend_length(
@@ -71,7 +70,8 @@ void BlockActor::handle_top_alloc(const TopAllocMessage &, const Theron::Address
SBufferDeleter deleter = boost::bind(&BlockActor::buffer_returner, this, i, _1);
SBufferToken token = SBufferToken(new SBufferDeleter(deleter));
- this->output_buffer_tokens[i] = block_ptr->output_buffer_allocator(i, token, bytes);
+ BufferQueueSptr queue = block_ptr->output_buffer_allocator(i, token, bytes);
+ this->output_queues.set_buffer_queue(i, queue);
InputAllocMessage message;
message.token = SBufferToken(new SBufferDeleter(deleter));
@@ -82,29 +82,23 @@ void BlockActor::handle_top_alloc(const TopAllocMessage &, const Theron::Address
this->Send(0, from); //ACK
}
-SBufferToken Block::output_buffer_allocator(
+BufferQueueSptr Block::output_buffer_allocator(
const size_t,
const SBufferToken &token,
const size_t recommend_length
){
- for (size_t j = 0; j < THIS_MANY_BUFFERS; j++)
- {
- SBufferConfig config;
- config.memory = NULL;
- config.length = recommend_length;
- config.affinity = (*this)->block->buffer_affinity;
- config.token = token;
- SBuffer buff(config);
- std::memset(buff.get_actual_memory(), 0, buff.get_actual_length());
- //buffer derefs here and the token messages it back to the block
- }
- return token;
+ SBufferConfig config;
+ config.memory = NULL;
+ config.length = recommend_length;
+ config.affinity = (*this)->block->buffer_affinity;
+ config.token = token;
+ return BufferQueue::make_pool(config, THIS_MANY_BUFFERS);
}
-SBufferToken Block::input_buffer_allocator(
+BufferQueueSptr Block::input_buffer_allocator(
const size_t,
const SBufferToken &,
const size_t
){
- return SBufferToken(); //null
+ return BufferQueueSptr(); //null
}