Android在提供sync框架的同时,也提供了软件使用sync的接口,如果硬件没有提供sync的功能,可以使用软件sync接口。
软件sync接口在sync框架的基础上进行了封装,主要的两个数据结构如下:
struct sw_sync_timeline { struct sync_timeline obj; u32 value;
}; struct sw_sync_pt { struct sync_pt pt; u32 value;
}; sw_sync_timeline和sw_sync_pt相当简单,只不过是在原本的sync_timeline和sync_pt基础上多加了一个u32的value而已,
正是通过这个value的比较完成了同步。当sw_sync_pt.value <= sw_sync_timeline.value时,对应的sync_pt就被singaled。
另外还添加了几个新的api:
struct sw_sync_timeline *sw_sync_timeline_create(const char *name);
void sw_sync_timeline_inc(struct sw_sync_timeline *obj, u32 inc);
struct sync_pt *sw_sync_pt_create(struct sw_sync_timeline *obj, u32 value); 在创建一个sync_fence 时,会把参数中的sync_pt加入sync_fence的sync_pt链表,然后判断该sync_pt是否处于active状态,如果
是加入sync_timeline的active sync_pt链表;接着会立即判断所属的sync_fence是否处于非active态,如果处于非active态就把
waiter_list_header中的sync_fence_waiter移动到signaled_waiters list中去,遍历signaled_waiters,把每个waiter移除list,
并call他们的callback。在调用sw_sync_timeline_inc增加sw_sync_timeline.value时会遍历activa_list_header,把被判断为处于signaled状态的sync_pt从
activa_list_header中移到signaled_list中去。遍历signaled_list,每个处于signaled状态的pt都要call一次sync_fence_signal_pt,
,判断它所属的fence是否需要被signal。
详细解决方案
sync fence 软件接口-------------sw_sync_timeline和sw_sync_pt
热度:35 发布时间:2023-12-14 02:04:59.0
相关解决方案
- A/V sync (dshow/media foundation),该怎么处理
- Mysql C api调用时出错:Error code 2014:Commands out of sync!解决方案
- ExtJs 4.1 store sync 的有关问题
- sync framework示例程序,无法获得sql server的表架构,该怎么处理
- 求!助!Android模拟器出现有关问题 emulator: Failed to sync vcpu reg
- android studio下提醒gradle project sync failed.Basic functionality will not work
- Android程序装配后在模拟器上不显示,并且控制台显示The launch will only sync the application package on the device
- wince6.0 同步active sync 连接不下
- Android Sync 同步 源码有关问题解决方案
- Android import跟export使用说明 及 export报错:jarlist.cache: Resource is out of sync with the file syst解决
- User Profile Sync Service 自动Stop解决方案
- Educational Codeforces Round 77 C. Infinite Fence
- Vue 组件 .sync 修饰符
- 项目发布到Tomcat中报错 “Resource is out of sync...
- POJ 1037 A decorative fence DP+排列计数 *
- MAC 解决gradle project sync failed 问题
- 'The sandbox is not sync with the Podfile.lock'的问题
- Gradle sync failed: Another 'refresh project' task is currently running for,手动下载gradle
- [Educational Codeforces Round 75]F.Red-White Fence(OGF)
- Gradle sync failed: Could not GET https://jcenter.bintray.com/com/google/protobuf/protobuf-java/3.4
- 关于gradel project sync failed的问题解决方法。
- android studio报错Error: Gradle project sync failed. Please fix your project and try again.
- (大组合数)D. Fence Building ------ ACM-ICPC 2017 Asia Urumqi
- POJ3253 Fence Repair(STL优先队列,哈夫曼树)
- POJ3253 Fence Repair(贪心,哈夫曼树)
- Fence Repair 【优先队列】
- CodeForces 234F Fence (DP)
- Educational Codeforces Round 61 (Rated for Div. 2) C. Painting the Fence(思维+暴力枚举+前缀和)
- sync、fsync、fdatasync
- redis4.0.12主从连接报错Error condition on socket for SYNC: Connection refused和Connection reset by peer