HookedDevice* ListHookedDevice::get(const IOHIDevice* device) { if (! lock_) return NULL; IOLockWrapper::ScopedLock lk(lock_); return get_nolock(device); }
bool ListHookedDevice::terminate(const IOHIDevice* device) { if (! lock_) return false; IOLockWrapper::ScopedLock lk(lock_); HookedDevice* p = get_nolock(device); if (! p) return false; bool result = p->terminate(); if (! result) return false; reset(); return true; }
ListHookedDevice::Item* ListHookedDevice::get_replaced_nolock(void) { if (! list_) return NULL; // ---------------------------------------------------------------------- // Search a replaced device first. ListHookedDevice::Item* p = get_nolock(last_); if (p && p->isReplaced()) return p; for (p = static_cast<Item*>(list_->front()); p; p = static_cast<Item*>(p->getnext())) { if (p->isReplaced()) return p; } return NULL; }
HookedDevice* ListHookedDevice::get(void) { if (! lock_) return NULL; IOLockWrapper::ScopedLock lk(lock_); // ---------------------------------------------------------------------- HookedDevice* p = get_nolock(last_); if (p) return p; for (int i = 0; i < MAXNUM; ++i) { p = getItem(i); if (p) return p; } return NULL; }
void ListHookedDevice::erase(IOHIDevice* p) { IOLockWrapper::ScopedLock lk(list_lock_); if (! lk) return; if (! list_) return; ListHookedDevice::Item* item = get_nolock(p); if (! item) return; list_->erase(item); // Call reset whenever the device status is changed. reset(); IOLOG_DEVEL("ListHookedDevice::erase list_->size = %d\n", static_cast<int>(list_->size())); refresh_nolock(); }
void local_storage::get(const string& feature, feature_val1_t& ret) const { scoped_rlock lk(mutex_); get_nolock(feature, ret); }