ddclose 设备驱动程序入口点
用途
关闭先前打开的设备实例。
语法
参数
描述
当 关闭 子例程或 fp_close 内核服务关闭先前打开的设备实例时,将调用 德德德 入口点。 对于非多路复用和多路复用的设备驱动程序,内核在不同情况下调用例程。
对于非多路复用设备驱动程序,当最后一个打开设备实例的进程关闭它时,内核将调用 德德德 例程。 这会导致将 g 节点 引用 0 减少到 0 ,并取消分配 g-node。
对于多路复用设备驱动程序,将针对与显式打开关联的每个关闭调用 德德德 例程。 换而言之,每次针对通道调用设备驱动程序的 德开放 例程时,都会调用一次设备驱动程序的 德德德 例程。
在某些情况下,应该先将数据缓冲区写入设备,然后再从 德德德 例程返回。 这些是包含要写入设备的数据的缓冲区,这些数据已由设备驱动程序排队但尚未写入。
非多路复用设备驱动程序应将关联设备重置为空闲状态,并将设备驱动程序设备状态更改为已关闭。 这可能涉及调用 fp_close 内核服务以发出接近该设备的关联开放式设备处理程序的消息。 将设备返回到空闲状态可阻止设备生成任何更多中断或直接存储器存取 (DMA) 请求。 应该释放为此设备分配的 DMA 通道和中断级别,直到重新打开该设备为止,以释放此设备使用的关键系统资源。
多路复用设备驱动程序应提供相同的设备停顿,但不能在 德德德 例程中提供。 应延迟使设备恢复到空闲状态并释放其资源,直到调用 邓普克斯 例程以取消分配设备上分配的最后一个通道为止。
在所有情况下,在 德德德 例程返回到调用程序后,即使返回非零返回码,也会将设备实例视为已关闭。
执行环境
只有在 流程环境中才会执行 德德德 例程。 它应该通过将锁定内核服务与驱动程序中定义的专用锁定字结合使用来提供其数据结构的必需序列化。
返回值
德德德 入口点可以通过返回非零返回码来向用户方式应用程序指示错误情况。 这会导致子程序调用返回 -1 值。 它还使 错误号 全局变量中的返回码可供用户方式应用程序使用。 使用的返回代码应是 /usr/include/sys/errno.h 文件中定义的值之一。
即使返回非零返回码,该设备也始终被视为已关闭。
如果适用,应该使用 close 子例程的 POSIX 1003.1 标准中定义的返回值。