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 的。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.