注:本文翻译自:
http://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.getting_started/topic/s1_resmgr.html
一、本章前言
在本章中,我们将了解编写资源管理器需要了解的内容。 资源管理器是 QNX Neutrino 的另一个显着功能,它允许您通过标准 POSIX 调用访问服务。
What is a resource manager?
资源管理器只是一个具有一些明确定义的特征的程序。
The client's view
我们已经看到了客户期望的一些暗示。 它需要一个基于文件描述符的接口,使用标准 POSIX 函数。
The resource manager's view
让我们从资源管理器的角度来看事情。
The resource manager library
在深入讨论有关资源管理器的所有问题之前,我们必须熟悉 QNX Neutrino 资源管理器库。
Writing a resource manager
现在我们已经介绍了基础知识——客户端如何看待世界、资源管理器如何看待世界以及库中两个合作层的概述,现在是时候关注细节了。
Handler routines
并非所有呼出都对应于客户端消息——有些是由内核合成的,有些是由库合成的。
Alphabetical listing of connect and I/O functions
本节按字母顺序列出了您可以填写的连接和 I/O 函数入口点(传递给 resmgr_attach() 的两个表)。 请记住,如果您只是调用 iofunc_func_init(),所有这些条目都将填充适当的默认值; 仅当您希望处理特定消息时才需要修改该特定条目。 在下面的“Example”部分中,您将看到一些常用函数的示例。
Examples
我现在将向您展示一些“食谱”示例,您可以将其剪切并粘贴到代码中,以用作项目的基础。 这些不是完整的资源管理器 - 您需要添加线程池并调度下面所示的“骨架”,并确保在您完成之后将您的 I/O 函数版本放入 I/O 函数表中。 完成 iofunc_func_init(),以覆盖默认值!
Advanced topics
现在我们已经介绍了资源管理器的“基础知识”,是时候看看一些更复杂的方面了。
Summary
编写资源管理器是迄今为止我们在本书中讨论过的最复杂的任务。
Related concepts
Resource Managers (System Architecture)
Writing a Resource Manager
二、 Summary
编写资源管理器是迄今为止我们在本书中讨论过的最复杂的任务。
资源管理器是接收某些明确定义的消息的服务器。 这些消息分为两大类:
(1)连接消息
与基于路径名的操作相关,这些可以为进一步的工作建立上下文。
(2)输入/输出消息
始终在连接消息之后到达并指示客户端希望完成的实际工作(例如 stat())。
资源管理器的操作由线程池函数(在“Processes and Threads”一章中讨论)和调度接口函数控制。
QNX Neutrino 在资源管理器库中提供了一组 POSIX 辅助函数,这些函数执行处理客户端到达的 Connect 和 I/O 消息的大部分工作。
资源管理器显示了许多与客户端和资源相关的数据结构,需要记住:
(1)OCB
根据每次打开进行分配,其中包含客户端的上下文(例如,当前 lseek() 位置)
(2)属性结构
按资源分配,包含有关资源的信息(例如设备大小、权限)
(3)安装结构(Mount structure)
基于每个资源管理器进行分配,并包含有关整个资源管理器的特征的信息。
客户端通过消息传递与资源管理器通信,将路径名(通过 open() 和其他调用)解析为节点描述符、进程 ID、通道 ID 和句柄。
最后,通过覆盖“Connect and I/O functions table”选项卡中的一些函数,提供您希望在资源管理器中实际执行的功能。
标签:resource,Resource,函数,QNX,manager,Managers,资源管理,客户端 From: https://www.cnblogs.com/hellokitty2/p/17539157.html