This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Using __kuser_cmpxchg


Andrew Haley writes:
 > Paul Brook writes:
 >  > > + ? arm*-linux-gnu)
 >  >
 >  > Should probably be
 >  >
 >  >   arm*-linux*)
 >
 > OK, will do.
 >
 >  > > +/* Atomic compare and exchange.  These sequences are not actually
 >  > > +   atomic; there is a race if *ADDR != OLD_VAL and we are preempted
 >  >
 >  > For recent kernels there is a kernel helper you should use.
 >  > See __kernel_cmpxchg in linux/arch/arm/kernel/entry-armv.S
 >  >
 >  > Any kernel capable of running on armv6/v7 hardware should have this helper.
 >  > So should all targets on targets that define __ARM_EABI__
 >  >
 >  > So I suggest using the kernel helper for EABI and v6/v7 libraries, everyone
 >  > else will have to make do with the crappy old sequence.
 >
 > OK, I'll investigate this as soon as I get some time.

It seems to be impossible to use this kernel helper because

 *    - A failure might be transient, i.e. it is possible, although unlikely,
 *      that "failure" be returned even if *ptr == oldval.

If this were to happen, the logic used to block and unblock threads
wouldn't work.

Andrew.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]