On Fri, Sep 23, 2011 at 06:38:02PM +0200, Julian Andres Klode wrote:
> Introduce two new functions nvec_msg_alloc() and nvec_msg_free()
> that allocate and free message buffers from the internal pool
> of messages.
> 
> Signed-off-by: Julian Andres Klode <[email protected]>
> ---
>  drivers/staging/nvec/nvec.c |   21 +++++++++++++++++++++
>  drivers/staging/nvec/nvec.h |    6 ++++++
>  2 files changed, 27 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/staging/nvec/nvec.c b/drivers/staging/nvec/nvec.c
> index 43a83a9..8a97241 100644
> --- a/drivers/staging/nvec/nvec.c
> +++ b/drivers/staging/nvec/nvec.c
> @@ -17,6 +17,7 @@
>  
>  #include <asm/irq.h>
>  
> +#include <linux/atomic.h>
>  #include <linux/completion.h>
>  #include <linux/interrupt.h>
>  #include <linux/io.h>
> @@ -91,6 +92,26 @@ static int nvec_status_notifier(struct notifier_block *nb,
>       return NOTIFY_OK;
>  }
>  
> +static struct nvec_msg *nvec_msg_alloc(struct nvec_chip *nvec)
> +{
> +     size_t i;
This should be "int i;" not "size_t i;"  It's a number between 0 and
64.  Also it would let you avoid the cast below.

Add a blank line between declarations and code.

> +     for (i = 0; i < NVEC_POOL_SIZE; i++)

Put a '{' for multi-line blocks for style reasons even if it's not
needed for semantic reasons.

> +             if (atomic_xchg(&nvec->msg_pool[i].used, 1) == 0) {
> +                     dev_vdbg(nvec->dev, "INFO: Alloc %u\n", (uint) i);
> +                     return &nvec->msg_pool[i];
> +             }
> +
> +     dev_err(nvec->dev, "could not allocate buffer\n");
> +
> +     return NULL;
> +}
> +
> +static void nvec_msg_free(struct nvec_chip *nvec, struct nvec_msg *msg)
> +{
> +     dev_vdbg(nvec->dev, "INFO: Free %i\n", (int) (msg - nvec->msg_pool));

I don't have a cross compile environment set up so I can't compile
this, but surely (msg - nvec->msg_pool) generates some kind of
compile warning.  I'd think you'd have to cast the struct pointers to
unsigned long or something.  I'm not sure also what the printk tells
us.

> +     atomic_set(&msg->used, 0);
> +}

regards,
dan carpenter

_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel

Reply via email to