00001 #ifndef __ORO_ARCH_INTERFACE__ 00002 #define __ORO_ARCH_INTERFACE__ 00003 00025 struct oro_atomic_t_interface; 00026 typedef struct oro_atomic_t_interface oro_atomic_t; 00027 00032 void ORO_ATOMIC_SETUP(oro_atomic_t* a, int n); 00033 00038 void ORO_ATOMIC_CLEANUP(oro_atomic_t* a); 00039 00044 int oro_atomic_read(oro_atomic_t* a); 00045 00050 void oro_atomic_set(oro_atomic_t* a, int n); 00051 00055 void oro_atomic_add(oro_atomic_t *a, int n); 00056 00060 void oro_atomic_sub(int n, oro_atomic_t *a, int n); 00061 00065 int oro_atomic_sub_and_test(oro_atomic_t *a, int n); 00066 00070 void oro_atomic_inc(oro_atomic_t *a); 00071 00075 void oro_atomic_dec(oro_atomic_t *a); 00076 00080 int oro_atomic_dec_and_test(oro_atomic_t *a); 00081 00085 int oro_atomic_inc_and_test(oro_atomic_t *a); 00086 00095 int oro_cmpxchg(void volatile* ptr, unsigned long o, unsigned long n); 00096 00097 00098 #endif // __ORO_ARCH_INTERFACE__