[Voyageurs] Create an abstraction for managing TRBs.

This commit is contained in:
Drew Galbraith 2024-02-13 19:39:55 -08:00
parent 2228b5b52e
commit b41784b938
8 changed files with 78 additions and 40 deletions

View file

@ -0,0 +1,26 @@
#pragma once
#include <glacier/container/array_view.h>
#include <mammoth/util/memory_region.h>
#include "xhci/xhci.h"
class TrbRing {
public:
TrbRing();
uint64_t PhysicalAddress() { return phys_address_; }
protected:
uint64_t phys_address_;
mmth::OwnedMemoryRegion page_;
glcr::ArrayView<XhciTrb> trb_list_;
};
class TrbRingWriter : public TrbRing {
public:
void EnqueueTrb(const XhciTrb& trb);
private:
uint64_t enqueue_ptr_ = 0;
};