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);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
qatomic_add(&s->value, value);
|
||||
@ -62,6 +67,7 @@ static inline void stat64_max(Stat64 *s, uint64_t value)
|
||||
}
|
||||
#else
|
||||
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_max_slow(Stat64 *s, uint64_t value);
|
||||
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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
uint32_t old;
|
||||
|
Loading…
Reference in New Issue
Block a user