1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 02:17:35 +00:00

Kernel: Add individual struct definitions for NVMeSubmission

Only a generic struct definition was present for NVMeSubmission. To
improve type safety and clarity, added an union of NVMeSubmission
structs that are applicable to the command being submitted.
This commit is contained in:
Pankaj Raghav 2022-01-16 17:47:42 +05:30 committed by Idan Horowitz
parent ba7846647c
commit 567b3a4810
5 changed files with 94 additions and 39 deletions

View file

@ -34,8 +34,8 @@ public:
explicit NVMeQueue(u16 qid, u8 irq, u32 q_depth, OwnPtr<Memory::Region> cq_dma_region, NonnullRefPtrVector<Memory::PhysicalPage> cq_dma_page, OwnPtr<Memory::Region> sq_dma_region, NonnullRefPtrVector<Memory::PhysicalPage> sq_dma_page, Memory::TypedMapping<volatile DoorbellRegister> db_regs);
bool is_admin_queue() { return m_admin_queue; };
bool handle_irq(const RegisterState&) override;
void submit_sqe(struct NVMeSubmission&);
u16 submit_sync_sqe(struct NVMeSubmission&);
void submit_sqe(NVMeSubmission&);
u16 submit_sync_sqe(NVMeSubmission&);
void read(AsyncBlockDeviceRequest& request, u16 nsid, u64 index, u32 count);
void write(AsyncBlockDeviceRequest& request, u16 nsid, u64 index, u32 count);
void enable_interrupts() { enable_irq(); };