SylixOS 下对某些设备的 select 功能支持
Q:对于一些不具备阻塞功能的函数接口,如何才能使其达到阻塞的目的?
使用 select 可以对诸多输入设备进行阻塞。
如何实现特定设备的 select 功能?
实现步骤如下:
① 在设备控制块中加入等待链表头控制结构(每个具备 select 功能的设备都需要此控制结构);
② 初始化等待链表头控制结构;
③ 在驱动 ioctl 函数中添加命令字 “FIOSELECT” 和 “FIOUNSELECT”;
④ 在 “FIOSELECT” 下 往等待链表中添加一个等待节点,随后根据实际的设备判断其阻塞类型,决定需不需要唤醒,并在恰当的时机使用“SEL_WAKE_UP_ALL” 将等待的节点唤醒
⑤ 在 “UNFIOSELECT” 下从等待链表中移除一个节点;
⑥ 在设备关闭或者停止时唤醒所有等待操作的线程。
Related Articles
SylixOS 功能介绍及版本差异
SylixOS功能介绍及版本差异 SylixOS 标准版 SylixOS 标准版是 SylixOS 的基础版本,具备如下功能: 兼容 IEEE 1003(ISO/IEC 9945)操作系统接口规范; 兼容 POSIX 1003.1b(ISO/IEC 9945-1)实时编程标准; 支持国军标 GJB7714-2012 操作系统接口规范; 优秀的实时性能(任务调度与切换算法时间复杂度为 O(1)); 支持无限多任务; 抢占式调度支持 256 个优先级; 支持虚拟进程; ...
SylixOS lite 版—基于 STM32F767 资源使用情况
1、基本概念 代码段(text):顾名思义,代码存放的位置,在 STM32 中代码段一般存放于内置 FLASH 中; 已初始化数据段(data):已初始化数据段会分别体现在 FlASH 中和 RAM 中。因为是全局变量,运行过程中需要进行读写操作,因此占用一段 RAM 空间。又因为有初始值,其初始值需要占用 FlASH 空间。 未初始化的数据段(bss):bss 与 data 相同的地方时它也是全局变量,运行过程中需要进行读写操作,因此占用一段 RAM ...
error: xxx-sylixos-elf-lzocom.exe
Q:IDE 在编译工程时出现:xxxx-sylixos-elf-lzocom.exe 应用程序出错。 应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序。信息如下图所示。 安装 vc2010_redist_x86.exe 即可解决此问题, 此文件在 IDE 软件安装包的 Tools 目录下(如 SylixOS IDE 3.9.11_professional\Tools) 。
手动修改 SylixOS 工程类型的方法
问题描述: 当我们想要通过 IDE 重新选择已有 SylixOS Project 的 base 时,如果 base 的类型需要变化,会遇到如下图所示的问题"SylixOS Base project invalid",导致无法选择想要的base。 问题原因: 当base类型变化了,创建SylixOS Project时,工程设置里设定了base的类型。 解决方法一: ...
SylixOS 动态库更新 version 不一致的问题
Q:SylixOS 动态库更新 version 不一致的问题 首先 SylixOS 是允许多个进程对共享库文件进行代码段共享的(默认是共享打开的,可以使用 dlconfig share dis 命令进行关闭),代码段共享会出现一个问题:当 A 进程 使用一个 share.so 共享库的时候,B 进程也使用 该 share.so 的共享库,share.so 共享库因为 B 的原因需要修改,修改后,更新share.so文件,然后重启 B 进程,一般来说会出现错误,错误如下: ...