本文整理汇总了C++中VirtioBusClass::ioeventfd_set_started方法的典型用法代码示例。如果您正苦于以下问题:C++ VirtioBusClass::ioeventfd_set_started方法的具体用法?C++ VirtioBusClass::ioeventfd_set_started怎么用?C++ VirtioBusClass::ioeventfd_set_started使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VirtioBusClass
的用法示例。
在下文中一共展示了VirtioBusClass::ioeventfd_set_started方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: virtio_bus_start_ioeventfd
void virtio_bus_start_ioeventfd(VirtioBusState *bus)
{
VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(bus);
DeviceState *proxy = DEVICE(BUS(bus)->parent);
VirtIODevice *vdev;
int n, r;
if (!k->ioeventfd_started || k->ioeventfd_started(proxy)) {
return;
}
if (k->ioeventfd_disabled(proxy)) {
return;
}
vdev = virtio_bus_get_device(bus);
for (n = 0; n < VIRTIO_QUEUE_MAX; n++) {
if (!virtio_queue_get_num(vdev, n)) {
continue;
}
r = set_host_notifier_internal(proxy, bus, n, true, true);
if (r < 0) {
goto assign_error;
}
}
k->ioeventfd_set_started(proxy, true, false);
return;
assign_error:
while (--n >= 0) {
if (!virtio_queue_get_num(vdev, n)) {
continue;
}
r = set_host_notifier_internal(proxy, bus, n, false, false);
assert(r >= 0);
}
k->ioeventfd_set_started(proxy, false, true);
error_report("%s: failed. Fallback to userspace (slower).", __func__);
}
示例2: virtio_bus_stop_ioeventfd
void virtio_bus_stop_ioeventfd(VirtioBusState *bus)
{
VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(bus);
DeviceState *proxy = DEVICE(BUS(bus)->parent);
VirtIODevice *vdev;
int n, r;
if (!k->ioeventfd_started || !k->ioeventfd_started(proxy)) {
return;
}
vdev = virtio_bus_get_device(bus);
for (n = 0; n < VIRTIO_QUEUE_MAX; n++) {
if (!virtio_queue_get_num(vdev, n)) {
continue;
}
r = set_host_notifier_internal(proxy, bus, n, false, false);
assert(r >= 0);
}
k->ioeventfd_set_started(proxy, false, false);
}