[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: atomic_add ?
On Mon 9 June 2003 00:37, Linux Newbie wrote:
> Hi,
>
> Can anybody explain what is going on this function?
>
> static __inline__ void atomic_add(int i, atomic_t *v)
> {
> __asm__ __volatile__(
__asm__ tell gcc to insert the following assembly code
__volatile__ forbids gcc to reorder asm instruction (prevents instruction reording )
> LOCK "addl %1,%0"
LOCK locks memory bus until the instruction complete
> :"=m" (v->counter)
v->counter is an output memory operand.
= means output operand
m means memory operand
(...look at info gcc [Simple Constraints})
> :"ir" (i), "m" (v->counter));
i is an input immediate integer operand (ir)
>
> }
>
> I understand that the LOCK (0xf0) makes the instruction atomic on systems
> with multiple cpus. But besides that what is .. "=m", :"ir" etc?
Take a big look at info gcc.
Regards,
Daniele.
-------------------------------------------------------------------------------------------------------------------------------------------------------------
PGP PKEY http://pgp.mit.edu:11371/pks/lookup?search=belch76@libero.it&op=index
ICQ# 104896040
Netphone/Fax 178.605.7063
Homepage http://web.tiscali.it/bellucda
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Daniele Bellucci
--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive: http://mail.nl.linux.org/kernelnewbies/
FAQ: http://kernelnewbies.org/faq/