stat64: Add stat64_set() operation
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
294e5a4034
commit
7757b55eed
@ -40,6 +40,11 @@ static inline uint64_t stat64_get(const Stat64 *s)
|
|||||||
return qatomic_read__nocheck(&s->value);
|
return qatomic_read__nocheck(&s->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void stat64_set(Stat64 *s, uint64_t value)
|
||||||
|
{
|
||||||
|
qatomic_set__nocheck(&s->value, value);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void stat64_add(Stat64 *s, uint64_t value)
|
static inline void stat64_add(Stat64 *s, uint64_t value)
|
||||||
{
|
{
|
||||||
qatomic_add(&s->value, value);
|
qatomic_add(&s->value, value);
|
||||||
@ -62,6 +67,7 @@ static inline void stat64_max(Stat64 *s, uint64_t value)
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
uint64_t stat64_get(const Stat64 *s);
|
uint64_t stat64_get(const Stat64 *s);
|
||||||
|
void stat64_set(Stat64 *s, uint64_t value);
|
||||||
bool stat64_min_slow(Stat64 *s, uint64_t value);
|
bool stat64_min_slow(Stat64 *s, uint64_t value);
|
||||||
bool stat64_max_slow(Stat64 *s, uint64_t value);
|
bool stat64_max_slow(Stat64 *s, uint64_t value);
|
||||||
bool stat64_add32_carry(Stat64 *s, uint32_t low, uint32_t high);
|
bool stat64_add32_carry(Stat64 *s, uint32_t low, uint32_t high);
|
||||||
|
@ -57,6 +57,17 @@ uint64_t stat64_get(const Stat64 *s)
|
|||||||
return ((uint64_t)high << 32) | low;
|
return ((uint64_t)high << 32) | low;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void stat64_set(Stat64 *s, uint64_t val)
|
||||||
|
{
|
||||||
|
while (!stat64_wrtrylock(s)) {
|
||||||
|
cpu_relax();
|
||||||
|
}
|
||||||
|
|
||||||
|
qatomic_set(&s->high, val >> 32);
|
||||||
|
qatomic_set(&s->low, val);
|
||||||
|
stat64_wrunlock(s);
|
||||||
|
}
|
||||||
|
|
||||||
bool stat64_add32_carry(Stat64 *s, uint32_t low, uint32_t high)
|
bool stat64_add32_carry(Stat64 *s, uint32_t low, uint32_t high)
|
||||||
{
|
{
|
||||||
uint32_t old;
|
uint32_t old;
|
||||||
|
Loading…
Reference in New Issue
Block a user