mirror of
https://github.com/kanjitalk755/macemu.git
synced 2024-10-16 01:23:50 +00:00
atomic spcflags
This commit is contained in:
parent
bd6eaf680a
commit
3a033cf79b
@ -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 */
|
||||||
|
Loading…
Reference in New Issue
Block a user