Serviço De Kernel Geteblk

Propósito

Aloca um buffer livre.

Sintaxe

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/buf.h>
struct buf *geteblk ( )

Descrição

Atenção: O uso do serviço geteblk por drivers de dispositivos de caracteres é fortemente desmotivado. Como alternativa, os drivers de dispositivo de caracteres podem usar o serviço xmalloc para alocar o espaço de memória diretamente, ou os serviços de kernel de E/S de caracteres como os serviços getcb ou getcf .

O serviço kernel geteblk aloca um cabeçalho de buffer e buffer e retorna o endereço do cabeçalho de buffer. Se nenhum buffers grátis estiver disponível, então o serviço geteblk espera que um se torne disponível. Drivers de dispositivo de bloco podem recuperar buffers usando o serviço geteblk .

No cabeçalho, ob_forw,b_back,b_flags,b_bcount,b_deveb_unos campos são utilizados pelo sistema e não podem ser modificados pelo condutor. Os comandosav_forweav_backos campos estão disponíveis para o usuário do serviço geteblk para manter uma cadeia de buffers pelo usuário do serviço geteblk . (Este usuário poderia ser o sistema de arquivos do kernel ou um driver de dispositivo.) Os comandosb_blknoeb_residos campos podem ser usados para qualquer finalidade.

O serviço brelse é usado para liberar este tipo de buffer.

O serviço geteblk não possui parâmetros.

Ambiente de Execução

O serviço kernel geteblk pode ser chamado apenas do ambiente de processo.

Valores De Retorno

O serviço geteblk retorna um ponteiro para o cabeçalho de buffer. Não há códigos de erro porque o serviço geteblk aguarda até que um cabeçalho de buffer se torne disponível.

Em uma plataforma que suporta chaves de armazenamento, o cabeçalho de buffer é alocado a partir do armazenamento protegido pela chave de kernel KKEY_BLOCK_DEV .