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

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)