Exemple #1
0
 void enterMeasurement() const{
     l4_utcb_t * utcb = l4_utcb();
     _lock.enter();
     while(!_locked.empty() && (_measuring.find(utcb) == _measuring.end())){
        _lock.leave();
         l4_sleep(0);
         _lock.enter();
     }
     ++_measuring[utcb];
    _lock.leave();
 }
Exemple #2
0
 void enterExclusive() const {
     l4_utcb_t * utcb = l4_utcb();
     _lock.enter();
     while(!_locked.empty() && _locked.find(utcb) == _locked.end()){
        _lock.leave();
         l4_sleep(0);
         _lock.enter();
     }
     ++_locked[utcb];
     while(!_measuring.empty()){
        _lock.leave();
         l4_sleep(0);
         _lock.enter();
     }
    _lock.leave();
 }
Exemple #3
0
 void addMeasurement(const l4_uint32_t id, l4_uint64_t value){
     GET_STATS.enterMeasurement();
     _item_map_mutex.enter();
     item_map_t::iterator iter = _item_map.find(id);
     _item_map_mutex.leave();
     if(iter != _item_map.end()){
         iter->second.addMeasurement(value);
     } else {
         _item_map_mutex.enter();
         Item & item = _item_map[id];
         _item_map_mutex.leave();
         item.addMeasurement(value);
         std::stringstream s;
         s << "0x" << std::hex << id;
         item.setName(s.str());
     }
     GET_STATS.leaveMeasurement();
 }
Exemple #4
0
 void leaveMeasurement() const{
     l4_utcb_t * utcb = l4_utcb();
     _lock.enter();
     if(--_measuring[utcb] == 0) _measuring.erase(utcb);
    _lock.leave();
 }
Exemple #5
0
 void leaveExclusive() const{
     l4_utcb_t * utcb = l4_utcb();
     _lock.enter();
     if(--_locked[utcb] == 0) _locked.erase(utcb);
    _lock.leave();
 }