class RequestProcessor
Defined at line 19 of file ../../src/devices/block/drivers/ufs/request_processor.h
Protected Members
mutex slot_lock_
uint32_t allocated_slots_mask_
RequestList slots_
Ufs & controller_
MmioView register_
duration timeout_
atomic disable_completion_
Public Methods
template <typename Processor, typename Descriptor>
zx::result<std::unique_ptr<Processor>> Create (Ufs &ufs,zx::unowned_btibti,const fdf::MmioViewmmio,uint8_tentry_count)
Defined at line 16 of file ../../src/devices/block/drivers/ufs/request_processor.cc
uint8_t GetSlotCount ()
Defined at line 42 of file ../../src/devices/block/drivers/ufs/request_processor.h
RequestList & GetRequestListLocked ()
For testing
Defined at line 45 of file ../../src/devices/block/drivers/ufs/request_processor.h
const RequestList & GetRequestListLocked ()
Defined at line 46 of file ../../src/devices/block/drivers/ufs/request_processor.h
std::mutex & GetSlotLock ()
Defined at line 47 of file ../../src/devices/block/drivers/ufs/request_processor.h
void DisableCompletion ()
Defined at line 50 of file ../../src/devices/block/drivers/ufs/request_processor.h
void EnableCompletion ()
Defined at line 51 of file ../../src/devices/block/drivers/ufs/request_processor.h
zx::result<> Init ()
Write the address of the list to the list base address register and set the run-stop register.
uint32_t ProcessCompletionOfIoRequests ()
Check all slots to process completed requests. This function returns the number of completed
requests. This function is called by the ISR.
void RequestProcessor (RequestListrequest_list,Ufs &ufs,zx::unowned_btibti,const fdf::MmioViewmmio,uint32_tslot_count)
Defined at line 21 of file ../../src/devices/block/drivers/ufs/request_processor.h
void ~RequestProcessor ()
Defined at line 28 of file ../../src/devices/block/drivers/ufs/request_processor.h
void SetTimeout (zx::duration timeout)
Defined at line 48 of file ../../src/devices/block/drivers/ufs/request_processor.h
zx::duration GetTimeout ()
Defined at line 49 of file ../../src/devices/block/drivers/ufs/request_processor.h
Protected Methods
zx::unowned_bti & GetBti ()
Defined at line 54 of file ../../src/devices/block/drivers/ufs/request_processor.h
zx::result<uint8_t> ReserveSlot ()
Get the number of the free slot and mark it as |SlotState::kReserved|.
Defined at line 55 of file ../../src/devices/block/drivers/ufs/request_processor.cc
void SetSlotStateLocked (uint8_t slot_num, SlotState state)
Defined at line 56 of file ../../src/devices/block/drivers/ufs/request_processor.h
template <typename Callback>
void ForEachAllocatedSlotLocked (Callback && callback, uint32_t excluded_mask)
Defined at line 67 of file ../../src/devices/block/drivers/ufs/request_processor.h
zx::result<> ClearSlot (RequestSlot & request_slot)
Defined at line 90 of file ../../src/devices/block/drivers/ufs/request_processor.cc
zx::result<> ClearSlotLocked (RequestSlot & request_slot)
Defined at line 73 of file ../../src/devices/block/drivers/ufs/request_processor.cc
void ReclaimTimedOutSlotsLocked ()
Defined at line 43 of file ../../src/devices/block/drivers/ufs/request_processor.cc
void RingRequestDoorbell (uint8_t slot_num)
Ring the door bell.
Defined at line 107 of file ../../src/devices/block/drivers/ufs/request_processor.cc
void RingRequestDoorbellLocked (uint8_t slot_num)
Defined at line 95 of file ../../src/devices/block/drivers/ufs/request_processor.cc