74 explicit operator bool()
const {
100 MUST_USE_RESULT bool registerCallback(uint16_t nVendorId, uint16_t nProductId,
101 callback_t callback, Registration& registration);
104 MUST_USE_RESULT bool registerCallback(uint8_t nClass, uint8_t nSubclass, uint8_t nProtocol,
105 callback_t callback, Registration& registration);
108 bool probeDevice(
Device* pDeviceBase);
110#if HOSTED && PEDIGREE_HOSTED_SMOKE_TESTS
111 static bool runHostedRegistrationRegression();
113#if PEDIGREE_CONCURRENCY_SMOKE_TESTS
114 static bool runQemuRegistrationRegression();
116#if (HOSTED && PEDIGREE_HOSTED_SMOKE_TESTS) || PEDIGREE_CONCURRENCY_SMOKE_TESTS
117 bool invokeCallbackForTest(
size_t callbackIndex = 0);
118 size_t callbackCountForTest();
119 bool callbackStorageEmptyForTest();
126 struct ActiveInvocation;
134 bool registerCallbackItem(CallbackItem* item, Registration& registration,
bool reprobe);
135 bool unregisterCallback(CallbackItem* item);
136 void retireBindings(CallbackItem* item,
bool reprobe);
141 bool acquireCallback(
UsbDevice* device,
size_t afterSequence, CallbackItem*& item,
142 callback_t& callback,
size_t& sequence, ActiveInvocation& invocation);
143 void finishCallback(CallbackItem* item, ActiveInvocation& invocation);
144 static void* currentInvocationOwner();
145 bool isCallbackContext(
void* owner)
const;
146 bool inCurrentCallbackContext();
147#if (HOSTED && PEDIGREE_HOSTED_SMOKE_TESTS) || PEDIGREE_CONCURRENCY_SMOKE_TESTS
148 static bool runRegistrationRegression();
155 void reprobeDevices(
Device* pParent);
159 size_t m_CallbackCount;
162 size_t m_NextCallbackSequence;