La fonction exécute diverses opérations de commande sur le fichier possédant le handle f. Le paramètre cmd décrit l'opération souhaitée et peut prendre les valeurs suivantes (arg dépend ici de la commande sélectionnée) :
F_DUPFD (0) :
Duplique le handle de fichier spécifié. La règle suivante s'applique au nouvel intervalle : arg <= Handle < 32. Si aucun handle libre n'existe dans le segment spécifié, le message d'erreur -35 (ENHNDL) est renvoyé. Un appel à Fdup (handle) est donc équivalent à Fcntl (handle, 6L, F_DUPFD).
F_GETFD (1) :
Cette commande renvoie l'indicateur de non-héritage pour le handle f. L'indicateur est à 0 lorsque les processus enfants démarrés avec Pexec doivent hériter du handle de fichier ; sinon, il a la valeur 1 et le paramètre arg est ignoré.
F_SETFD (2) :
Cette commande définit l'indicateur de non-héritage pour le handle f. arg spécifie si les processus enfants démarrés avec Pexec hériteront du descripteur de fichier ; une valeur de 1 indique que ce n'est pas le cas, et une valeur de 0 qu'ils l'hériteront. La valeur par défaut de l'indicateur est 0 pour les descripteurs GEMDOS standard compris entre 0 et 5, et 1 pour tous les autres, c'est-à-dire les descripteurs non standard.
F_GETFL (3) :
Cette commande renvoie les indicateurs du descripteur de fichier modifiables par l'utilisateur. Nous traitons ici du paramètre mode spécifié à Fopen, tant qu'il n'a pas été modifié par un autre appel à Fcntl. arg est ignoré.
F_SETFL (4) :
Cette commande définit les indicateurs du descripteur de fichier modifiables par l'utilisateur sur arg (les autres bits sont ignorés et doivent être définis sur 0). Il n'est pas possible de modifier le mode lecture/écriture ni les modes de partage de fichiers.
F_GETLK (5) :
Le paramètre arg est un pointeur vers une structure flock, dans laquelle sont stockées les informations relatives aux verrous de fichiers. Si un verrou existe, il est copié dans la structure. L'élément l_pid contient alors le PID du processus de verrouillage. En l'absence de verrou, l'élément l_type prend la valeur F_UNLCK. Si le verrou est détenu par un autre ordinateur du réseau, l'élément l_pid prend la valeur définie par le NFS (Network File System). Pour cette valeur, 0x1000 <= l_pid <= 0xffff. Il est à noter que les PID normaux ont une valeur inférieure à 1000.
F_SETLK (6) :
Cette commande place (l_type = F_RDLCK ou F_WRLCK) ou lève (l_type = F_UNLCK) un verrou consultatif sur le fichier spécifié. S'il s'agit d'une file FIFO (First-In-First-Out), l'intégralité du fichier doit être traitée simultanément. En cas de conflit entre le verrou et ceux définis par d'autres processus, la valeur -58 (ELOCKED) est renvoyée. Si l'on tente de lever un verrou inexistant, la valeur -59 (ENSLOCK) est renvoyée. Il est à noter que les verrous en lecture peuvent se chevaucher, contrairement aux verrous en écriture. Si un fichier verrouillé est fermé ou si le processus correspondant s'arrête, tous les verrous définis sont automatiquement levés (c'est-à-dire réinitialisés).
F_SETLKW (7) :
Similaire à F_SETLK, à la différence qu'en cas de conflit avec ceux d'autres processus, la valeur -58 (ELOCKED ) n'est pas renvoyée, mais le processus verrouillé est suspendu jusqu'à la levée du verrou de l'autre processus.
FSTAT (0x4600) :
Obtient les attributs étendus d'un fichier. Le paramètre arg renvoie un pointeur vers une structure XATTR renseignée avec les attributs étendus du fichier, comme si un appel Fxattr avait été effectué. Cette commande est prise en charge par MagiC depuis la version 3.0.
FIONREAD (0x4601) :
Le paramètre arg renvoie un pointeur vers une valeur LONG indiquant le nombre d'octets pouvant être lus à partir d'un descripteur de fichier spécifié sans bloquer le processus (attente d'entrées supplémentaires). La valeur renvoyée n'est pas nécessairement correcte, car le nombre exact ne peut être qu'estimé dans certains cas. Cette commande est prise en charge par MagiC depuis la version 3.0.
FIONWRITE (0x4602) :
Similaire à FIONREAD, mais le nombre d'octets pouvant être écrits est renvoyé. Cette commande est prise en charge par MagiC depuis la version 3.0.
FUTIME (0x4603) :
Aucune information disponible pour le moment.
FTRUNCATE (0x4604) :
Le paramètre arg est un pointeur vers une valeur LONG contenant la nouvelle longueur du fichier à tronquer. Cette commande est prise en charge par MagiC depuis la version 3.0.
FIOEXECPT (0x4605) :
Le paramètre arg renvoie un pointeur vers une valeur de type LONG spécifiant si le fichier est dans un état d'exception (1) ou non (0).
Les commandes suivantes doivent être appliquées à tous les périphériques terminaux tels que la console ou un pseudo-terminal :
TIOCGETP (0x5400) :
Cette commande renvoie, via le paramètre arg, un pointeur vers une structure sgttyb définissant les paramètres du terminal.
TIOCSETN (0x5401) :
Cette commande permet de définir une nouvelle structure sgttyb définissant les paramètres du terminal. Vous devez d'abord obtenir les paramètres de contrôle du terminal, modifier les modifications souhaitées, puis les définir via cet appel.
TIOCGETC (0x5402) :
Cette commande renvoie, via le paramètre arg, un pointeur vers une structure tchars définissant les caractères de contrôle du terminal.
TIOCSETC (0x5403) :
Cette commande permet de définir de nouveaux caractères de contrôle du terminal. Pour cela, on passe un pointeur dans arg vers une structure tchars définissant les caractères de contrôle. Si un caractère est défini à 0, la fonction correspondante est désactivée.
TIOCGLTC (0x5404) :
Cette commande renvoie, via le paramètre arg, un pointeur vers une structure ltchars dans laquelle sont définis les caractères de contrôle étendus du terminal.
TIOCSLTC (0x5405) :
Cette commande permet de définir de nouveaux caractères de contrôle étendus du terminal. Pour ce faire, on passe dans arg un pointeur vers une structure ltchars dans laquelle sont définis les caractères de contrôle. Si un caractère est défini à 0, la fonction correspondante est désactivée.
TIOCPGRP (0x5406) :
Cette commande renvoie, via le paramètre arg, un pointeur vers l'ID du groupe de processus du terminal.
TIOCSPGRP (0x5407) :
Cette commande permet de définir l'ID du groupe de processus du terminal. Pour ce faire, on passe dans le paramètre arg un pointeur vers le groupe de processus correspondant. Si des processus d'autres groupes tentent d'accéder à ce terminal (lecture ou écriture), des signaux de contrôle de tâche (18 (SIGTSTP), etc.) leur seront envoyés.
TIOCFLUSH (0x5408) :
Cette commande permet de spécifier le type de vidage. Pour cela, le paramètre arg contient un pointeur vers une valeur de type LONG décrivant le type souhaité. Les conditions suivantes s'appliquent :
| Valeur | Signification |
| 0 | Vidage des entrées et sorties |
| Bit 0 défini | Vidage des entrées |
| Bit 1 défini | Vidage des sorties |
TIOCSTOP (0x5409) :
Cette commande interrompt la sortie vers le terminal (similaire au contrôle de flux avec Control-S). Le paramètre arg est alors ignoré.
TIOCSTART (0x540a) :
Cette commande relance la sortie vers le terminal (similaire au contrôle de flux avec Control-Q). Le paramètre arg est alors ignoré.
TIOCGWINSZ (0x540b) :
Cette commande permet de connaître la taille d'une fenêtre texte. Pour cela, un pointeur vers une structure winsize est renvoyé via le paramètre arg. Si un élément de cette structure a la valeur 0, cela signifie que la valeur correspondante est inconnue.
TIOCSWINSZ (0x540c) :
Cette commande permet de définir la taille de la fenêtre. Pour cela, un pointeur vers une structure winsize est transmis via le paramètre arg, qui contient les informations requises. À ce propos, il est important de noter que, bien que le noyau gère l'appel, il laisse son exécution aux gestionnaires de fenêtres. Ces touches envoient également le signal 28 (SIGWINCH) si nécessaire.
TIOCGXKEY (0x540d) :
Cette commande renvoie la définition actuelle d'une touche système (fonction, curseur, etc.). Pour cela, un pointeur vers la structure xkey est passé dans le paramètre arg. L'élément xk_num de la structure doit contenir la touche souhaitée :
| Touche | xk_num |
| 0-9 | F1-F10 |
| 10-19 | F11-F20 (accessible via Maj) |
| 20 | Curseur haut |
| 21 | Curseur bas |
| 22 | Curseur droite |
| 23 | Curseur gauche |
| 24 | Aide |
| 25 | Annuler |
| 26 | Insérer |
| 27 | Clr/Début |
| 28 | Maj + curseur haut |
| 29 | Maj + curseur bas |
| 30 | Maj + curseur droite |
| 31 | Maj + curseur gauche |
La chaîne de caractères terminée par NULL associée à la touche (la convention du langage C s'applique) est renvoyée via l'élément xk_def.
TIOCSXKEY (0x540e) :
Cette commande permet de définir la définition actuelle d'une touche système (fonction, curseur, etc.). Pour cela, un pointeur vers la structure xkey/ est passé dans le paramètre arg, où les éléments xk_num et xk_def doivent être préalablement définis. Après l'exécution de la commande, Fread renvoie la chaîne de texte (au lieu de l'ASCII-0) spécifiée dans xk_def. Cette conversion n'est toutefois possible que si le programme est défini dans le domaine MiNT avec Pdomain et si le terminal lit des caractères avec Fread. La chaîne passée dans xk_def devant être terminée par NULL, un maximum de 7 caractères peut être passé de cette manière.
TIOCIBAUD (0x5412) :
Cette commande permet de définir le débit en bauds pour l'entrée du terminal. Pour cela, un pointeur vers une valeur LONG spécifiant le débit en bauds est passé via le paramètre arg.
TIOCOBAUD (0x5413) :
Cette commande permet de définir le débit en bauds en sortie du terminal. Pour cela, un pointeur est transmis via le paramètre arg vers une valeur LONG spécifiant le débit en bauds.
TIOCCBRK (0x5414) :
Cette commande efface le bit 3 du registre TSR (condition d'interruption) du périphérique MFP68901. Le paramètre arg est ignoré.
TIOCSBRK (0x5415) :
Cette commande active le bit 3 du registre TSR du périphérique MFP68901. Un signal d'interruption est alors envoyé dès que le registre de transmission est vide. Le paramètre arg est ignoré.
TIOCGFLAGS (0x5416) :
Cette commande renvoie dans les 16 bits de poids faible du paramètre LONG pointé par le paramètre arg les indicateurs de contrôle du terminal (c'est-à-dire la configuration actuelle des bits d'arrêt et de données). Les valeurs de masque valides pour arg sont :
| Masque | Signification |
| 0x0001 | 1 bit d'arrêt |
| 0x0002 | 1,5 bits d'arrêt |
| 0x0003 | 2 bits d'arrêt |
| 0x0000 | 8 bits de données |
| 0x0004 | 7 bits de données |
| 0x0008 | 6 bits de données |
| 0x000C | 5 bits de données |
TIOCSFLAGS (0x5417) :
Cette commande définit de nouveaux indicateurs de contrôle du terminal transmis via le paramètre arg.
TIOCOUTQ (0x5418) :
Cette commande renvoie dans arg un pointeur vers une valeur de type LONG contenant le nombre d'octets du tampon de sortie.
TIOCSETP (0x5419) :
Fonctionne de manière similaire à TIOCSETN, à la différence près que (si le terminal prend en charge TIOCOUTQ) la fonction ne renvoie la valeur que lorsque le tampon de sortie est vide.
TCURSOFF (0x6300) :
Cette commande désactive le curseur du terminal. Le paramètre arg est ignoré.
TCURSON (0x6301) :
Cette commande active le curseur du terminal. Le paramètre arg est ignoré.
TCURSBLINK (0x6302) :
Cette commande active le clignotement du curseur du terminal. La fréquence de clignotement est réglable avec TCURSSRATE. Le paramètre arg est ignoré.
TCURSSTEADY (0x6303) :
Cette commande désactive à nouveau le clignotement du curseur du terminal. Le paramètre arg est ignoré.
TCURSSRATE (0x6304) :
Cette commande définit la fréquence de clignotement du curseur du terminal. Pour cela, un pointeur vers une valeur WORD est passé dans arg, spécifiant le nombre d'espaces verticaux après lesquels le curseur doit être inversé.
TCURSGRATE (0x6305) :
Cette commande obtient la fréquence de clignotement du curseur du terminal. Elle est renvoyée sous la forme d'une valeur WORD vers laquelle arg pointe.
Les commandes suivantes ne s'appliquent qu'aux processus (ouverts sous forme de fichiers). Pour ouvrir votre propre processus sous forme de fichier, vous devez spécifier le chemin d'accès à Fopen comme « U:\PROC\processname.-1 ». L'extension -1 sélectionne votre propre processus et -2 le processus parent.
PBASEADDR (0x5002) :
Le paramètre arg renvoie un pointeur vers l'adresse de la page de base GEMDOS du processus ouvert sous forme de fichier. Cette commande est prise en charge par MagiC à partir de la version 3.0.
PPROCADDR (0x5001) :
Le paramètre arg renvoie un pointeur vers l'adresse du PCB (bloc de contrôle de processus). Si la protection mémoire est activée, cette mémoire ne peut pas être lue directement. Utilisez Fseek/Fread sur le fichier de processus ouvert. Ceci permet d'empêcher toute manipulation des champs rgid/ruid/egid/euid du processus, par exemple pour devenir la racine.
PCTXTSIZE (0x5003) :
Le paramètre arg renvoie un pointeur vers une valeur LONG spécifiant la longueur de la structure du contexte de processus. Deux de ces structures se trouvent en mémoire avant le PCB, dont l'adresse peut être demandée via PPROCADDR. La première structure est responsable du contexte de processus actuel, tandis que la seconde contient le contexte enregistré du dernier appel système.
PSETFLAGS (0x5004) :
Cette commande définit les indicateurs du programme (correspondant à ceux de l'en-tête du programme). Pour cela, un pointeur vers une valeur LONG est passé dans arg, dont les 16 bits inférieurs représentent les indicateurs du programme.
PGETFLAGS (0x5005) :
Cette commande obtient les drapeaux du programme en cours. Pour cela, un pointeur vers ces indicateurs est renvoyé via le paramètre arg.
TRACESFLAGS (0x5006) :
Cette commande définit les indicateurs de suivi du processus. Un pointeur vers une valeur WORD est passé dans le paramètre arg, représentant les indicateurs :
- P_ENABLE = 1 (Activation du suivi)
- P_DOS = 2 (Suivi des appels GEMDOS)
- P_BIOS = 4 (Suivi des appels BIOS)
- P_XBIOS = 8 (Suivi des appels XBIOS)
PTRACEGFLAGS (0x5007) :
Cette commande obtient les indicateurs de suivi du processus en cours. Un pointeur La valeur de ces indicateurs est renvoyée via le paramètre arg.
PTRACEGO (0x5008) : (à partir du processeur MC-68020)
PTRACEFLOW (0x5009) :
PTRACESTEP (0x500a) :
PTRACE11 (0x500b) :
Ces fonctions devraient permettre à l'avenir le traçage des processus. Le processus à tracer doit être en état « suspendu » ; il sera réactivé par la fonction de traçage. Ces fonctions ne sont cependant pas encore implémentées.
PLOADINFO (0x500c) :
arg est un pointeur vers la structure ploadinfo. fnamelen doit contenir la longueur du tampon fname en octets, et cmdlin et fname doivent être préalloués (le premier à au moins 128 octets et le second à au moins fnamelen octets). La ligne de commande des processus sera copiée dans cmdlin. Le chemin complet et le nom de fichier du processus parent seront copiés dans fname. Si le tampon est trop court, l'appel renverra -64 (EBADARG).
PFSTAT (0x500d) :
Cette commande correspond à FSTAT. Elle permet d'obtenir les attributs étendus du fichier programme appartenant au processus.
Les commandes suivantes s'appliquent uniquement aux fichiers représentant la mémoire partagée :
SHMGETBLK (0x4d00) :
Cette commande renvoie l'adresse d'un bloc mémoire alloué avec SHMSETBLK (ou un pointeur NULL en cas d'erreur). Pour des raisons de compatibilité, le paramètre arg doit être défini sur 0. Remarque : Différents processus peuvent voir le bloc mémoire à des emplacements différents dans leur espace d'adressage. C'est pourquoi un bloc de mémoire partagée (U:\SHM) ne peut pas contenir de pointeurs absolus vers des données ! Cette commande est prise en charge dans MagiC à partir de la version 3.0.
SHMSETBLK (0x4d01) :
Un pointeur est passé dans le paramètre arg vers un bloc mémoire précédemment alloué avec Malloc/Mxalloc. La mémoire est alors proposée au partage sous le nom de fichier descripteur f. Pour cela, le fichier doit être créé dans le sous-répertoire U:\SHM. Le bloc est marqué de manière à ne pas être libéré à la fin du processus. La longueur sera obtenue et utilisée pour le fichier ouvert et pour l'enregistrement dans le répertoire. Des adresses de bloc non valides entraînent le code d'erreur -40 (EIMBA) ou une erreur de bus ou d'adresse. Cette commande est prise en charge par MagiC depuis la version 3.0.
Les commandes suivantes sont intéressantes pour les CD-ROM :
CDROMREADOFFSET (0x4300) :
Cette commande obtient le numéro de bloc du premier secteur de la dernière session d'un CD multisession. Le paramètre arg contient ce numéro de bloc après l'appel.
CDROMPAUSE (0x4301) :
Cette commande met le CD-ROM en pause lors de la lecture d'un CD audio.
CDROMRESUME (0x4302) :
Cette commande permet de reprendre la lecture d'un CD audio (la pause est annulée).
CDROMPLAYMSF (0x4303) :
Cette commande lance la lecture audio. Le paramètre arg est un pointeur vers une structure cdrom_msf, dans laquelle les heures de début et de fin doivent être saisies en notation MSF.
CDROMPLAYTRKIND (0x4304) :
Cette commande lance la lecture audio. Le paramètre arg est un pointeur vers une structure cdrom_ti dans laquelle les positions de début et de fin doivent être saisies au format piste/index. Sur la plupart des CD audio de la gamme POP,
les pistes ne sont pas subdivisées. Cependant, de nombreux CD classiques présentent également des marquages plus fins ausein des
pistes, sous forme d'index. Attention : Tous les CD-ROM ne peuvent pas accéder directement à des index autres que 1 !
CDROMREADTOCHDR (0x4305) :
Cette commande permet d'obtenir des informations sur la structure d'un CD. Le paramètre arg est un pointeur vers une structure cdrom_tochdr dans laquelle sont saisies la première et la dernière piste du CD.
CDROMREADTOCENTRY (0x4306) :
Cette commande permet d'obtenir des informations complémentaires sur la structure d'un CD. Le paramètre arg est un pointeur vers une structure cdrom_tocentry dans laquelle sont saisies les informations souhaitées.
CDROMSTOP (0x4307) :
Cette commande arrête le lecteur correspondant.
CDROMSTART (0x4308) :
Cette commande démarre le lecteur correspondant et peut également fermer le tiroir.
CDROMEJECT (0x4309) :
Cette commande permet d'ouvrir le tiroir du lecteur correspondant.
CDROMVOLCTRL (0x430a) :
Cette commande permet de modifier le volume et l'affectation des canaux audio. Le paramètre arg est un pointeur vers une structure cdrom_volctrl. La commande est compatible avec l'appel SunOS correspondant. Attention : la modification du volume n'est pas possible avec tous les périphériques !
CDROMSUBCHNL (0x430b) :
Cette commande obtient les données de position actuelle, ainsi que l'état audio. Le paramètre arg est un pointeur vers une structure cdrom_subchnl.
CDROMREADMODE2 (0x430c) :
Cette commande permet la lecture des secteurs en mode 2. Ces secteurs sont utilisés par les CD XA (par exemple : les CD photo sans correction d'erreurs ou les CD vidéo) et contiennent 2 336 octets. Le paramètre arg est un pointeur vers une structure cdrom_read. Attention : Tous les périphériques ne peuvent pas lire ces types de secteurs et tous les pilotes ne proposent pas cette fonction.
CDROMREADMODE1 (0x430d) :
Cette commande permet la lecture des secteurs Mode 1. Ces secteurs ont une taille de 2 048 octets et sont utilisés sur les CD-ROM classiques. Le paramètre arg est un pointeur vers une structure cdrom_read. Attention : Tous les périphériques ne peuvent pas lire ces types de secteurs et tous les pilotes ne proposent pas cette fonction.
CDROMPREVENTREMOVAL (0x430e) :
Cette commande bloque l'éjection du CD-ROM correspondant. Ceci peut être utile, par exemple, si le périphérique est placé dans un lieu public et que l'on souhaite empêcher le vol du CD.
CDROMALLOWRMOVAL (0x430f) :
Cette commande réactive la fonction d'éjection du CD-ROM correspondant.
CDROMAUDIOCTRL (0x4310) :
Cette commande permet de modifier le volume et l'affectation des canaux audio individuels. Le paramètre arg est un pointeur vers une structure cdrom_audioctrl. En définissant l'ensemble d'éléments de cette structure à 0, vous pouvez consulter les paramètres actuels. Attention : La modification du volume n'est pas possible avec tous les périphériques !
CDROMREADDA (0x4311) :
Cette commande permet la lecture des secteurs audio numériques (DA). Ces secteurs ont une taille de 2352 octets et contiennent chacun 588 échantillons au format PCM stéréo 16 bits. Le paramètre arg est un pointeur vers une structure cdrom_read. Attention : Tous les périphériques ne peuvent pas lire ces types de secteurs et tous les pilotes ne proposent pas cette fonction.
CDROMGETMCN (0x4313) :
Cette commande obtient le numéro de catalogue du support, qui permet théoriquement d'identifier facilement un CD. Malheureusement, cette information n'est présente que sur très peu de CD. Le paramètre arg est un pointeur vers une structure cdrom_mcn.
CDROMGETTISRC (0x4314) :
Cette commande obtient le code d'enregistrement international standard (Piste), qui doit représenter les identifiants uniques des pistes individuelles. Le paramètre arg est un pointeur vers une structure cdrom_tisrc.