26、嵌入式系统中的异步与同步API:Tock系统的实现与应用

Tock系统异步同步API解析

嵌入式系统中的异步与同步API:Tock系统的实现与应用

1. 文本显示回调函数

当文本显示或出现错误时, text_displayed 函数会被调用。在该函数中,会执行两个操作:
- 无论文本是否成功显示,都要进行清理工作,即取消回调订阅并释放缓冲区。
- 验证库的用户是否注册了回调,如果注册了,则使用状态和存储的用户数据作为参数调用该回调。

2. 同步API概述

之前介绍的异步API与驱动的工作方式非常相似,但对于应用开发者来说,使用异步API往往有难度。因此,大多数用户空间库会为驱动提供同步API,即库会实现等待回调所需的所有代码。

3. yield系统调用

在深入了解同步API之前,需要简要介绍 yield 系统调用。驱动可以随时调度上调用(upcall),而不管用户空间进程在做什么。当驱动调度上调用时,内核不会立即调用用户空间中注册的函数,而是将上调用入队。与Linux通过中断进程来传递信号不同,Tock永远不会因为上调用而中断进程。内核只会在进程处于 Yielded 状态时调用函数回调。

每个进程都有一个有限的可调度任务队列,上调用是这些任务之一,默认队列大小为10。如果队列已满,上调用调度将失败。进程通过 yield 系统调用请求内核将其置于 Yielded 状态。当内核收到 yield 系统调用时,会尝试将进程的第一个上调用出队并调用回调函数。如果任务队列为空,进程将进入 Yielded

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值