Re: [PATCH BlueZ 2/5] shared: Add function to insert element after entry

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Arman,

On Wed, Nov 26, 2014 at 7:26 AM, Arman Uguray <armansito@xxxxxxxxxxxx> wrote:
> This patch adds queue_insert_after, which inserts the given "data"
> after the first occurence of element "entry" in a queue.
> ---
>  src/shared/queue.c | 30 ++++++++++++++++++++++++++++++
>  src/shared/queue.h |  1 +
>  2 files changed, 31 insertions(+)
>
> diff --git a/src/shared/queue.c b/src/shared/queue.c
> index 5329a80..1373d0d 100644
> --- a/src/shared/queue.c
> +++ b/src/shared/queue.c
> @@ -134,6 +134,36 @@ bool queue_push_head(struct queue *queue, void *data)
>         return true;
>  }
>
> +bool queue_insert_after(struct queue *queue, void *entry, void *data)
> +{
> +       struct queue_entry *qentry = NULL, *tmp, *new_entry;
> +
> +       if (!queue)
> +               return false;
> +
> +       for (tmp = queue->head; tmp; tmp = tmp->next)
> +               if (tmp->data == entry)
> +                       qentry = tmp;
> +
> +       if (!qentry)
> +               return false;
> +
> +       new_entry = new0(struct queue_entry, 1);
> +       if (!new_entry)
> +               return false;
> +
> +       new_entry->data = data;
> +       new_entry->next = qentry->next;
> +
> +       if (!qentry->next)
> +               queue->tail = new_entry;
> +
> +       qentry->next = new_entry;
> +       queue->entries++;
> +
> +       return true;
> +}
> +
>  void *queue_pop_head(struct queue *queue)
>  {
>         struct queue_entry *entry;
> diff --git a/src/shared/queue.h b/src/shared/queue.h
> index 709590b..6ddc889 100644
> --- a/src/shared/queue.h
> +++ b/src/shared/queue.h
> @@ -32,6 +32,7 @@ void queue_destroy(struct queue *queue, queue_destroy_func_t destroy);
>
>  bool queue_push_tail(struct queue *queue, void *data);
>  bool queue_push_head(struct queue *queue, void *data);
> +bool queue_insert_after(struct queue *queue, void *entry, void *data);

I guess naming it queue_push_after would be better here.

>  void *queue_pop_head(struct queue *queue);
>  void *queue_peek_head(struct queue *queue);
>  void *queue_peek_tail(struct queue *queue);
> --
> 2.2.0.rc0.207.ga3a616c
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Luiz Augusto von Dentz
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux