virtio: add queue_is_full(), queue_is_empty(), queue_size() hooks.
This commit is contained in:
parent
7416b5878f
commit
33f263cb01
@ -117,6 +117,12 @@ typedef struct {
|
|||||||
size_t readVectorCount, size_t writtenVectorCount,
|
size_t readVectorCount, size_t writtenVectorCount,
|
||||||
virtio_callback_func callback, void *callbackCookie);
|
virtio_callback_func callback, void *callbackCookie);
|
||||||
|
|
||||||
|
bool (*queue_is_full)(virtio_queue queue);
|
||||||
|
|
||||||
|
bool (*queue_is_empty)(virtio_queue queue);
|
||||||
|
|
||||||
|
uint16 (*queue_size)(virtio_queue queue);
|
||||||
|
|
||||||
} virtio_device_interface;
|
} virtio_device_interface;
|
||||||
|
|
||||||
|
|
||||||
|
@ -134,6 +134,31 @@ virtio_queue_request(virtio_queue cookie, const physical_entry *readEntry,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
virtio_queue_is_full(virtio_queue cookie)
|
||||||
|
{
|
||||||
|
VirtioQueue *queue = (VirtioQueue *)cookie;
|
||||||
|
return queue->IsFull();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
virtio_queue_is_empty(virtio_queue cookie)
|
||||||
|
{
|
||||||
|
VirtioQueue *queue = (VirtioQueue *)cookie;
|
||||||
|
return queue->IsEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint16
|
||||||
|
virtio_queue_size(virtio_queue cookie)
|
||||||
|
{
|
||||||
|
VirtioQueue *queue = (VirtioQueue *)cookie;
|
||||||
|
return queue->Size();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark -
|
// #pragma mark -
|
||||||
|
|
||||||
|
|
||||||
@ -222,7 +247,10 @@ virtio_device_interface virtio_device_module = {
|
|||||||
virtio_alloc_queues,
|
virtio_alloc_queues,
|
||||||
virtio_setup_interrupt,
|
virtio_setup_interrupt,
|
||||||
virtio_queue_request,
|
virtio_queue_request,
|
||||||
virtio_queue_request_v
|
virtio_queue_request_v,
|
||||||
|
virtio_queue_is_full,
|
||||||
|
virtio_queue_is_empty,
|
||||||
|
virtio_queue_size
|
||||||
};
|
};
|
||||||
|
|
||||||
virtio_for_controller_interface virtio_for_controller_module = {
|
virtio_for_controller_interface virtio_for_controller_module = {
|
||||||
|
@ -107,6 +107,7 @@ public:
|
|||||||
|
|
||||||
bool IsFull() const { return fRingFree == 0; }
|
bool IsFull() const { return fRingFree == 0; }
|
||||||
bool IsEmpty() const { return fRingFree == fRingSize; }
|
bool IsEmpty() const { return fRingFree == fRingSize; }
|
||||||
|
uint16 Size() const { return fRingSize; }
|
||||||
|
|
||||||
VirtioDevice* Device() { return fDevice; }
|
VirtioDevice* Device() { return fDevice; }
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user