Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

ioctl #include <sys/ioctl.h> int ioctl(int d, int request, ...);

Samankaltaiset esitykset


Esitys aiheesta: "ioctl #include <sys/ioctl.h> int ioctl(int d, int request, ...);"— Esityksen transkriptio:

1 ioctl #include <sys/ioctl.h> int ioctl(int d, int request, ...);
ioctl (“I/O ConTroL”) on yleinen laitteiden käsittelyfunktio. Ensimmäinen parametri on tiedostonumero, toinen laiteriippuvainen komentokoodi, loput jotain siitä riippuvaa. Linuxissa on luettelo ioctl-komennoista man-sivulla ioctl_list; se ei kuitenkaan ole kattava.

2 rinnakkaisportti Vanhan rinnakkaisportin (“Centronics”) käsittely Linuxissa tapahtuu ensisijaisesti kernelin parport-järjestelmän ajurien lp (printtereille) ja ppdev kautta funktioilla open, close, read, write ja ioctl (monet muutkin tiedostofunktiot toimivat, erityisesti myös poll ja select). Rinnakkaisportin käsittelyssä tarvittavat ioctl-komennot löytyvät yleensä tiedostosta /usr/include/linux/parport.h.

3 ppdev Muiden rinnakkaisporttiin kytkettyjen laitteiden kuin printtereiden (ja “printterimäisesti toimivien”) ohjausta varten on ppdev, jolla voi suoraan tutkia ja asettaa status-, ohjaus- ja datalinjoja ja reagoida niihin keskeytyksin, ja myös välittää dataa IEEE 1284-protokollan mukaisesti. Sillä voi kirjoittaa “user-level” ajureita - yleensä helpompaa kuin kernel-tason ajurien teko.

4 #include <linux/parport.h>
fd = open(“/dev/parport0”, O_RDWR); ioctl(fd, PPEXCL); ioctl(fd, PPCLAIM); ioctl(fd, PPWCONTROL, ...) write(fd, ...) read(fd, ...) ... ioctl(fd, PPRELEASE); close(fd);

5 ppdev ioctl -kutsut PPCLAIM: pyytää kerneliltä luvan käyttää ao. laitetta. Tämä pitää tehdä ennen kuin laitteelle voi tehdä mitään. PPEXCL: pyytää yksinoikeutta laitteeseen. Vaikuttaa seuraavaan PPCLAIM-kutsuun (pitää tehdä ennen sitä). PPRELEASE: vapauttaa laitteen muiden käyttöön. PPYIELD: vapauttaa laitteen tilapäisesti muiden käyttöön (olennaisesti PPRELEASE + PPCLAIM).

6 PPNEGOT: IEEE 1284-standardikättely haluttuun toimintatilaan, vaihtoehdot parport.h:ssa (IEEE1284_MODE_COMPAT ...). PPSETMODE: asettaa IEEE1284-tilan read- ja write- kutsuja varten. PPGETMODE: palauttaa viimeksi asetetun IEEE1284-tilan. PPSETTIME: asettaa timeout-arvon. PPGETTIME: palauttaa asetetun timeout-arvon.

7 PPGETMODES: palauttaa tiedon laitteiston ominaisuuksista.
PPSETFLAGS: asettaa seuraaviin I/O -operaatioihin vaikuttavia lippuja: PP_FASTWRITE, PP_FASTREAD, PP_W91284PIC

8 PPWCONTROL: asettaa ohjauslinjoja. OR- yhdistelmä parport
PPWCONTROL: asettaa ohjauslinjoja OR- yhdistelmä parport.h:ssa olevista arvoista: PARPORT_CONTROL_STROBE, PARPORT_CONTROL_AUTOFD, PARPORT_CONTROL_INIT, PARPORT_CONTROL_SELECT PPRCONTROL: lukee viimeksi kirjoitetut ohjauslinjojen arvot.

9 PPFCONTROL: kuten PPWCONTROL mutta vaikuttaa vain osajoukkoon ohjauslinjoista. Parametrina struct, jossa on bittimaski ja asetettavat arvot: struct ppdev_frob_struct { unsigned char mask; unsigned char val; }

10 PPRSTATUS: palauttaa statuslinjojen arvot sisältävän tavun.
PPDATADIR: kytkee datalinjojen normaaliohjauksen päälle tai pois. PPWDATA: asettaa datalinjat. PPRDATA: lukee datalinjojen tilan.

11 PPCLIRQ: nollaa keskeytyslaskurin.
PPWCNTLONIRQ: asettaa “liipaisinreaktion”, ts. mitkä ohjauslinjat keskeytyksenkäsittelijä asettaa. Nopeampi kuin omalla käsittelijällä tehty, koska välttää edestakaisen kontekstinvaihdon user-tason koodista kernel-tasolle.


Lataa ppt "ioctl #include <sys/ioctl.h> int ioctl(int d, int request, ...);"

Samankaltaiset esitykset


Iklan oleh Google