检查设备队列管理例程

用途

提供对包含在请求队列元素中的参数执行特定于设备的有效性检查的方法。

语法

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/deviceq.h>
int check ( type,  ptr,  length)
int type;
struct req_qe *ptr;
int length;

参数

描述
TYPE 指定调用的类型。 当内核调用 检查 例程时,将使用以下值:
check_parms + send_cmd
发送命令队列元素。
check_parms + start_io
启动 I/O CCB 队列元素。
check_parms + gen_purpose
通用队列元素。
PTR 指定该队列元素的地址。
长度 指定 queue 元素的长度。

描述

检查 例程是 "设备队列管理内核" 扩展的一部分。 每个设备队列都可以具有 检查 例程。 此例程是可选的,并且必须在使用 克里特克 服务创建设备队列时指定。 在将请求队列元素放入设备队列之前, 恩克 服务会调用 检查 例程。 内核使用例程的返回值来确定是将队列元素放置在设备队列上还是停止请求。

在发送应答或控制队列元素时,内核不会调用 检查 例程。 因此,仅当在进程中执行时才会调用 检查 例程。

实际队列元素的地址将传递给此例程。 在 检查 例程中,请注意仅更改旨在进行更改的字段。 此例程不需要与服务器的其余例程一起序列化,因为它只是检查队列元素中的参数。

在将请求队列元素放置在设备队列上之前, 检查 例程可以检查请求。 使用此例程的优点是您可以在将不可接受的命令放入设备队列之前过滤掉这些命令。

如果请求可接受,那么例程将查看队列元素并返回 RC_GOOD 。 如果返回码不是 RC_GOOD,那么内核不会将队列元素放置在设备队列中。

执行环境

检查 例程在请求者的 流程环境 下执行。 因此,必须像在 中断 处理程序环境中一样来处理对数据区的访问。 但是,不需要像在正常中断处理程序环境中那样将代码和数据置顶。

返回值

描述
RC_GOOD 指示成功完成。

所有其他返回值都特定于设备。