fd Arquivo Especial

Propósito

Fornece acesso ao driver do dispositivo de disquete.

Descrição

O arquivo especial fd fornece bloqueio de bloco e de caracteres (raw) para disquetes nas unidades de disquete. O nome do arquivo especial geralmente especifica tanto o número da unidade quanto o formato do disquete. As exceções são /dev/fd0 e /dev/fd1, que especificam as unidades de disquete 0 e 1, respectivamente, sem especificar seus formatos.

Os arquivos especiais genéricos /dev/fd0 e /dev/fd1 determinam o tipo de disquete automaticamente para ambos a unidade 0 e unidade 1. Primeiro, o dispositivo-driver tenta ler o disquete usando as características do disquete padrão para o tipo drive. Se isso falhar, o driver de dispositivo altera suas características e tenta ler até que tenha lido o disquete com sucesso ou até que tenha tentado todas as possibilidades suportadas para o tipo drive pelo driver do dispositivo.

Um prefixo r em um nome de arquivo especial significa que a unidade é acessada como um dispositivo bruto em vez de um dispositivo de bloco. Executar a E/S bruta com um disquete requer que todas as transferências de dados estejam em múltiplos de comprimento do setor de disquete. Também, todas as chamadas de subroutine de lseek feitas para o driver de dispositivo de disquete bruto devem resultar em um valor de deslocamento de arquivo que é um múltiplo do tamanho do setor. Para os tipos de disquete suportados, o comprimento do setor é sempre 512 bytes.
Nota: O driver do dispositivo de disquete não realiza verificação de leitura de dados que são gravados em um disquete.

Tipos de Disquetes suportados

O arquivo especial fd suporta três unidades de disquete: a unidade de disquete 1.2MB, 5.25-inch e as unidades de disquete 1.44MB e 2.88MB, 3.5-inch . Todos os nomes de arquivos especiais fd (exceto os arquivos especiais genéricos /dev/fd0, /dev/fd1, /dev/rfd0e /dev/rfd1) contêm sufixos que determinam como um disquete deve ser tratado. Esses nomes de arquivos especiais têm o formato PrefixXY, em que as variáveis Prefix, X e Y têm os seguintes significados:

Item Descrição
Prefixo Tipo de arquivo especial. Os valores possíveis são fd e rfd, em que o r indica o acesso bruto ao arquivo especial.
X Indicador de número da unidade. Os valores possíveis de 0 e 1 indicam unidades 0 e 1, respectivamente.
y Indicador de formato de disquete. Os valores possíveis dependem do tipo de disquete sendo utilizado. É permitido um único caractere ou um ponto decimal seguido de caracteres numéricos. Os valores possíveis são:
h
Maior densidade suportada pelo tipo de unidade
l
Menor densidade suportada pelo tipo de unidade
.9
9 setores por faixa (todos os três tipos de unidade)
15.
15 setores por faixa (apenas unidade de1.2MB, 5.25-inch )
.18
18 setores por faixa (ambos os tipos de unidade 3.5-inch )
.36
36 setores por faixa (apenas unidade2.88MB, 3.5-inch )

1.44MB, 3.5-inch Diskette Special Files

Dez arquivos especiais diferentes estão disponíveis para uso com a unidade de disquete 1.44MB, 3.5-inch .. O tipo de disquete padrão assumido para este tipo drive é um disquete de dupla face, 80-cylinder, 18 setores-por-faixa.

Um h ou .18 como sufixo do nome do arquivo especial (por exemplo,/dev/rfd0hou/dev/fd0.18) força um disquete para ser tratado como um disquete de dupla face, 80-cylinder, 18 setores-por-pista. Um l ou .9 como sufixo do nome do arquivo especial (por exemplo,/dev/fd1lou/dev/rfd0.9) força um disquete para ser tratado como um disquete de dupla face, 80-cylinder, 9 setores-por-pista.

2.88MB, 3.5-inch Diskette Special Files

Doze arquivos especiais diferentes estão disponíveis para uso com a unidade de disquete 2.88MB, 3.5-inch .. O tipo de disquete padrão assumido para este tipo drive é um disquete de dupla face, 80-cylinder, 36 setores-por-faixa.

Um h ou .36 como sufixo do nome do arquivo especial (por exemplo,/dev/fd1hou/dev/fd0.36) força um disquete para ser tratado como um disquete de dupla face, 80-cylinder, 36 setores-por-pista. Um l ou .9 como sufixo do nome do arquivo especial (por exemplo,/dev/rfd0lou/dev/fd1.9) força um disquete para ser tratado como um disquete de dupla face, 80-cylinder, 9 setores-por-pista. Um sufixo de .18 (por exemplo,/dev/fd1.18) força um disquete para ser tratado como um disquete de dupla face, 80-cylinder, 18-setores-por-pista.

1.2MB, 5.25-inch Diskette Special Files

Dez arquivos especiais diferentes estão disponíveis para uso com a unidade de disquete 1.2MB, 5.25-inch . O tipo de disquete padrão assumido para este tipo drive é um disquete de dupla face, 80-cylinder, 15 setores-por-faixa.

Um h ou .15 como sufixo do nome do arquivo especial (por exemplo,/dev/rfd1hou/dev/fd0.15) força um disquete para ser tratado como um disquete de dupla face, 80-cylinder, 15 setores-por-pista. Um l ou .9 como sufixo do nome do arquivo especial (por exemplo,/dev/fd0lou/dev/rfd1.9) força um disquete para ser tratado como um disquete de dupla face, 80-cylinder, 9 setores-por-pista.
Nota: Independente do tipo de unidade de disquete, um h como o sufixo do nome do arquivo especial força um disquete a ser tratado como o disquete de maior capacidade suportado pelo tipo drive. Quando um l é usado como o sufixo do nome do arquivo especial, o disquete é tratado como o disquete de menor capacidade suportado pelo tipo drive.

Considerações De Uso

Ao utilizar subroutines com o arquivo especial fd , considere os seguintes itens:

Item Descrição
subroutines abertas e fechas Apenas um processo por vez pode emitir uma subroutine aberto para ter acesso a uma determinada unidade. No entanto, todos os processos filhos criados por um processo pai que abre com sucesso uma unidade de disquete herdam o drive de disquete aberto.
ler e escrever subroutines Sem considerações especiais.
subroutines de ioctl As possíveis operações ioctl e suas descrições são:
IOCINFO
Retorna uma estrutura devinfo (definida no arquivo /usr/include/sys/devinfo.h ) que descreve o dispositivo.
FDIOCSINFO
Configura as características do disquete do driver de dispositivo para os valores transmitidos na estrutura fdinfo , conforme definido no arquivo /usr/include/sys/fd.h .
FDIOCGINFO
Obtém as características de disquete do driver de dispositivo e retorna os valores na estrutura fdinfo , conforme definido no arquivo /usr/include/sys/fd.h .
FDIOCFORMAT
Formata uma faixa de disquete. O disquete é formatado usando dados passados em uma matriz de bytes. O comprimento desta matriz é quatro vezes o número de setores por faixa no disquete. A razão para isso é que 4 bytes dos dados devem ser repassados para cada setor na pista. Os 4 bytes contêm, nesta ordem, o número do cilindro, o número lateral (0 ou 1), o número do setor, e o número de bytes por setor. Esse padrão deve ser repetido para cada setor na pista.

As características de disquete utilizadas durante a formatação são quaisquer que sejam os valores que estão no driver do dispositivo quando ele recebe o comando format. Essas características precisam ser definidas com os valores desejados antes da emissão do comando formato . Há três maneiras de fazer isso:

  • Abra o driver de disquete usando um dos arquivos especiais específicos do formato. Como resultado, as características de disquete para o driver serão as do disquete indicado pelo arquivo especial.
  • Abra o driver de disquete usando um dos arquivos especiais genéricos. Nesse caso, as características do disquete serão as características padrão para esse driver.
  • Configure as características explicitamente usando a operação ioctl FDIOCSINFO .

Para a formatação, o driver de disquete deve ser aberto apenas quando a sinalização O_NDELAY for definida. Caso contrário, o motorista tentará determinar o tipo de disquete na unidade, fazendo com que o aberto falhe.