Syscall BSD#54
svc · unix #54
ioctl
Émet une requête de contrôle propre au pilote sur l'objet noyau associé à un descripteur de fichier.
Prototype
int ioctl(int fd, u_long com, caddr_t data);Retour: int
Arguments
| Name | Type | Dir | Description |
|---|---|---|---|
| fd | int | - | |
| com | u_long | - | |
| data | caddr_t | - |
Historique des versions
| XNU tag | macOS | # |
|---|---|---|
| xnu-1456.1.26 | macOS 10.6 Snow Leopard | 54 |
| xnu-1486.2.11 | — | 54 |
| xnu-1504.15.3 | — | 54 |
| xnu-1504.3.12 | — | 54 |
| xnu-1504.7.4 | — | 54 |
| xnu-1504.9.17 | — | 54 |
| xnu-1504.9.26 | — | 54 |
| xnu-1504.9.37 | — | 54 |
Exemples
C — terminal window size
struct winsize ws;
ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws);Notes
Chaque pilote définit ses propres numéros de requête via les macros _IO/_IOR/_IOW/_IOWR. ioctl est l'API principale pour le contrôle des terminaux (TIOC*), la configuration des sockets (SIOC*), la géométrie disque (DKIOC*) et BPF. Beaucoup de requêtes exigent root ou des entitlements précis; SIP restreint en plus les binaires non signés pour les opérations privilégiées DKIOC.
Détection
syscall::ioctl:entry en DTrace expose le numéro de requête; corréler avec sys/ioccom.h pour décoder direction et groupe. Pas d'évènement ES natif.
API associées
fcntlopentcgetattrtcsetattrselect