class RequestProcessor

Defined at line 22 of file ../../src/devices/block/drivers/ufs/request_processor.h

Protected Members

RequestList request_list_
Ufs & controller_
MmioView register_
duration timeout_
mutex slot_allocation_lock_
uint32_t allocated_slots_mask_
uint32_t timed_out_slots_mask_
bool disable_completion_

Public Methods

template <typename Processor, typename Descriptor>
zx::result<std::unique_ptr<Processor>> Create (Ufs & ufs, zx::unowned_bti bti, const fdf::MmioView mmio, uint8_t entry_count)

Defined at line 16 of file ../../src/devices/block/drivers/ufs/request_processor.cc

RequestList & GetRequestList ()

Defined at line 44 of file ../../src/devices/block/drivers/ufs/request_processor.h

void DisableCompletion ()

Defined at line 49 of file ../../src/devices/block/drivers/ufs/request_processor.h

void EnableCompletion ()

Defined at line 50 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 (RequestList request_list, Ufs & ufs, zx::unowned_bti bti, const fdf::MmioView mmio, uint32_t slot_count)

Defined at line 24 of file ../../src/devices/block/drivers/ufs/request_processor.h

void ~RequestProcessor ()

Defined at line 30 of file ../../src/devices/block/drivers/ufs/request_processor.h

void SetTimeout (zx::duration timeout)

For testing

Defined at line 47 of file ../../src/devices/block/drivers/ufs/request_processor.h

zx::duration GetTimeout ()

Defined at line 48 of file ../../src/devices/block/drivers/ufs/request_processor.h

bool IsSlotTimedOut (uint8_t slot_num)

Defined at line 127 of file ../../src/devices/block/drivers/ufs/request_processor.cc

Protected Methods

zx::result<uint8_t> ReserveSlot ()

Get the number of the free slot and mark it as |SlotState::kReserved|.

Defined at line 43 of file ../../src/devices/block/drivers/ufs/request_processor.cc

zx::unowned_bti & GetBti ()

Defined at line 54 of file ../../src/devices/block/drivers/ufs/request_processor.h

zx::result<> ClearSlot (RequestSlot & request_slot)

Defined at line 117 of file ../../src/devices/block/drivers/ufs/request_processor.cc

zx::result<> ClearSlotLocked (RequestSlot & request_slot)

Defined at line 90 of file ../../src/devices/block/drivers/ufs/request_processor.cc

void MarkSlotTimedOut (uint8_t slot_num)

Defined at line 122 of file ../../src/devices/block/drivers/ufs/request_processor.cc

void RingRequestDoorbell (uint8_t slot_num)

Ring the door bell.

Defined at line 132 of file ../../src/devices/block/drivers/ufs/request_processor.cc