enque 内核服务
用途
将请求队列元素发送至设备队列。
语法
#include <sys/types.h> #include <sys/errno.h> #include <sys/deviceq.h> 内部 (int enque) 问) struct req_qe *问;
参数
| 项 | 描述 |
|---|---|
| 盖 | 指定该请求队列元素的地址。 |
描述
恩克 内核服务不是基础内核的一部分,而是由设备队列管理内核扩展提供的。 在装入引用这些服务的任何内核扩展之前,必须将此队列管理内核扩展装入到内核中。
恩克 服务将队列元素放入指定的设备队列中。 它用于内核内部的简单进程间通信。 请求者构建队列元素的副本 (由 盖 参数指示) ,并将此副本传递到 恩克 服务。 内核将此队列元素复制到固定全局内存中的队列元素中,然后将其排队到目标设备队列中。
请求队列元素中的路径标识指示将该元素放入其中的设备队列。
恩克 服务支持下列类型的队列元素的发送:
| 队列元素 (queue element) | 描述 |
|---|---|
| SEND_CMD | 发送命令。 |
| 启动 IO | 启动 I/O。 |
| 源用途 | 一般用途。 |
对于简单的进程间通信,使用通用队列元素。
队列元素优先级值的范围可以从 QE_BEST_PRTY 到 QE_WORST_PRTY。 此值将限制为创建队列时指定的值。
队列元素中的操作选项用于控制队列元素的处理方式。 有五个标准操作选项:
| 操作选项 | 描述 |
|---|---|
| 已确认完成 | 在所有情况下都确认完成。 |
| ACK_ERRORS | 如果操作导致错误,那么确认完成。 |
| 同步请求 | 同步请求。 |
| 链式 | 链式控制块。 |
| CONTROL_OPT | 内核控制操作。 |
使用 SYNC_REQUEST 同步请求选项时,直到确认请求队列元素之后,控制才会从 恩克 服务返回。 这在一个步骤中执行,也可以通过发送带有 已确认完成 标志的队列元素,然后调用 等待 或 等待 内核服务来实现此目的。
在将队列元素放置在设备队列上之前,内核将调用服务器的 检查 例程 (如果已定义)。 如果此例程检测到错误,那么它可以停止该操作。
必要时,内核会在将队列元素放置在设备队列上后通知设备队列的服务器。 这是通过将服务器进程 (使用 et_post 内核服务) 与事件控制位一起发布来完成的。
执行环境
仅可从 流程环境 调用 恩克 内核服务。
返回值
| 项 | 描述 |
|---|---|
| RC_GOOD | 指示操作成功。 |
| RC_ID | 指出无效的路径标识。 |
所有其他错误值表示服务器返回的错误。