/*
- * Copyright (c) 2014, 2016 ARM Limited
+ * Copyright (c) 2014, 2016, 2021 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
setAddress(addr_in);
}
+void
+VirtQueue::reset()
+{
+ _address = 0;
+ _last_avail = 0;
+
+ avail.reset();
+ used.reset();
+}
+
void
VirtQueue::setAddress(Addr address)
{
_deviceStatus = 0;
for (QueueID i = 0; i < _queues.size(); ++i)
- _queues[i]->setAddress(0);
+ _queues[i]->reset();
}
void
/*
- * Copyright (c) 2014, 2016-2017 ARM Limited
+ * Copyright (c) 2014, 2016-2017, 2021 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
/** @{
* @name Low-level Device Interface
*/
+
+ /**
+ * Reset cached state in this queue and in the associated
+ * ring buffers. A client of this method should be the
+ * VirtIODeviceBase::reset.
+ */
+ void reset();
+
/**
* Set the base address of this queue.
*
header{0, 0}, ring(size), _proxy(proxy), _base(0), byteOrder(bo)
{}
+ /** Reset any state in the ring buffer. */
+ void
+ reset()
+ {
+ header = {0, 0};
+ _base = 0;
+ };
+
/**
* Set the base address of the VirtIO ring buffer.
*