spc.h 文件
用途
定义由系统资源控制器 (SRC) 子例程提供的外部接口。
描述
/usr/include/spc.h 文件定义在调用 SRC 子例程时使用的数据结构和符号常量。 由 SRC 通过套接字或消息队列控制的所有子系统都应包含此头文件。
spc.h 文件中的 scrreq 数据结构定义 srcmstr 守护程序发送到子系统的请求的格式。 将请求发送到 srcmstr 守护程序的 SRC 子例程也使用此格式。
斯克里克 数据结构中包含以下字段:
| 项 | 描述 |
|---|---|
| mtype | 这是消息队列的消息类型。 仅对于消息队列子系统,才应包含此字段。 应该使用 -DSRCBYQUEUE 标志来编译程序,以生成mtype。 |
| srchdr | 必须包含在发送至 SRC 子系统和从 SRC 子系统接收的所有包中的 SRC 头。 |
| subreq | 将由 SRC 子系统处理的请求。 |
斯克里克 数据结构中的 斯尔奇德尔 数据结构包含对请求进行应答所需的返回地址。 斯尔茨尔克 子例程可以用来从请求中抽取此信息。 斯尔奇德尔 数据结构也是由子系统返回的应答结构的一部分。
斯尔奇德尔 数据结构中包含以下字段:
| 项 | 描述 |
|---|---|
| retaddr | 返回地址 |
| dversion | SRC 包版本。 |
| cont | 连续指示符。 可能的值为:
|
苏贝克 数据结构包含将由子系统处理的请求。 当调用 斯尔恰特 子例程将请求发送至子系统时,使用此相同结构。 斯尔恰特 子例程格式化必需的 斯尔奇德尔 结构。 srcmstr 守护程序处理该请求并将其传递到子系统。
苏贝克 数据结构中包含以下字段:
| 项 | 描述 |
|---|---|
| object | 定义要对其执行操作的对象。 可能值是 子系统 常量或子服务器代码点。 如果对象是子系统,那么此字段的值为 SUBSYSTEM 常量,如 spc.h 文件和 objname字段中包含空值或子系统名称。 如果该对象是子服务器,那么object字段值是子服务器对象定义中的代码点,并且 objname字段是子系统定义的。 该objname字段可以是空值,子服务器名称或子服务器进程标识。 子服务器的对象值不能与保留给子系统的值相等。 |
| action | 要执行的 SRC 操作。 可能的类型包括:
值 0-255 被保留供 SRC 使用。 |
| parm1 | 通过指示与操作关联的变量来修改 SRC 操作类型。 每个操作都以不同的方式使用该字段。 |
| parm2 | 通过指示与操作关联的变量来修改 SRC 操作类型。 每个操作都以不同的方式使用该字段。 |
| objname | 请求所应用到的对象的名称。 这可以是子系统名,子服务器对象或子服务器进程标识。 |
spc.h 文件中的 srcrep 和 statrep 结构定义子系统返回的应答的格式。 有关更多信息,请参阅 斯尔奇皮 子例程。
对于启动,停止,刷新和跟踪请求的回复,必须使用 斯克里普 数据结构。 它包含以下字段:
| 项 | 描述 |
|---|---|
| srchdr | 指定 SRC 请求/应答 (斯尔奇德尔) 头。 |
| svrreply | 包含以下字段的回复结构: |
| rtncode | 子系统对请求的响应。 此响应在错误或子系统唯一消息时为否定响应。 |
| objtype | 对象类型。 这是下列其中一种情况:
|
| objtext | 文本描述。 |
| objname | 对象 (子系统/子服务器) 的名称。 |
| rtnmsg | 子系统唯一消息。 |
斯塔特雷普 数据结构用于对状态请求进行回复。 它包含以下字段:
| 项 | 描述 |
|---|---|
| srchdr | 指定 SRC 请求/应答 (斯尔奇德尔) 头。 |
| statcode | 包含以下字段的状态结构。 这些结构可能有一个阵列。 该结构包含以下字段: |
| objtype | 对象类型。 这是下列其中一种情况:
|
| status | 状态码。 请参阅 spc.h 文件以获取可用于此字段的符号常量。 |
| objtext | 文本描述。 |
| objname | 此应答所属的对象 (子系统/子服务器) 的名称。 |
spc.h 文件还定义了下列在与 srcmstr 守护程序通信时有用的常量:
| 项 | 描述 |
|---|---|
| SRCNAMESZ | SRC 对象名的最大长度 (30 个字节,包括 null 终止符)。 |
| SRCPKTMAX | 最大包大小 (8192 字节)。 |
还存在用于管理 SRC 对象 (包括子系统和子服务器) 的 SRC 子例程。 spc.h 文件定义在定义对象属性时有用的某些符号常量。 在 /usr/include/sys/srcobj.h 文件中定义了以下 SRC 对象描述符:
| 项 | 描述 |
|---|---|
| 重新衍生操作: |
RESPAWN=1
ONCE=2
| 项 | 描述 |
|---|---|
| 联系人选项: |
SRCIPC=1
SRCSIGNAL=2
SRCSOCKET=3
| 项 | 描述 |
|---|---|
| 允许一个子系统的多个实例: |
SRCYES=1
SRCNO=0
| 项 | 描述 |
|---|---|
| 在特定条件下显示子系统状态: |
SRCYES=1
SRCNO=0
| 项 | 描述 |
|---|---|
| 缺省时间限制: |
TIMELIMIT=20(秒)
spc.h 文件还包含 /usr/include/srcerrno.h 文件,其中包含 SRC 库子例程返回的错误的符号常量。 可以使用 src_err_msg 子例程来检索相应的错误消息。
SRC 请求结构示例
下面的程序摘录是 SRC 请求 (斯克里克) 结构的示例。
struct srcreq
{
long mtype; /*Contains the message type in the IPC buffer*/
/*This field is included if IPC is used and a
message queue is expected*/ struct srchdr srchdr; /*src header table entry - defined below*/
struct subreq subreq; /*the request passed to the subsystem*/
}; struct srchdr /*srchdr structure is used by SRC routines*/
/*subsystems are not responsible for setting \
this*/
{
struct sockaddr_un retaddr;
short dversion; /*the version of the data format*/
short cont; /*used to indicate message is continued*/
}; struct subreq
{
short object; /*object to act on*/
short action; /*action START, STOP, STATUS,TRACE,REFRESH*/
short parm1; /* */
short parm2; /* */
char objname[SRCNAMES]; /*object name*/
};