On 01-Feb-01 Julian Elischer wrote:
> John Baldwin wrote:
>> 
>> On 31-Jan-01 Matthew Emmerton wrote:
>> > Hi all,
>> >
>> > I've taken a look around for an implementation of atomic bit operations in
>> > FreeBSD (similar to Linux' asm/bitopt.h, which include clear_bit() and
>> > test_and_set_bit()) but haven't found any.  The only thing I've found are
>> > the atomic clear/set/add/sub routines in machine/atomic.h.
>> >
>> > Do we have an implementation of atomic bit operations, and if we don't,
>> > would we like some?
>> 
>> Erm, atomic_set() sets's bits, and atomic_clear() clear's bits.  Anything
>> else
>> you might need can be done with atomic_cmpset() anyways.  Also, atomic
>> operations are very hard to debug, esp. to check for race conditions, so
>> there
>> direct use is discouraged.  Instead, use a higher level primitive such as a
>> mutex or other appropriate lock.  There is also talk of a potential abstract
>> refcount type so that simple reference counts can be optimized, though that
>> has
>> been shot down thus far.
> 
> by who?? I really want this....

Mostly Jason Evans, though Justin Gibbs pointed out that it won't work for all
reference counts that one may need, and thus had a problem with having a
refcont(9) API that didn't cover all possible refcounts.

The current implementation for it can be found at
http://www.FreeBSD.org/~jhb/patches/refcount.patch.  It's all done with simple
atomic operations right now.

-- 

John Baldwin <[EMAIL PROTECTED]> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.Baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to