V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
sockpuppet9527
V2EX  ›  分享创造

virtio spec 1.1 , 发现了个非原子资源的使用方法

  •  
  •   sockpuppet9527 · 2020-03-11 16:19:16 +08:00 · 1213 次点击
    这是一个创建于 1498 天前的主题,其中的信息可能已经有所发展或是发生改变。

    2.4.1 Driver Requirements: Device Configuration Space

    原文写的说:驱动不能假定从大于 32 位宽的字段进行的读取是原子的。 然后他提供了建议读方式:

    do {
    	before = get_config_generation(device);
    	// read config entry/entries.
    	after = get_config_generation(device);
    } while (after != before);
    

    看起来得在 before 和 after 之中做完所有初始化的事情啊? 假如两者不一致,还得重新做一遍

    以前我想如果非原子资源的话,加把锁或者尽量保证数据原子性。 看起来遇到驱动不好加锁的场景,这个办法也是非常 trick 的。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5440 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 07:04 · PVG 15:04 · LAX 00:04 · JFK 03:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.