spi sync async
spi_async spi_sync
return __spi_sync(spi, message, 0);
DECLARE_COMPLETION_ONSTACK(done);
status = __spi_queued_transfer(spi, message, false);//注意这个false
list_add_tail(&msg->queue, &master->queue);
__spi_pump_messages(master, false);//注意这个false
queue_kthread_work(&master->kworker, &master->pump_messages);
wait_for_completion(&done);
spi_async
ret = __spi_async(spi, message);
return master->transfer(spi, message);//注意: master->transfer = spi_queued_transfer;
return __spi_queued_transfer(spi, msg, true);
list_add_tail(&msg->queue, &master->queue);
queue_kthread_work(&master->kworker, &master->pump_messages);
可以看到
async的spi传输 直接用过工作队列启动work,不进行阻塞
sync的 spi传输通过 wait_for_completion 进行睡眠等待传输完成 通过一个 void complete(struct completion *c);来进行唤醒
这个 message->complete = spi_complete; 在spi_finalize_current_message中被调用 这个完成量为 message->context = &done;
spi sync async相关推荐
- Blocking/Non-Blocking VS Sync/Async VS Overlapped
[转载请注明:出自cnblogs,作者:byeyear,Email:east3@163.com] [2012.10.08: 完善文章内容] 本文主要讨论几个在网络编程中经常被讨论但也经常被误解的概念: ...
- java sync和async区别_GCD中串行、并行与async、sync的区别
* author:conowen@大钟 * E-mail:conowen@hotmail.com 队列由一个或多个任务组成,当这些任务要开始执行时,系统会分别把他们分配到某个线程上去执行. 串行队列. ...
- 和菜鸟一起学linux总线驱动之初识spi驱动数据传输流程【转】
转自:http://blog.csdn.net/eastmoon502136/article/details/7921846 对于SPI的一些结构体都有所了解之后呢,那么再去瞧瞧SPI的那些长见的操作 ...
- C# 5.0功能之Async一瞥
原文: http://www.cnblogs.com/xiaomi7732/archive/2011/06/27/AsyncDemo.html 距离微软发布 Async CTP 已经有个把月了吧,周围 ...
- oracle12C--DG FAR SYNC 部署(前提为搭建好12C的DG)
<<往期12CDG搭建>> 一,理解同步异步模式 01, 使用LGWR 进程的SYNC 方式 1)Primary Database 产生的Redo 日志要同时写到日志文件和网络 ...
- 一文读懂Rust的async
一文读懂Rust的async 不同的编程语言表现异步编程的方式可能不一样,Rust跟JavaScript的async/await类似:使用的关键字啊,编程模型啊都差不多啦! 也有些不一样的地方,毕竟R ...
- node.js async循环数组的方法
Collections 集合处理 async.forEachOf | eachOf(object, iterator, callback) 实现功能:遍历object对象执行iterator,报错 ...
- devices-list
转自:https://www.kernel.org/pub/linux/docs/lanana/device-list/devices-2.6.txt LINUX ALLOCATED DEVICES ...
- linux 字符设备号分配状况
字符设备主设备号范围 早期的内核字符主设备分配范围为0~255,后来由于不够用,对字符主设备号分配范围扩充到0~511,按照动态和静态申请划分情况使用,按照0~255和256~511两段进行详细划分, ...
最新文章
- org.apache.ibatis.binding.BindingException原因总结
- Nosql数据库之mongodb c++使用实例
- Java自动拆装箱面试_跟王老师学泛型(二):Java自动装箱与拆箱
- 纯粹数学:哈代的世外桃源
- RuoYi-Cloud 部署篇_03(linux环境 Oracle +nginx版本)
- 在Android NDK下打印log
- Ui学习笔记---EasyUI的EasyLoader组件源码分析
- Leetcode 814.二叉树剪枝
- 嵌入式开发 ARM Cortex-M3处理器技术优势分析
- dirent--文件以及文件夹相关操作(跨平台)
- libFetion『Linux下都飞信』
- 数列区间询问中的分块思想CF86D,BC#22-1004-NPY and girls
- C++ 重新定义继承而来的非虚函数
- TDS水质及电导率计算方法及电路程序设计
- 七缸发动机预热,docker swarm + .net core 高速飙车成功
- 广色域图片Android,广色域手机很厉害?其实安卓手机屏幕的色彩问题一
- Kotlin学习(1)初识及环境搭建,大厂面试必备技能
- MySQL5.7官方下载链接导航
- 如何使用 Victoria 检测并修复硬盘坏道和坏扇区
- CAE-仿真案例学习