Re: Bitops source problem

From: John Hubbard
Date: Thu Jan 17 2008 - 00:47:36 EST


Pravin Nanaware wrote:
Hi,

I was just going through the include file in the /usr/include/asm/bitops.h

The function description describes it as non-atomic but it seems it is not.

static __inline__ void __change_bit(int nr, volatile void * addr)
{
__asm__ __volatile__(
"btcl %1,%0"
:"=m" (ADDR)
:"Ir" (nr));
}

The kernel version I am using is 2.6.9-42. Is it right or am I missing something ?

Thanks,
Pravin


The bitops.h comments are correct: the btc IA-32 instruction is only atomic if used with the lock prefix. The function above does not use the lock prefix, so it is not atomic.

thanks,
John Hubbard

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/