Fichier spécial fd

Objectif

Permet d'accéder au pilote d'unité de disquette.

Descriptif

Le fichier spécial Fd fournit un accès par bloc et par caractère (brut) aux disquettes des unités de disquette. Le nom de fichier spécial indique généralement à la fois le numéro d'unité et le format de la disquette. Les exceptions sont /dev/fd0 et /dev/fd1, qui spécifient les unités de disquette 0 et 1, respectivement, sans spécifier leur format.

Les fichiers spéciaux génériques /dev/fd0 et /dev/fd1 déterminent automatiquement le type de disquette pour l'unité 0 et l'unité 1. Tout d'abord, le pilote de périphérique tente de lire la disquette en utilisant les caractéristiques de la disquette par défaut pour le type d'unité. En cas d'échec, le pilote de périphérique modifie ses caractéristiques et tente de lire jusqu'à ce qu'il ait lu correctement la disquette ou jusqu'à ce qu'il ait essayé toutes les possibilités prises en charge pour le type d'unité par le pilote de périphérique.

Un préfixe R sur un nom de fichier spécial signifie que l'unité est accessible en tant qu'unité en mode brut plutôt qu'en tant qu'unité par bloc. L'exécution d'E-S en mode brut avec une disquette nécessite que tous les transferts de données soient des multiples de la longueur du secteur de la disquette. De plus, tous les appels de sous-programmes Lseek passés au pilote d'unité de disquette en mode brut doivent générer une valeur de décalage de fichier multiple de la taille du secteur. Pour les types de disquette pris en charge, la longueur du secteur est toujours de 512 octets.
Remarque: Le pilote d'unité de disquette n'effectue pas de vérification de la lecture des données écrites sur une disquette.

Types de disquettes pris en charge

Le fichier spécial fd prend en charge trois unités de disquette: l'unité de disquette 1.2MB, 5.25-inch , et les unités de disquette 1.44MB et 2.88MB, 3.5-inch . Tous les noms de fichiers spéciaux fd (à l'exception des fichiers spéciaux génériques /dev/fd0, /dev/fd1, /dev/rfd0et /dev/rfd1) contiennent des suffixes qui indiquent comment traiter une disquette. Ces noms de fichiers spéciaux ont le format PrefixXY, où les variables Prefix, X et Y ont les significations suivantes :

Article Descriptif
Préfixe Type de fichier spécial. Les valeurs possibles sont Fd et rfd, où R indique l'accès brut au fichier spécial.
X Indicateur de numéro d'unité. Les valeurs possibles de 0 et 1 indiquent les unités 0 et 1, respectivement.
Y Indicateur de format de disquette. Les valeurs possibles dépendent du type de disquette utilisé. Un caractère unique ou un séparateur décimal suivi de caractères numériques est autorisé. Les valeurs possibles sont les suivantes :
h
Densité la plus élevée prise en charge par le type d'unité
l
Densité la plus faible prise en charge par le type d'unité
.9
9 secteurs par piste (les trois types d'entraînement)
.15
15 secteurs par piste (1.2MB, unité 5.25-inch uniquement)
.18
18 secteurs par piste (types d'unité 3.5-inch )
.36
36 secteurs par piste (2.88MB, unité 3.5-inch uniquement)

1.44MB, 3.5-inch

Dix fichiers spéciaux différents peuvent être utilisés avec l'unité de disquette 1.44MB, 3.5-inch . Le type de disquette par défaut utilisé pour ce type d'unité est une disquette double face, 80 cylindres, 18 secteurs par piste.

h ou .18 comme suffixe du nom de fichier spécial (par exemple,/dev/rfd0hou/dev/fd0.18) force une disquette à être traitée comme une disquette double face, 80 cylindres, 18 secteurs par piste. l ou .9 comme suffixe du nom de fichier spécial (par exemple,/dev/fd1lou/dev/rfd0.9) force une disquette à être traitée comme une disquette double face, 80 cylindres, 9 secteurs par piste.

2.88MB, 3.5-inch

Douze fichiers spéciaux différents peuvent être utilisés avec l'unité de disquette 2.88MB 3.5-inch . Le type de disquette par défaut utilisé pour ce type d'unité est une disquette double face, 80 cylindres, 36 secteurs par piste.

h ou .36 comme suffixe du nom de fichier spécial (par exemple,/dev/fd1hou/dev/fd0.36) force une disquette à être traitée comme une disquette double face, 80 cylindres, 36 secteurs par piste. l ou .9 comme suffixe du nom de fichier spécial (par exemple,/dev/rfd0lou/dev/fd1.9) force une disquette à être traitée comme une disquette double face, 80 cylindres, 9 secteurs par piste. Un suffixe de .18 (par exemple,/dev/fd1.18) force une disquette à être traitée comme une disquette double face, 80 cylindres, 18 secteurs par piste.

1.2MB, 5.25-inch Fichiers spéciaux de disquette

Dix fichiers spéciaux différents peuvent être utilisés avec l'unité de disquette 1.2MB 5.25-inch . Le type de disquette par défaut utilisé pour ce type d'unité est une disquette double face, 80 cylindres, 15 secteurs par piste.

h ou .15 comme suffixe du nom de fichier spécial (par exemple,/dev/rfd1hou/dev/fd0.15) force une disquette à être traitée comme une disquette double face, 80 cylindres, 15 secteurs par piste. l ou .9 comme suffixe du nom de fichier spécial (par exemple,/dev/fd0lou/dev/rfd1.9) force une disquette à être traitée comme une disquette double face, 80 cylindres, 9 secteurs par piste.
Remarque: Quel que soit le type d'unité de disquette, h comme suffixe du nom de fichier spécial force une disquette à être traitée comme la disquette la plus haute capacité prise en charge par le type d'unité. Lorsqu'un l est utilisé comme suffixe du nom de fichier spécial, la disquette est considérée comme la disquette de plus faible capacité prise en charge par le type d'unité.

Usage Considerations

Lorsque vous utilisez des sous-routines avec le fichier spécial Fd , tenez compte des éléments suivants:

Article Descriptif
ouvrir et fermer des sous-routines Un seul processus à la fois peut émettre une sous-routine ouvrir pour accéder à une unité particulière. Cependant, tous les processus enfant créés par un processus parent qui ouvre correctement une unité de disquette héritent de l'unité de disquette ouverte.
sous-routines de lecture et d'écriture Aucune considération particulière.
sous-routines ioctl Les opérations ioctl possibles et leurs descriptions sont les suivantes:
IOCINFO
Renvoie une structure devinfo (définie dans le fichier /usr/include/sys/devinfo.h ) qui décrit l'unité.
FDIOCSINFO
Définit les caractéristiques de la disquette du pilote de périphérique sur les valeurs transmises dans la structure fdinfo , comme défini dans le fichier /usr/include/sys/fd.h .
FDIOCGINFO
Extrait les caractéristiques de la disquette du pilote de périphérique et renvoie les valeurs de la structure fdinfo , comme défini dans le fichier /usr/include/sys/fd.h .
FORMAT FDIOC
Formate une piste de disquette. La disquette est formatée à l'aide de données transmises dans un tableau d'octets. La longueur de ce tableau est égale à quatre fois le nombre de secteurs par piste sur la disquette. La raison en est que 4 octets de données doivent être transmis pour chaque secteur sur la piste. Les 4 octets contiennent, dans cet ordre, le numéro de cylindre, le numéro de côté (0 ou 1), le numéro de secteur et le nombre d'octets par secteur. Ce schéma doit être répété pour chaque secteur sur la piste.

Les caractéristiques de disquette utilisées lors du formatage sont les valeurs qui se trouvent dans le pilote de périphérique lorsqu'il reçoit la commande de formatage. Ces caractéristiques doivent être définies sur les valeurs souhaitées avant d'émettre la commande format . Vous pouvez effectuer cette opération de trois manières:

  • Ouvrez le pilote de disquette à l'aide de l'un des fichiers spéciaux spécifiques au format. Par conséquent, les caractéristiques de la disquette pour le pilote seront celles de la disquette indiquée par le fichier spécial.
  • Ouvrez le pilote de disquette à l'aide de l'un des fichiers spéciaux génériques. Dans ce cas, les caractéristiques de la disquette seront les caractéristiques par défaut de ce pilote.
  • Définissez les caractéristiques de manière explicite à l'aide de l'opération ioctl FDIOCSINFO .

Pour le formatage, le pilote de disquette doit être ouvert uniquement lorsque l'indicateur O_NDELAY est défini. Sinon, le pilote tente de déterminer le type de disquette dans l'unité, ce qui entraîne l'échec de l'ouverture.