sync fence 软件接口-------------sw_sync_timeline和sw_sync_pt
来源:互联网 发布:淘宝客服忙吗 编辑:程序博客网 时间:2024/06/05 23:03
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。
阅读全文
0 0
- sync fence 软件接口-------------sw_sync_timeline和sw_sync_pt
- android fence sync
- Sync Object in OpenGL (about GPU Fence)
- B. Fence----前缀和
- sync 接口返回的内容
- Resilio Sync 资源同步软件
- light-weight sync 和 heavy-weight sync
- golang中sync.RWMutex和sync.Mutex
- GOLANG sync.Mutex和sync.RWMutex
- sync 和 fsync
- sync和fsync函数
- fence
- Fence
- Fence
- Fence
- sync
- sync
- sync
- 65_常用类_Date类的使用_JDk源码分析
- 32位Linux系统虚拟地址映射
- 欢迎使用CSDN-markdown编辑器
- Spdylay
- webjs--获取上传图片的缓存路径展示在页面上
- sync fence 软件接口-------------sw_sync_timeline和sw_sync_pt
- 【Java】Java中Integer和int比较大小出现的错误
- 好的学习资源网站
- 反射的代码
- 二维数组操作
- 好吧,第一篇博文,盖个章,留个印
- 欢迎使用CSDN-markdown编辑器
- 剑指offer:第44题扑克牌的顺子
- HTTP与HTTPS的概念和区别