[haiku-commits] Change in haiku[master]: virtio: add clear_feature hook.

  • From: Gerrit <review@xxxxxxxxxxxxxxxxxxx>
  • To: waddlesplash <waddlesplash@xxxxxxxxx>, haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 21 Mar 2020 09:10:29 +0000

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

Other related posts:

  • » [haiku-commits] Change in haiku[master]: virtio: add clear_feature hook. - Gerrit