当前位置: 首页>>代码示例>>C++>>正文


C++ VirtioBusClass::ioeventfd_set_started方法代码示例

本文整理汇总了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__);
}
开发者ID:GamerSource,项目名称:qemu,代码行数:38,代码来源:virtio-bus.c

示例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);
}
开发者ID:GamerSource,项目名称:qemu,代码行数:20,代码来源:virtio-bus.c


注:本文中的VirtioBusClass::ioeventfd_set_started方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。