Arm Community
Site
Search
User
Site
Search
User
Support forums
Arm Development Studio forum
InterlockedExchangeAdd equivalent
Jump...
Cancel
Locked
Locked
Replies
9 replies
Subscribers
119 subscribers
Views
5953 views
Users
0 members are here
Options
Share
More actions
Cancel
Related
How was your experience today?
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion
InterlockedExchangeAdd equivalent
Doug Price
over 12 years ago
Note: This was originally posted on 11th February 2013 at
http://forums.arm.com
I'm porting a Windows application to an ARM® Cortex-A9 based system running Ubuntu 12.04 and I need something equivalent the Windows function InterlockedExchangeAdd(). Is there a function like this available for ARM? If not, can anyone provide some equivalent assembly code?
Parents
Peter Harris
over 12 years ago
Note: This was originally posted on 13th February 2013 at
http://forums.arm.com
It depends what you are using it for TBH. If you are using it like a spinlock (e.g., incref to lock, decref to unlock) then you need barriers after the lock before you touch the memory it is protecting (ensure that the lock is committed before other instructions in the instruction stream can touch the memory) and before the unlock (ensure you've committed data it is protecting to memory before you release the lock). If you don't then you risk race conditions and trampled data (and much painful debugging - trust me).
If you are just using it like a reference count then you might get away with it
Cancel
Vote up
0
Vote down
Cancel
Reply
Peter Harris
over 12 years ago
Note: This was originally posted on 13th February 2013 at
http://forums.arm.com
It depends what you are using it for TBH. If you are using it like a spinlock (e.g., incref to lock, decref to unlock) then you need barriers after the lock before you touch the memory it is protecting (ensure that the lock is committed before other instructions in the instruction stream can touch the memory) and before the unlock (ensure you've committed data it is protecting to memory before you release the lock). If you don't then you risk race conditions and trampled data (and much painful debugging - trust me).
If you are just using it like a reference count then you might get away with it
Cancel
Vote up
0
Vote down
Cancel
Children
No data