1
1

Pedentic changes in atomic.h :)

Correct the ompi_object_update function to work correctly with the supplied increment.

This commit was SVN r3418.
Этот коммит содержится в:
George Bosilca 2004-10-28 22:33:40 +00:00
родитель e817bbcff6
Коммит 9972663a12
2 изменённых файлов: 7 добавлений и 26 удалений

Просмотреть файл

@ -405,23 +405,7 @@ static inline ompi_object_t *ompi_obj_new(size_t size, ompi_class_t * cls)
*/
static inline int ompi_obj_update(ompi_object_t *object, int inc)
{
#ifdef WIN32
LONG volatile *addr;
addr = (LONG volatile *) &(object->obj_reference_count);
InterlockedExchangeAdd(addr, (LONG) inc);
#elif OMPI_HAVE_ATOMIC
ompi_atomic_add(&(object->obj_reference_count), 1 );
#else
object->obj_reference_count += inc;
#endif
ompi_atomic_add(&(object->obj_reference_count), inc );
return object->obj_reference_count;
}

Просмотреть файл

@ -403,16 +403,14 @@ enum {
static inline int ompi_atomic_trylock(ompi_lock_t *lock)
{
return ompi_atomic_cmpset_acq(&lock->u.lock,
OMPI_ATOMIC_UNLOCKED,
OMPI_ATOMIC_LOCKED);
return ompi_atomic_cmpset_acq( &(lock->u.lock),
OMPI_ATOMIC_UNLOCKED, OMPI_ATOMIC_LOCKED);
}
static inline void ompi_atomic_lock(ompi_lock_t *lock)
{
while( !ompi_atomic_cmpset_acq(&lock->u.lock,
OMPI_ATOMIC_UNLOCKED,
OMPI_ATOMIC_LOCKED) ) {
while( !ompi_atomic_cmpset_acq( &(lock->u.lock),
OMPI_ATOMIC_UNLOCKED, OMPI_ATOMIC_LOCKED) ) {
while (lock->u.lock == OMPI_ATOMIC_LOCKED) {
/* spin */ ;
}
@ -421,9 +419,8 @@ static inline void ompi_atomic_lock(ompi_lock_t *lock)
static inline void ompi_atomic_unlock(ompi_lock_t *lock)
{
ompi_atomic_cmpset_rel(&lock->u.lock,
OMPI_ATOMIC_LOCKED,
OMPI_ATOMIC_UNLOCKED);
ompi_atomic_cmpset_rel( &(lock->u.lock),
OMPI_ATOMIC_LOCKED, OMPI_ATOMIC_UNLOCKED);
}
#endif /* OMPI_HAVE_ATOMIC || OMPI_HAVE_ATOMIC_WIN32 */