QNX
文章平均质量分 93
Captain--Jack
这个作者很懒,什么都没留下…
展开
-
QNX资源管理器
资源管理器顾名思义就是管理“资源”的服务器,这里问题是,到底什么是“资源”呢?在QNX上,“资源”可以是一个硬件(硬件资源管理器其实就是我们常说的硬件驱动),“资源”也可以是一种服务,比如TCPIP网络服务,或者ntfs文件系统服务;“资源”甚至可以是一个文件(或者目录)。如果你还记得,Unix的基本思想,就是“把驱动当成文件”,那资源管理器就非常有用了。所以/dev/ser1是一个管理串口的资源管理器,而/dev/random则是一个提供随机数的资源管理器。转载 2023-07-22 17:48:27 · 632 阅读 · 0 评论 -
QNX的路径名空间与搜索
综上,这里解释了QNX路径名搜索的概念,以及一些细节。也许你会问,知道这些有什么用呢?知道了路径名是怎么搜索的,就可以在系统设计时尽量避免一些可能降低系统性能的设计。比如,尽量不要交叉注册路径名,由一个资源管理器注册/media/db;另一个注册/media/control;会使得路径名搜索时简单明了;而如果一个资源管理器注册/media,另一个注册/media/player的话,以后每次对 /media/player下进行读写时,都有可能引起不必要的消息传递。转载 2023-07-22 17:35:09 · 212 阅读 · 0 评论 -
从API开始理解QNX – 系统脉冲
首先这是一个脉冲,所以希望收到这个脉冲的进程必须首先建立一个频道(对,即使你是一个“客户端”进程,通常只连接别人的频道,为了接收脉冲,也要自建频道)。当一个客户端与一个服务器端建立起连接以后,如果服务器端突然退出了,内核会向客户端发送这个_PULSE_CODE_COIDDEATH脉冲,以通知客户端它所连接的服务器出了问题。当然,与上一个线程死亡的脉冲相似,客户端也必须准备好一个特殊的频道(在建立频道时设_NTO_CHF_COID_DISCONNECT标志位),同时这样的频道也在一个进程中也只能有一个。转载 2023-07-22 17:05:19 · 197 阅读 · 0 评论 -
关于 MsgDeliverEvent()
对于 QNX 的 MsgDeliverEvent() 这个内核调用,后台有不少疑问,分出来细讲一下吧。这个函数的基本用法是这样的:如上所见,客户端是会需要阻塞等待事件发生的。但这个并不是绝对的,根据事件具体是什么而定。转载 2023-07-22 16:58:51 · 183 阅读 · 0 评论 -
从API开始理解QNX
在QNX里这是非常常见的情况,比如你去read()一个串口,串口驱动就是你的服务器,当没有数据进来时,串口驱动就不应答你,造成你的程序一直在 read() 里等着。虽然read()是从服务器取得数据,而write()是向服务器输出数据,但实质上,它们都是向服务器提出一个请求,由服务器来应答。一个常见的情形是这样的。需要再次指出的是,真正在QNX上写程序的时候,很少会直接用到这些API,而是利用更高层的API,不过,知道这些底层的API对于将来理解建立在这些API上的界面,应该会有帮助的。转载 2023-07-22 15:04:07 · 177 阅读 · 0 评论