MDEV-7437 remove suport for "atomics" with rwlocks

This commit is contained in:
Sergei Golubchik 2015-01-12 17:03:45 +01:00
commit e695db0f2d
40 changed files with 143 additions and 740 deletions

View file

@ -149,34 +149,22 @@ class time_collector
{
public:
time_collector(utility& u) : m_utility(&u)
{
my_atomic_rwlock_init(&time_collector_lock);
}
{ }
~time_collector()
{
my_atomic_rwlock_destroy(&time_collector_lock);
}
{ }
uint32 count(uint index)
{
my_atomic_rwlock_rdlock(&time_collector_lock);
uint32 result= my_atomic_load32((int32*)&m_count[index]);
my_atomic_rwlock_rdunlock(&time_collector_lock);
return result;
return my_atomic_load32((int32*)&m_count[index]);
}
uint64 total(uint index)
{
my_atomic_rwlock_rdlock(&time_collector_lock);
uint64 result= my_atomic_load64((int64*)&m_total[index]);
my_atomic_rwlock_rdunlock(&time_collector_lock);
return result;
return my_atomic_load64((int64*)&m_total[index]);
}
public:
void flush()
{
my_atomic_rwlock_wrlock(&time_collector_lock);
memset((void*)&m_count,0,sizeof(m_count));
memset((void*)&m_total,0,sizeof(m_total));
my_atomic_rwlock_wrunlock(&time_collector_lock);
}
void collect(uint64 time)
{
@ -185,20 +173,14 @@ public:
{
if(m_utility->bound(i) > time)
{
my_atomic_rwlock_wrlock(&time_collector_lock);
my_atomic_add32((int32*)(&m_count[i]), 1);
my_atomic_add64((int64*)(&m_total[i]), time);
my_atomic_rwlock_wrunlock(&time_collector_lock);
break;
}
}
}
private:
utility* m_utility;
/* The lock for atomic operations on m_count and m_total. Only actually
used on architectures that do not have atomic implementation of atomic
operations. */
my_atomic_rwlock_t time_collector_lock;
uint32 m_count[OVERALL_POWER_COUNT + 1];
uint64 m_total[OVERALL_POWER_COUNT + 1];
};