On 7/13/21 10:40 PM, Jason Wang wrote:
在 2021/7/12 下午6:35, Jonah Palmer 写道:
+void hmp_virtio_queue_status(Monitor *mon, const QDict *qdict)
+{
+ Error *err = NULL;
+ const char *path = qdict_get_try_str(qdict, "path");
+ int queue = qdict_get_int(qdict, "queue");
+ VirtQueueStatus *s = qmp_x_debug_virtio_queue_status(path,
queue, &err);
+
+ if (err != NULL) {
+ hmp_handle_error(mon, err);
+ return;
+ }
+
+ monitor_printf(mon, "%s:\n", path);
+ monitor_printf(mon, " device_type: %s\n",
+ VirtioType_str(s->device_type));
+ monitor_printf(mon, " index: %d\n",
s->queue_index);
+ monitor_printf(mon, " inuse: %d\n", s->inuse);
+ monitor_printf(mon, " last_avail_idx: %d (%"PRId64" %%
%"PRId64")\n",
+ s->last_avail_idx, s->last_avail_idx % s->vring_num,
+ s->vring_num);
+ monitor_printf(mon, " shadow_avail_idx: %d (%"PRId64" %%
%"PRId64")\n",
+ s->shadow_avail_idx, s->shadow_avail_idx %
s->vring_num,
+ s->vring_num);
+ monitor_printf(mon, " used_idx: %d (%"PRId64" %%
%"PRId64")\n",
+ s->used_idx, s->used_idx % s->vring_num,
s->vring_num);
The modular information is not the case of packed ring where the queue
size does not have to be a power of 2.
Doesn't modulo work for any integer, regardless if it's a power of 2 or not?
Could you clarify this for me?
Thank you,
Jonah
Thanks
+ monitor_printf(mon, " signalled_used: %d (%"PRId64" %%
%"PRId64")\n",
+ s->signalled_used, s->signalled_used % s->vring_num,
+ s->vring_num);
+ monitor_printf(mon, " signalled_used_valid: %d\n",
s->signalled_used_valid);
+ monitor_printf(mon, " VRing:\n");
+ monitor_printf(mon, " num: %"PRId64"\n", s->vring_num);
+ monitor_printf(mon, " num_default: %"PRId64"\n",
s->vring_num_default);
+ monitor_printf(mon, " align: %"PRId64"\n",
s->vring_align);
+ monitor_printf(mon, " desc: 0x%016"PRIx64"\n",
s->vring_desc);
+ monitor_printf(mon, " avail: 0x%016"PRIx64"\n",
s->vring_avail);
+ monitor_printf(mon, " used: 0x%016"PRIx64"\n",
s->vring_used);
+
+ qapi_free_VirtQueueStatus(s);