Tock系统中异步与同步API的应用及Raspberry Pi Pico适配
1. 文本显示回调函数
当文本显示或出现错误时,会调用 text_displayed 函数。在这个函数中,会执行两个操作:
- 无论文本是否成功显示,都要通过取消回调订阅和释放缓冲区来进行清理。
- 验证库的用户是否注册了回调,如果注册了,就以状态和存储的用户数据为参数调用该回调。
2. 同步与异步API
- 异步API :之前展示的异步API与驱动的工作方式非常相似。不过,对于应用开发者来说,使用异步API很多时候是比较困难的。因此,大多数用户空间库会为驱动提供同步API,即库会实现所有等待回调所需的代码。
- yield系统调用 :
- 驱动可以随时调度上调用(upcall),无论用户空间进程在做什么。当驱动调度上调用时,内核不会立即调用用户空间中注册的函数,而是将上调用入队。与Linux通过中断进程来传递信号不同,Tock永远不会因为上调用而中断进程。内核只有在进程处于
Yielded状态时才会调用函数回调。 - 每个进程都有一个有限的可调度任务队列,上调用是这些任务之一。默认情况下,队列大小为10。如果队列已满,上调用调度将失败。
- 进程通过
yield系统调用请求内核将其置于Yielded状态。当内核收到yield系统调用时,它会
- 驱动可以随时调度上调用(upcall),无论用户空间进程在做什么。当驱动调度上调用时,内核不会立即调用用户空间中注册的函数,而是将上调用入队。与Linux通过中断进程来传递信号不同,Tock永远不会因为上调用而中断进程。内核只有在进程处于
超级会员免费看
订阅专栏 解锁全文
50

被折叠的 条评论
为什么被折叠?



