getblk 内核服务
用途
将缓冲区分配给指定块。
语法
参数
| 项 | 描述 |
|---|---|
| dev | 指定包含所要分配的块的设备。 |
| 布尔克诺 | 指定要分配的块。 |
描述
getblk 内核服务首先检查指定的缓冲区是否在缓冲区高速缓存中。 如果缓冲区驻留在该处,但正在使用中,那么将调用 睡眠 服务以等待缓冲区不再使用。 在唤醒时, getblk 服务会再次尝试访问缓冲区。 如果缓冲区在高速缓存中并且未在使用中,那么会从空闲列表中除去该缓冲区并将其标记为 "繁忙"。 然后返回其缓冲区头。 如果缓冲区不在缓冲区高速缓存中,那么将从空闲列表中获取另一个缓冲区并返回。
执行环境
只能从 进程环境 调用 getblk 内核服务。
返回值
getblk 服务返回指向缓冲区头的指针。 缓冲区头 (buf结构) 的 b_flags 字段中 B_ERROR 的非零值指示错误。 如果发生此情况,那么调用者应使用 brelse 内核服务来释放块的缓冲区。
在支持存储密钥的平台上,将从受 KKEY_BLOCK_DEV 内核密钥保护的存储器中分配缓冲区头。