Provided by: manpages-nl-dev_4.13-4_all 

NAAM
ioctl - manipuleer apparaat
SAMENVATTING
#include <sys/ioctl.h>
int ioctl(int bi, unsigned long verzoek, ...);
BESCHRIJVING
De ioctl() functie manipuleert de onderliggende apparaat parameters van speciale bestanden. In heb
bijzonder vele werkings eigenschappen van teken speciale bestanden ("terminals" {terminals}) kunnen
bestuurd worden met ioctl() verzoeken. Het argument bi moet een open bestands indicator zijn.
Het tweede argument is een apparaat-afhankelijke aanvraag code. Het derde argument is een wijzer (zonder
type) naar het geheugen. Traditioneel is het char *argp (van de tijd voordat void * geldig C was), en
het wordt zo genoemd in deze discussie.
Een ioctl() verzoek heeft in zichzelf gecodeerd of het argument een in parameter of uit parameter is, en
de grootte van het argument argp in bytes. Macro's en definities die gebruikt worden in het opgeven van
een ioctl() verzoek zijn te vinden in het bestand <sys/ioctl.h>.
EIND WAARDE
Bij success wordt nul teruggegeven. Enkele ioctl() verzoeken gebruiken de retour waarde als een uitvoer
parameter en retourneren een niet-negative waarde bij succes. Bij falen wordt -1 teruggegeven en
errnowordt overeenkomstig gezet.
FOUTEN
EBADF bb is geen geldige bestandsbeschrijving.
EFAULT argp verwijst naar een ontoegankelijk geheugen gebied.
EINVAL request of argp is ongeldig.
ENOTTY bi is niet verbonden met een karakter speciaal apparaat.
ENOTTY Het opgegeven verzoek gaat niet op voor het soort voorwerp waar de beschrijver bi naar wijst.
VOLDOET AAN
Geen enkele standaard. Argumenten, uitvoerwaarden en semantiek van ioctl(2) wisselt naar gelang het
betreffende apparaat stuurprogramma (de aanroep wordt gebruikt als een goed-voor-de-rest voor
handelingen die niet netjes in het Unix stroom Invoer/Uitvoer model passen).
De ioctl() systeem aanroep verscheen in Versie 7 AT&T UNIX.
OPMERKINGEN
Om deze systeem aanroep te gebruiken moet men een open bestandsbeschrijving hebben, Vaak heeft de open(2)
niet gewenste neven effecten, die vermeden kunnen worden onder Linux door het meegeven van de O_NONBLOCK
vlag.
ioctl structure
Ioctl commando waarden zijn 32-bits constanten. In principe zijn deze constanten volledig willekeurig,
hoewel men er enige structuur in heeft proberen in te bouwen.
De oude Linux situatie bestond uit veelal 16-bit constanten, waarbij het laatste byte een serieel getal
was, en het voorafgaande byte was de type aanduiding van het betreffende stuurprogramma. Soms werden als
belangrijkste getallen gebruikt: 0x03 voor de HDIO_* ioctls, 0x06 voor de LP* ioctls. En soms werden een
of meerdere ASCII letters gebruikt. Bij voorbeeld, TCGETS heeft waarde x00005401, met 0x54 = 'T'
wijzende op het terminal stuurprogramma, en CYGETTIMEOUT heeft waarde 0x00435906, met 0x43 0x59 = 'C'
'Y' wijzende op het cyclade stuurprogramma.
Later (0.98p5) werd meer informatie in het getal ingebouwd. Een heeft 2 richting bits (00: geen, 01:
schrijf, 10: lees, 11: lees/schrijf) gevolgd door de 14 bits grootte (aangevende de grootte van het
argument), gevolgd door een 8-bit type (die verzamelen de ioctls in groepen met een gemeenschappelijk
doel or een gemeenschappelijk stuurprogramma), en een 8-bit serieel getal,
De macro´s die de structuur beschrijven staan in <asm/ioctl.h> en zijn _IO(type,nr) en
{_IOR,_IOW,_IOWR}(type,nr,size). Ze gebruiken sizeof(size) waarbij dat een verkeerde benaming is: dit
derde argument is een data type.
Let op dat de grootte bits erg onbetrouwbaar zijn: in veel gevallen zijn ze verkeerd, ofwel door de
macro´s met fouten die sizeof(sizeof(struct)) gebruiken, ofwel door gebruik van geërfde waarden.
Dus, het lijkt erop dat de nieuwe structuur alleen nadelen gaf: het helpt in bij controles, maar het
zorgt voor variërende waarden voor de diverse architecturen.
ZIE OOK
execve(2), fcntl(2), ioctl_console(2), ioctl_fat(2), ioctl_ficlonerange(2), ioctl_fideduperange(2),
ioctl_getfsmap(2), ioctl_iflags(2), ioctl_list(2), ioctl_ns(2), ioctl_tty(2), ioctl_userfaultfd(2),
open(2), sd(4), tty(4)
COLOFON
Deze pagina is onderdeel van release 5.10 van het Linux man-pages-project. Een beschrijving van het
project, informatie over het melden van bugs en de nieuwste versie van deze pagina zijn op
https://www.kernel.org/doc/man-pages/ te vinden.
VERTALING
De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema <joshb@xs4all.nl>, Mario
Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>
Deze vertaling is vrije documentatie; lees de GNU General Public License Version 3 of later over de
Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.
Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar debian-l10n-
dutch@lists.debian.org.
Linux 11 april 2020 IOCTL(2)