Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1104 → Rev 1103

/kernel/trunk/arch/sparc64/include/atomic.h
30,8 → 30,9
#define __sparc64_ATOMIC_H__
 
#include <arch/types.h>
#include <typedefs.h>
 
typedef struct { volatile __u64 count; } atomic_t;
 
/** Atomic add operation.
*
* Use atomic compare and swap operation to atomically add signed value.
41,7 → 42,7
*
* @return Value of the atomic variable as it existed before addition.
*/
static inline long atomic_add(atomic_t *val, int i)
static inline count_t atomic_add(atomic_t *val, int i)
{
__u64 a, b;
volatile __u64 x = (__u64) &val->count;
61,22 → 62,22
return a;
}
 
static inline long atomic_preinc(atomic_t *val)
static inline count_t atomic_preinc(atomic_t *val)
{
return atomic_add(val, 1) + 1;
}
 
static inline long atomic_postinc(atomic_t *val)
static inline count_t atomic_postinc(atomic_t *val)
{
return atomic_add(val, 1);
}
 
static inline long atomic_predec(atomic_t *val)
static inline count_t atomic_predec(atomic_t *val)
{
return atomic_add(val, -1) - 1;
}
 
static inline long atomic_postdec(atomic_t *val)
static inline count_t atomic_postdec(atomic_t *val)
{
return atomic_add(val, -1);
}
91,4 → 92,14
(void) atomic_add(val, -1);
}
 
static inline void atomic_set(atomic_t *val, __u64 i)
{
val->count = i;
}
 
static inline __u64 atomic_get(atomic_t *val)
{
return val->count;
}
 
#endif