[Cbe-oss-dev] [PATCH 5/10] MARS: task queue push pop cleanup
Kazunori Asayama
asayama at sm.sony.co.jp
Thu Aug 28 15:47:33 EST 2008
Yuji Mano wrote:
> This moves some logic around in task queue push/pop routines in preparation for
> next patch.
>
> Signed-off-by: Yuji Mano <yuji.mano at am.sony.com>
Acked-by: Kazunori Asayama <asayama at sm.sony.co.jp>
>
> ---
> src/host/lib/mars_task_queue.c | 50 ++++++++++++++++++++---------------------
> src/mpu/lib/mars_task_queue.c | 50 ++++++++++++++++++++---------------------
> 2 files changed, 50 insertions(+), 50 deletions(-)
>
> --- a/src/host/lib/mars_task_queue.c
> +++ b/src/host/lib/mars_task_queue.c
> @@ -114,11 +114,6 @@ int mars_task_queue_clear(struct mars_ta
>
> mars_mutex_lock((struct mars_mutex *)queue);
>
> - /* clear the queue count and push/pop ea */
> - queue->count = 0;
> - queue->push_ea = queue->buffer_ea;
> - queue->pop_ea = queue->buffer_ea;
> -
> /* signal all waiting tasks that queue is ready for push */
> for (i = 0; i < queue->push_wait_count; i++)
> workload_queue_signal_send(
> @@ -127,6 +122,11 @@ int mars_task_queue_clear(struct mars_ta
> /* flush all ids from push wait list */
> queue->push_wait_count = 0;
>
> + /* clear the queue count and push/pop ea */
> + queue->count = 0;
> + queue->push_ea = queue->buffer_ea;
> + queue->pop_ea = queue->buffer_ea;
> +
> mars_mutex_unlock((struct mars_mutex *)queue);
>
> return MARS_SUCCESS;
> @@ -137,16 +137,6 @@ static void push_update(struct mars_task
> struct mars_context *mars =
> (struct mars_context *)queue->mars_context_ea;
>
> - /* increment queue count */
> - queue->count++;
> -
> - /* increment queue push ea */
> - queue->push_ea += queue->size;
> -
> - /* wrap to front of queue if necessary */
> - if (queue->push_ea == queue->buffer_ea + (queue->size * queue->depth))
> - queue->push_ea = queue->buffer_ea;
> -
> /* signal waiting task that queue is ready for pop */
> if (queue->pop_wait_count) {
> /* signal waiting task */
> @@ -158,6 +148,16 @@ static void push_update(struct mars_task
> memmove(&queue->pop_wait_id[0], &queue->pop_wait_id[1],
> sizeof(uint16_t) * queue->pop_wait_count);
> }
> +
> + /* increment queue count */
> + queue->count++;
> +
> + /* increment queue push ea */
> + queue->push_ea += queue->size;
> +
> + /* wrap to front of queue if necessary */
> + if (queue->push_ea == queue->buffer_ea + (queue->size * queue->depth))
> + queue->push_ea = queue->buffer_ea;
> }
>
> static int push(struct mars_task_queue *queue, const void *data, int try)
> @@ -210,16 +210,6 @@ static void pop_update(struct mars_task_
> struct mars_context *mars =
> (struct mars_context *)queue->mars_context_ea;
>
> - /* decrement queue count */
> - queue->count--;
> -
> - /* increment queue pop ea */
> - queue->pop_ea += queue->size;
> -
> - /* wrap to front of queue if necessary */
> - if (queue->pop_ea == queue->buffer_ea + (queue->size * queue->depth))
> - queue->pop_ea = queue->buffer_ea;
> -
> /* signal waiting task that queue is ready for push */
> if (queue->push_wait_count) {
> /* signal waiting task */
> @@ -231,6 +221,16 @@ static void pop_update(struct mars_task_
> memmove(&queue->push_wait_id[0], &queue->push_wait_id[1],
> sizeof(uint16_t) * queue->push_wait_count);
> }
> +
> + /* decrement queue count */
> + queue->count--;
> +
> + /* increment queue pop ea */
> + queue->pop_ea += queue->size;
> +
> + /* wrap to front of queue if necessary */
> + if (queue->pop_ea == queue->buffer_ea + (queue->size * queue->depth))
> + queue->pop_ea = queue->buffer_ea;
> }
>
> static int pop(struct mars_task_queue *queue, void *data, int peek, int try)
> --- a/src/mpu/lib/mars_task_queue.c
> +++ b/src/mpu/lib/mars_task_queue.c
> @@ -113,11 +113,6 @@ int mars_task_queue_clear(uint64_t queue
>
> mars_mutex_lock_get(queue_ea, (struct mars_mutex *)&queue);
>
> - /* clear the queue count and push/pop ea */
> - queue.count = 0;
> - queue.push_ea = queue.buffer_ea;
> - queue.pop_ea = queue.buffer_ea;
> -
> /* signal all waiting tasks that queue is ready for push */
> for (i = 0; i < queue.push_wait_count; i++)
> mars_signal_send(queue.push_wait_id[i]);
> @@ -125,6 +120,11 @@ int mars_task_queue_clear(uint64_t queue
> /* flush all ids from push wait list */
> queue.push_wait_count = 0;
>
> + /* clear the queue count and push/pop ea */
> + queue.count = 0;
> + queue.push_ea = queue.buffer_ea;
> + queue.pop_ea = queue.buffer_ea;
> +
> mars_mutex_unlock_put(queue_ea, (struct mars_mutex *)&queue);
>
> return MARS_SUCCESS;
> @@ -132,16 +132,6 @@ int mars_task_queue_clear(uint64_t queue
>
> static void push_update(void)
> {
> - /* increment queue count */
> - queue.count++;
> -
> - /* increment queue push ea */
> - queue.push_ea += queue.size;
> -
> - /* wrap to front of queue if necessary */
> - if (queue.push_ea == queue.buffer_ea + (queue.size * queue.depth))
> - queue.push_ea = queue.buffer_ea;
> -
> /* signal waiting task that queue is ready for pop */
> if (queue.pop_wait_count) {
> /* signal waiting task */
> @@ -152,6 +142,16 @@ static void push_update(void)
> memmove(&queue.pop_wait_id[0], &queue.pop_wait_id[1],
> sizeof(uint16_t) * queue.pop_wait_count);
> }
> +
> + /* increment queue count */
> + queue.count++;
> +
> + /* increment queue push ea */
> + queue.push_ea += queue.size;
> +
> + /* wrap to front of queue if necessary */
> + if (queue.push_ea == queue.buffer_ea + (queue.size * queue.depth))
> + queue.push_ea = queue.buffer_ea;
> }
>
> static int push(uint64_t queue_ea, const void *data,
> @@ -262,16 +262,6 @@ int mars_task_queue_try_push_begin(uint6
>
> static void pop_update(void)
> {
> - /* decrement queue count */
> - queue.count--;
> -
> - /* increment queue pop ea */
> - queue.pop_ea += queue.size;
> -
> - /* wrap to front of queue if necessary */
> - if (queue.pop_ea == queue.buffer_ea + (queue.size * queue.depth))
> - queue.pop_ea = queue.buffer_ea;
> -
> /* signal waiting task that queue is ready for push */
> if (queue.push_wait_count) {
> /* signal waiting task */
> @@ -282,6 +272,16 @@ static void pop_update(void)
> memmove(&queue.push_wait_id[0], &queue.push_wait_id[1],
> sizeof(uint16_t) * queue.push_wait_count);
> }
> +
> + /* decrement queue count */
> + queue.count--;
> +
> + /* increment queue pop ea */
> + queue.pop_ea += queue.size;
> +
> + /* wrap to front of queue if necessary */
> + if (queue.pop_ea == queue.buffer_ea + (queue.size * queue.depth))
> + queue.pop_ea = queue.buffer_ea;
> }
>
> static int pop(uint64_t queue_ea, void *data,
>
>
>
--
(ASAYAMA Kazunori
(asayama at sm.sony.co.jp))
t
More information about the cbe-oss-dev
mailing list