Пример #1
0
HookedDevice*
ListHookedDevice::get(const IOHIDevice* device)
{
    if (! lock_) return NULL;
    IOLockWrapper::ScopedLock lk(lock_);

    return get_nolock(device);
}
Пример #2
0
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;
}
Пример #3
0
  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;
  }
Пример #4
0
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;
}
Пример #5
0
  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();
  }
Пример #6
0
void local_storage::get(const string& feature, feature_val1_t& ret) const {
  scoped_rlock lk(mutex_);
  get_nolock(feature, ret);
}