From Jérôme Duval <jerome.duval@xxxxxxxxx>:
Jérôme Duval has uploaded this change for review. (
https://review.haiku-os.org/c/haiku/+/2383 ;)
Change subject: virtio: add clear_feature hook.
......................................................................
virtio: add clear_feature hook.
---
M headers/private/virtio/virtio.h
M src/add-ons/kernel/bus_managers/virtio/VirtioDevice.cpp
M src/add-ons/kernel/bus_managers/virtio/VirtioModule.cpp
M src/add-ons/kernel/bus_managers/virtio/VirtioPrivate.h
4 files changed, 22 insertions(+), 0 deletions(-)
git pull ssh://git.haiku-os.org:22/haiku refs/changes/83/2383/1
diff --git a/headers/private/virtio/virtio.h b/headers/private/virtio/virtio.h
index cb0c176..2e17f72 100644
--- a/headers/private/virtio/virtio.h
+++ b/headers/private/virtio/virtio.h
@@ -101,6 +101,8 @@
status_t (*negotiate_features)(virtio_device cookie, uint32 supported,
uint32* negotiated, const char* (*get_feature_name)(uint32));
+ status_t (*clear_feature)(virtio_device cookie, uint32 feature);
+
status_t (*read_device_config)(virtio_device cookie, uint8 offset,
void* buffer, size_t bufferSize);
status_t (*write_device_config)(virtio_device cookie, uint8 offset,
diff --git a/src/add-ons/kernel/bus_managers/virtio/VirtioDevice.cpp
b/src/add-ons/kernel/bus_managers/virtio/VirtioDevice.cpp
index 012f192..2ef33a7 100644
--- a/src/add-ons/kernel/bus_managers/virtio/VirtioDevice.cpp
+++ b/src/add-ons/kernel/bus_managers/virtio/VirtioDevice.cpp
@@ -127,6 +127,14 @@
status_t
+VirtioDevice::ClearFeature(uint32 feature)
+{
+ fFeatures &= ~feature;
+ return fController->write_guest_features(fCookie, fFeatures);
+}
+
+
+status_t
VirtioDevice::ReadDeviceConfig(uint8 offset, void* buffer, size_t bufferSize)
{
return fController->read_device_config(fCookie, offset, buffer,
diff --git a/src/add-ons/kernel/bus_managers/virtio/VirtioModule.cpp
b/src/add-ons/kernel/bus_managers/virtio/VirtioModule.cpp
index 4ad32a0..3bfecb7 100644
--- a/src/add-ons/kernel/bus_managers/virtio/VirtioModule.cpp
+++ b/src/add-ons/kernel/bus_managers/virtio/VirtioModule.cpp
@@ -64,6 +64,16 @@
status_t
+virtio_clear_feature(void* _device, uint32 feature)
+{
+ CALLED();
+ VirtioDevice *device = (VirtioDevice *)_device;
+
+ return device->ClearFeature(feature);
+}
+
+
+status_t
virtio_read_device_config(void* _device, uint8 offset, void* buffer,
size_t bufferSize)
{
@@ -275,6 +285,7 @@
},
virtio_negotiate_features,
+ virtio_clear_feature,
virtio_read_device_config,
virtio_write_device_config,
virtio_alloc_queues,
diff --git a/src/add-ons/kernel/bus_managers/virtio/VirtioPrivate.h
b/src/add-ons/kernel/bus_managers/virtio/VirtioPrivate.h
index 5a1b7db..e91244d 100644
--- a/src/add-ons/kernel/bus_managers/virtio/VirtioPrivate.h
+++ b/src/add-ons/kernel/bus_managers/virtio/VirtioPrivate.h
@@ -48,6 +48,7 @@
status_t
NegotiateFeatures(uint32 supported,
uint32*
negotiated,
const
char* (*get_feature_name)(uint32));
+ status_t ClearFeature(uint32
feature);
status_t ReadDeviceConfig(uint8
offset, void* buffer,
size_t
bufferSize);
--
To view, visit https://review.haiku-os.org/c/haiku/+/2383
To unsubscribe, or for help writing mail filters, visit
https://review.haiku-os.org/settings
Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: I282ffc65a7bd692145626ab4272c5df4a792e9d4
Gerrit-Change-Number: 2383
Gerrit-PatchSet: 1
Gerrit-Owner: Jérôme Duval <jerome.duval@xxxxxxxxx>
Gerrit-MessageType: newchange