Re: Why is the xadd instruction used to get atomic operation?

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

 



Hi...

On Thu, Dec 15, 2011 at 11:05, Parmenides <mobile.parmenides@xxxxxxxxx> wrote:
> The xadd will store v->counter into i, and store v->counter+i into
> v->counter. I wonder why we bother to obtain v->counter atomically. I
> try to modify the asm with the following code:
>
> static __inline__ int atomic_add_return(int i, atomic_t *v)
> {
>     __asm__ __volatile__(
>          LOCK "addl %1, %0;"
>          : "m"(v->counter)
>          : "=r"(i), "m"(v->counter));
>     return v->counter;
> }
>
> Does my code may cause some problems concerning atomic operation?

Wikipedia explains about it:
http://en.wikipedia.org/wiki/Fetch-and-add

Although I am not also so clear, it says something related to
returning original value memory location. Maybe that's needed since we
pass v by reference, not by value

-- 
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux