serviço do kernel fp_opendev
Propósito
Abre um arquivo especial de dispositivo.
Sintaxe
Parâmetros
| Item | Descrição |
|---|---|
| devno | Especifica o número de dispositivo principal e menor de driver de dispositivo para abrir. |
| flag | Especifica um dos seguintes valores:
|
| cname | Aponta para um canal especificando uma sequência de caracteres ou um valor nulo. |
| ramal | Especifica um argumento de extensão requerido por alguns drivers de dispositivo. Seu conteúdo, forma e uso são determinados pelo motorista individual. |
| fpp | Especifica o ponteiro de arquivo retornado. Este parâmetro é passado por referência e é atualizado pelo serviço fp_opendev para ser o ponteiro de arquivo para esta instância aberta. Este ponteiro de arquivo é usado como entrada para outros serviços do Logical File System para especificar a instância aberta. |
Descrição
A extensão kernel ou kernel chama o serviço kernel fp_opendev para abrir um dispositivo especificando seu dispositivo principal e menor número. O serviço kernel fp_opendev fornece a semântica correta para abrir a classe de caracteres ou multiplexação de drivers de dispositivo.
Se o driver de dispositivo especificado estiver não multiplexado:
- Um i-core in-core é encontrado ou criado para este dispositivo.
- A contagem de referência do i-node é incremento em 1.
- O ponto de entrada ddopen do driver de dispositivo é chamado com os parâmetros devno, devflage ext . O parâmetro chan não utilizado na chamada para a rotina ddopen é configurado como 0.
Se o driver de dispositivo é um driver de dispositivo de caráter multiplexado (ou seja, seu ponto de entrada ddmpx é definido), um i-core de in-core é criado para este canal. A rotina ddmpx do driver de dispositivo também é chamada com o ponteiro cnome para a cadeia de identificação do canal se não nula. Se o ponteiro cnome for nulo, a rotina do driver de dispositivo ddmpx é chamada com o ponteiro para uma sequência de caracteres nula.
Se o driver do dispositivo pode alocar o canal, a rotina ddmpx retorna um ID de canal, representado pelo parâmetro chan . Se o driver do dispositivo não puder alocar um canal, o serviço kernel fpopendev retorna um código de erro ENXIO . Se bem-sucedida, a contagem de referência do i-node é incrementada em 1. A rotina do driver de dispositivo ddopen também é chamada com o devno, bandeira, chan (fornecido por ddmpx rotina), e ext parâmetros.
Se o valor de retorno da rotina do driver de dispositivo especificado ddopen for nonzero, ele será retornado como o código de retorno para o serviço kernel fp_opendev . Se o código de retorno da rotina do driver de dispositivo ddopen for 0, o serviço fp_opendev retornará o ponteiro de arquivo correspondente a esta abertura do dispositivo.
O serviço kernel fp_opendev só pode ser chamado no ambiente de processo ou driver de dispositivo top metade. Os manipuladores de interrupção não podem chamá-la. Supõe-se que todos os argumentos para o serviço kernel fp_opendev estejam no espaço do kernel.
O ponteiro de arquivo (fpp) retornado pelo serviço kernel fp_opendev é válido apenas para uso com um subconjunto dos serviços do Sistema de Arquivos Lógico. Estes nove serviços podem ser chamados:
Outros serviços retornam um valor de retorno EINVAL se chamados.
Ambiente de Execução
O serviço kernel fp_opendev pode ser chamado a partir do ambiente de processo apenas.
Valores De Retorno
| Item | Descrição |
|---|---|
| 0 | Indica uma operação bem-sucedida. |
O campo *fpp também aponta para uma estrutura de arquivo aberto que é válida para uso com os outros serviços do Logical File System. Se ocorrer um erro, um dos seguintes valores a partir do arquivo /usr/include/sys/errno.h é retornado:
| Item | Descrição |
|---|---|
| EINVAL | Indica que a porção principal do parâmetro devno excede o número máximo permitido, ou o parâmetro bandeiras não é válido. |
| ENODEV | Indica que o dispositivo não existe. |
| EINTR | Indica que o sinal foi flagrado enquanto processava a solicitação fp_opendev . |
| ENFILE | Indica que a tabela de arquivos do sistema está cheia. |
| ENXIO | Indica que o dispositivo está multiplexado e incapaz de alocar o canal. |
O serviço fp_opendev também retorna qualquer código de retorno não zero retornado de uma rotina de driver de dispositivo ddopen .