Joe Davida - 2002-01-18

In file ...../opengfs-0.0.91/src/include/osi_user.h

Could someone explain how these operations can be called 'atomic' ?

The test_and_set macro is only a set. How can it fail?

Even with IPL set at the highest, these will fail 'atomicity'
on SMP platforms.

Other atomic macros for test&set and test&clearhave been
implemented in platform specific assembly instructions
(sometimes after purging a specific cache line).

Anyone running opengfs with DMEP on SMP Linux with at least 2 cpus?

.
.
.
.
/*  Atomic Bit Manipulation interface  */

#define test_bit(nr, bitfield) (*bitfield & (1 << nr))
#define set_bit(nr, bitfield) (*bitfield |= (1 << nr))
#define clear_bit(nr, bitfield) (*bitfield &= ~(1 << nr))
#define test_and_set_bit(nr, bitfield) (*bitfield |= (1 << nr))
#define test_and_clear_bit(nr, bitfield) (*bitfield &= ~(1 << nr))