RE: atomic operations in user space
From: Li Yang-r58472 <hidden>
Date: 2006-08-29 10:52:10
-----Original Message----- From: Esben Nielsen [mailto:nielsen.esben@gogglemail.com] Sent: Tuesday, August 29, 2006 5:57 PM To: Liu Dave-r63238 Cc: Li Yang-r58472; Esben Nielsen; Xupei Liang;
linuxppc-embedded@ozlabs.org
Subject: RE: atomic operations in user space =20 =20 =20 On Tue, 29 Aug 2006, Liu Dave-r63238 wrote: =20quoted
quoted
quoted
2) These mutexes are based on futexes which requires atomic operations in userspace. These are available on most
architectures.
quoted
Look atquoted
quoted
the glibc code in nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h for instance. Use that and your PPC manual to implement your atomic operations.No matter semaphore or futex, it uses system calls to kernel.=20 There is only a system call if there is congestion - that is the whole
idea
behind the futex. =20quoted
quoted
And the true atomic operation is in kernel not user space.=20 "True" atomic operations are available in user space on most
architectures.
=20quoted
quoted
Maybe it's feasible for other architectures to do atomic operations directly in user space. IMHO, not for powerpc.=20 It is available for PowerPC, but not in POWER and POWER2
instructionsets
according to http://www.nersc.gov/vendor_docs/ibm/asm/lwarx.htm#idx607 It is the same in the ARM world: Atomic instructions was introduced in ARMv6 I believe. Older ARM processors don't have them.
Yes, I do know there are lwarx and stwrx instructions. But there is only one reservation per CPU and reservation can be re-established with no difference. So there are possibilities reservation is broken and reserved again in one atomic block. Task A Task B lwarx ...... lwarx stwrx ..... ..... lwarx stwrx ..... stwrx The addresses of above operations are the same. In this case Thread A thinks that it is atomic as it holds the same reservation, but it is actually broken. Such control flow can't be prevented in user space.
=20quoted
Are you meaning that we didn't do atomic operations directly in user space on powerpc platform ?=20 Well, that is not the conclusion I get either when reading the glibc
code.
Try to look at glibc-2.3.5/sysdeps/powerpc/bits/atomic.h. =20 This is by the way probably what the original post in this thread
wanted
in the first place! =20 Esben =20 =20quoted
-DAve