atomic spcflags

This commit is contained in:
gbeauche 2004-05-20 17:19:59 +00:00
parent bd6eaf680a
commit 3a033cf79b

View File

@ -36,11 +36,12 @@ enum {
class basic_spcflags class basic_spcflags
{ {
uint32 mask; uint32 mask;
spinlock_t lock;
public: public:
basic_spcflags() basic_spcflags()
: mask(0) : mask(0), lock(SPIN_LOCK_UNLOCKED)
{ } { }
bool empty() const bool empty() const
@ -50,16 +51,16 @@ public:
{ return (mask & v); } { return (mask & v); }
void init(uint32 v) void init(uint32 v)
{ mask = v; } { spin_lock(&lock); mask = v; spin_unlock(&lock); }
uint32 get() const uint32 get() const
{ return mask; } { return mask; }
void set(uint32 v) void set(uint32 v)
{ mask |= v; } { spin_lock(&lock); mask |= v; spin_unlock(&lock); }
void clear(uint32 v) void clear(uint32 v)
{ mask &= ~v; } { spin_lock(&lock); mask &= ~v; spin_unlock(&lock); }
}; };
#endif /* SPCFLAGS_H */ #endif /* SPCFLAGS_H */