mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-30 00:31:14 +00:00
Kernel: Stop adopting non-heap memory into OwnPtrs in VirtIO::Queues
This commit is contained in:
parent
d65347d39d
commit
17584d8a84
Notes:
sideshowbarker
2024-07-17 20:31:58 +09:00
Author: https://github.com/IdanHo Commit: https://github.com/SerenityOS/serenity/commit/17584d8a845 Pull-request: https://github.com/SerenityOS/serenity/pull/12037
|
@ -25,9 +25,9 @@ Queue::Queue(u16 queue_size, u16 notify_offset)
|
|||
// TODO: ensure alignment!!!
|
||||
u8* ptr = m_queue_region->vaddr().as_ptr();
|
||||
memset(ptr, 0, m_queue_region->size());
|
||||
m_descriptors = adopt_own_if_nonnull(reinterpret_cast<QueueDescriptor*>(ptr));
|
||||
m_driver = adopt_own_if_nonnull(reinterpret_cast<QueueDriver*>(ptr + size_of_descriptors));
|
||||
m_device = adopt_own_if_nonnull(reinterpret_cast<QueueDevice*>(ptr + size_of_descriptors + size_of_driver));
|
||||
m_descriptors = reinterpret_cast<QueueDescriptor*>(ptr);
|
||||
m_driver = reinterpret_cast<QueueDriver*>(ptr + size_of_descriptors);
|
||||
m_device = reinterpret_cast<QueueDevice*>(ptr + size_of_descriptors + size_of_driver);
|
||||
|
||||
for (auto i = 0; i + 1 < queue_size; i++) {
|
||||
m_descriptors[i].next = i + 1; // link all of the descriptors in a line
|
||||
|
|
|
@ -37,9 +37,9 @@ public:
|
|||
void enable_interrupts();
|
||||
void disable_interrupts();
|
||||
|
||||
PhysicalAddress descriptor_area() const { return to_physical(m_descriptors.ptr()); }
|
||||
PhysicalAddress driver_area() const { return to_physical(m_driver.ptr()); }
|
||||
PhysicalAddress device_area() const { return to_physical(m_device.ptr()); }
|
||||
PhysicalAddress descriptor_area() const { return to_physical(m_descriptors); }
|
||||
PhysicalAddress driver_area() const { return to_physical(m_driver); }
|
||||
PhysicalAddress device_area() const { return to_physical(m_device); }
|
||||
|
||||
bool new_data_available() const;
|
||||
bool has_free_slots() const;
|
||||
|
@ -90,9 +90,9 @@ private:
|
|||
u16 m_used_tail { 0 };
|
||||
u16 m_driver_index_shadow { 0 };
|
||||
|
||||
OwnPtr<QueueDescriptor> m_descriptors { nullptr };
|
||||
OwnPtr<QueueDriver> m_driver { nullptr };
|
||||
OwnPtr<QueueDevice> m_device { nullptr };
|
||||
QueueDescriptor* m_descriptors { nullptr };
|
||||
QueueDriver* m_driver { nullptr };
|
||||
QueueDevice* m_device { nullptr };
|
||||
OwnPtr<Memory::Region> m_queue_region;
|
||||
Spinlock m_lock;
|
||||
|
||||
|
|
Loading…
Reference in a new issue