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 守护程序的请求中使用。
已继续
在子系统返回的应答中使用,指示后跟另一个包。
继续统计
在子系统返回的状态应答中使用,指示后跟另一个包。
结束
在子系统看到的请求或应答序列中的最后一个包中使用。

苏贝克 数据结构包含将由子系统处理的请求。 当调用 斯尔恰特 子例程将请求发送至子系统时,使用此相同结构。 斯尔恰特 子例程格式化必需的 斯尔奇德尔 结构。 srcmstr 守护程序处理该请求并将其传递到子系统。

苏贝克 数据结构中包含以下字段:

描述
object 定义要对其执行操作的对象。 可能值是 子系统 常量或子服务器代码点。 如果对象是子系统,那么此字段的值为 SUBSYSTEM 常量,如 spc.h 文件和 objname字段中包含空值或子系统名称。 如果该对象是子服务器,那么object字段值是子服务器对象定义中的代码点,并且 objname字段是子系统定义的。 该objname字段可以是空值,子服务器名称或子服务器进程标识。 子服务器的对象值不能与保留给子系统的值相等。
action 要执行的 SRC 操作。 可能的类型包括:
启动
STOP
STATUS 或 SRCSTATUS
跟踪
刷新

值 0-255 被保留供 SRC 使用。

parm1 通过指示与操作关联的变量来修改 SRC 操作类型。 每个操作都以不同的方式使用该字段。
parm2 通过指示与操作关联的变量来修改 SRC 操作类型。 每个操作都以不同的方式使用该字段。
objname 请求所应用到的对象的名称。 这可以是子系统名,子服务器对象或子服务器进程标识。

spc.h 文件中的 srcrepstatrep 结构定义子系统返回的应答的格式。 有关更多信息,请参阅 斯尔奇皮 子例程。

对于启动,停止,刷新和跟踪请求的回复,必须使用 斯克里普 数据结构。 它包含以下字段:

描述
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*/
};