|
The Pedigree Project 0.1
|
#include <PortChangeRequest.h>
Collaboration diagram for UsbHcd::PortChangeRequest:Classes | |
| class | Completion |
| struct | Observation |
Public Types | |
| enum class | Result { Accepted , Coalesced , TokenBusy , QueueStopped , QueueFull , InvalidPriority } |
Public Member Functions | |
| bool | configure (RequestQueue &queue, size_t priority, uint64_t p1=0, uint64_t p2=0, uint64_t p3=0, uint64_t p4=0, uint64_t p5=0, uint64_t p6=0, uint64_t p7=0) |
| Observation | observe () |
| void | acknowledge (size_t generation) |
| void | stopAfterQuiesce () |
| void | cancel (size_t generation) |
| bool | isIdle () const |
| size_t | observedGeneration () const |
| bool | hasPublicationFailure () const |
Static Public Member Functions | |
| static bool | canAcknowledge (Result result) |
Private Member Functions | |
| void | released () |
| Result | publishGeneration (size_t generation, bool tryIdle) |
| bool | waitUntilAcknowledged (size_t generation) |
| void | consume (size_t generation) |
Static Private Member Functions | |
| static void | advance (Atomic< size_t > &value, size_t target) |
| static Result | translate (RequestQueue::PreallocatedPublishResult result) |
| static void | requestReleased (void *context) |
Private Attributes | |
| RequestQueue::PreallocatedRequest | m_Request |
| RequestQueue * | m_Queue |
| size_t | m_Priority |
| uint64_t | m_Parameters [7] |
| Atomic< size_t > | m_Configured |
| Atomic< size_t > | m_Observed |
| Atomic< size_t > | m_Acknowledged |
| Atomic< size_t > | m_Consumed |
| Atomic< size_t > | m_Stopping |
| Atomic< size_t > | m_ReleaseFailures |
| WaitQueue | m_AcknowledgementWaiters |
One preallocated RequestQueue publication slot for one root-hub port.
configure() fixes the queue payload before the interrupt source is enabled. Each observe() returns a generation that the controller acknowledges only after its hardware W1C has been flushed. Workers cannot sample the port before that generation is acknowledged. Further observations coalesce into one latest-generation follow-up publication without waiting for the current worker to retire its token.
Definition at line 94 of file PortChangeRequest.h.
|
strong |
Definition at line 96 of file PortChangeRequest.h.
|
inline |
Definition at line 134 of file PortChangeRequest.h.
|
inline |
Definition at line 184 of file PortChangeRequest.h.
|
inlinestaticprivate |
Definition at line 232 of file PortChangeRequest.h.
|
inlinestatic |
Definition at line 223 of file PortChangeRequest.h.
|
inline |
Definition at line 211 of file PortChangeRequest.h.
|
inline |
Definition at line 150 of file PortChangeRequest.h.
|
inlineprivate |
Definition at line 319 of file PortChangeRequest.h.
|
inline |
Definition at line 227 of file PortChangeRequest.h.
|
inline |
Definition at line 215 of file PortChangeRequest.h.
|
inline |
Definition at line 170 of file PortChangeRequest.h.
|
inline |
Definition at line 219 of file PortChangeRequest.h.
|
inlineprivate |
Definition at line 283 of file PortChangeRequest.h.
|
inlineprivate |
Definition at line 262 of file PortChangeRequest.h.
|
inlinestaticprivate |
Definition at line 258 of file PortChangeRequest.h.
|
inline |
Releases workers waiting for hardware acknowledgement and suppresses follow-up publication.
The controller must first close and drain the interrupt or timer source that calls observe(). No observe() may overlap or follow this call.
Definition at line 201 of file PortChangeRequest.h.
|
inlinestaticprivate |
Definition at line 241 of file PortChangeRequest.h.
|
inlineprivate |
Definition at line 299 of file PortChangeRequest.h.
|
private |
Definition at line 329 of file PortChangeRequest.h.
|
private |
Definition at line 333 of file PortChangeRequest.h.
|
private |
Definition at line 327 of file PortChangeRequest.h.
|
private |
Definition at line 330 of file PortChangeRequest.h.
|
private |
Definition at line 328 of file PortChangeRequest.h.
|
private |
Definition at line 326 of file PortChangeRequest.h.
|
private |
Definition at line 325 of file PortChangeRequest.h.
|
private |
Definition at line 324 of file PortChangeRequest.h.
|
private |
Definition at line 332 of file PortChangeRequest.h.
|
private |
Definition at line 323 of file PortChangeRequest.h.
|
private |
Definition at line 331 of file PortChangeRequest.h.