console_ioctl

Autres langues

Langue: pl

Autres versions - même langue

Version: 1995-09-18 (openSuse - 09/10/07)

Section: 4 (Pilotes et protocoles réseau)

NAZWA

konsolowe ioctl'e - funkcje ioctl konsoli i konsoli wirtualnych

OPIS

Przedstawione poni¿ej argumenty funkcji ioctl() s± specyficzne dla Linuksa. Wymagaj± trzeciego parametru, nazywanego tu argp.
KDGETLED
Pobiranie stanu diod LED. argp wskazuje na zmienn± typu long int. Trzy najmniej znacz±ce bity *argp wskazuj± aktualny stan diod wg schematu:


    LED_CAP       0x04   dioda caps lock 
    LEC_NUM       0x02   dioda num lock 
    LED_SCR       0x01   dioda scroll lock 

KDSETLED
Ustienie diod LED. Diody s± ustawiane odpowiednio do warto¶ci trzech najmniej znacz±cych bitów argp. Jednak¿e je¶li ustawiony jest najbardziej znaczacy bit, stan diod wraca do stanu normalnego: odzwierciedla stan funkcji klawiatury caps lock, num lock i scroll lock.

W j±drach przed 1.1.54 diody odzwierciedla³y jedynie stan znaczników klawiatury, a ioctl KDGETLED/KDSETLED zmienia³y równie¿ stan tych znaczników. Od wersji 1.1.54 diody mog± wy¶wietlaæ dowoln± informacjê, lecz standardowo wskazuj± stan znaczników klawiatury. Do zmiany znaczników klawiatury s³u¿± dwa nastêpne wywo³ania funkcji ioctl.

KDGKBLED
Pobranie warto¶ci znaczników klawiatury: CapsLock, NumLock, ScrollLock (znaczników, nie stanu diod). argp wskazuje na zmienn± typu char, do której zostan± przepisabne warto¶ci znaczników. Najni¿sze trzy bity (maska 0x7) odzwierciedlaj± stan znaczników, a trzy najni¿sze bity nastêpnego bajtu (maska 0x70) zawieraj± domy¶lne ustawienie znaczników. (Od wersji 1.1.54.)
KDSKBLED
Ustawienie warto¶ci znaczników klawiatury: CapsLock, NumLock, ScrollLock (znaczników, nie stanu diod). argp zawiera po¿±dany stan znaczników. Trzy najni¿sze bity (maska 0x7) zawieraj± stan znaczników, a trzy najni¿sze bity nastêpnego bajtu (maska 0x70) zawieraj± domy¶lne ustawienie znaczników. (Od wersji 1.1.54.)
KDGKBTYPE
Pobiranie typ klawiatury. Przekazuje warto¶æ KB_101, zdefiniowan± jako 0x02;
KDADDIO
Dodanie portu we/wy jako poprawnego. Rownowa¿ne funkcji ioperm(arg,1,1).
KDDELIO
Usuniêcie portu we/wy z listy poprawnych portów. Równowa¿ne funkcji ioperm(arg,1,0).
KDENABIO
W³±czenie dostêpu do portów we/wy karty graficznej. Równowa¿ne wywo³aniu ioperm(0x3b4, 0x3df-0x3b4+1, 1).
KDDISABIO
Wy³±czenie dostêpu do portów we/wy karty graficznej. Równowa¿ne wywo³aniu ioperm(0x3b4, 0x3df-0x3b4+1, 0).
KDSETMODE
W³±czenie trybu tekstowego/graficznego. argp przyjmuje warto¶æ:


    KD_TEXT       0x00
    KD_GRAPHICS   0x01

KDGETMODE
Pobranie informacji o ustawionym trybie: tekstowy/graficzny. argp wskazuje na zmienn± typu long, której zostanie nadana jedna z podanych wy¿ej warto¶ci.
KDMKTONE
Wygenerowanie d¼wiêku o okre¶lonej d³ugo¶ci. Ni¿sze 16 bitów argp okre¶la czas wyra¿ony w cyklach zegara, a wy¿sze 16 bitów podaje czas trwania w milisekundach. Je¶li czas trwania jest równy zeru, d¼wiêk zostaje wy³±czony. Sterowanie jest przekazywane natychmiast. Na przyklad, argp = (125<<16) + 0x637 okre¶la d¼wiêk zwykle skojarzony ze znakiem Ctrl-G. (Od wersji 0.99pl1; nie dzia³a w 2.1.49-50.)
KIOCSOUND
W³±czenie lub wy³±czenie generowanie d¼wiêków. Ni¿sze 16 bitów argp okre¶la czas trwania w cyklach zegara (tzn. argp = 1193180/czêstostliwo¶æ). Je¶li argp = 0 wówczas d¼wiek zostaje wy³±czony. W ka¿dym z przypadków sterowanie jest przekazywane natychmiast.
GIO_CMAP
Pobranie z j±dra aktualnie obowi±zuj±cej mapy kolorów. argp wskazuje na 48-bajtow± tablicê. (Od wersji 1.3.3)
PIO_CMAP
Zmiana domy¶lnej mapy kolorów trybu tekstowego. argp wskazuje na 48-bajtow± tablicê, która zawiera kolejno warto¶ci Red, Green i Blue dla dostêpnych 16 kolotów ekranu: 0 brak, 255 pe³na intensywno¶æ. Domy¶lnymi kolorami s±, w kolejno¶ci: czarny, ciemnoczerwony ciemnozielony, br±zowy, ciemnoniebieski, ciemnopurpurowy, ciemny niebieskozielony, jasnoszary, ciemnoszary, jasnoczerwony, jasnozielony, ¿ó³ty, jasnoniebieski, jasnopurpurowy, jasny niebieskozielony i bia³y. (Od wersji 1.3.3.)
GIO_FONT
Pobranie 256-znakowego fontu ekranowego w rozszerzonym formacie. argp wskazuje na tablicê 8192 bajtów. Je¶li aktualnie za³adowany font jest jednym z fontów 512-bajtowych lub je¶li konsola nie jest w trybie tekstowym, funkcja powraca z kodem b³êdu EINVAL.
GIO_FONTX
Pobranie fontu ekranowego i zwi±zanych z nim informacji. argp wskazuje na strukturê typu struct consolefontdesc (patrz PIO_FONTX). Przed wywo³aniem funkcji, polu charcount powinna zostaæ nadana wrto¶æ równa maksymalnej liczbie znaków, jakie siê zmieszcz± w buforze wskazywanym przez chardata. Po zakoñczeniu, charcount i charheight s± wype³niane odpowiednimi informacjami dotycz±cymi aktualnie za³adowanego fontu, a tablica chardata zawiera informacje o foncie, o ile przekazana warto¶æ charcount wskazywa³a wystarczaj±c± ilo¶æ miejsca; w przeciwnym razie bufor nie jest modyfikowany, a zmiennej errno nadawana jest warto¶æ ENOMEM. (Od wersji 1.3.1.)
PIO_FONT
Ustawia 256-znakowy font ekranowy. Jest on ³adowany do generatora znaków karty EGA/VGA. argp wskazuje 8192 bajtow± mapê z 32 bajtami na jeden znak. W przypadku fontów 8xN (0 < N <= 32) wykorzystywane jest tylko pierwszych N bajtów. Ta procedura uniewa¿nia jednocze¶nie odwzorowanie Unicode.
PIO_FONTX
Ustawia font ekranowy i zwi±zane z nim informacje na temat jego prezentacji. argp wskazuje strukturê

struct consolefontdesc {

        u_short charcount;      /* liczba znaków w foncie (256 lub 512) */

        u_short charheight;     /* liiczba wierszy w foncie (1-32) */

        char *chardata;         /* dane fontu w postaci rozszerzonej */

};

Je¶li jest to konieczne, ekran zostanie odpowienio przeskalowany, a do odpowiednich procesów przes³any bêdzie sygna³ SIGWINCH. Ta procedura uniewa¿nia jednocze¶nie odwzorowanie Unicode.

PIO_FONTRESET
Inicjalizuje czcionkê ekranow±, rozmiar i odwzorowanie Unicode do warto¶ci ustawionych podczas startu sytemu. argp nie jest u¿ywany, lecz powinien mieæ warto¶æ NULL, aby zapewniæ zgodno¶æ z przysz³ymi wersjami j±dra. (Od wersji 1.3.28.)
GIO_SCRNMAP
Pobranie z j±dra odwzorowania ekranu. argp wskazuje na obszar o rozmiarze E_TABSZ, który jest wype³niany danymi fontu s³u¿±cymi do wy¶wietlenia poszczególnych znaków. W przypadku gdy aktualnie za³adowany font zawiera wiêcej ni¿ 256 znaków, ta procedura zwraca raczej bezwarto¶ciowe informacje.
GIO_UNISCRNMAP
Pobranie z j±dra pe³nego odwzorowania Unicode. argp wskazuje na obszar o rozmiarze E_TABSZ*sizeof(unsigned short), który jest wype³niany kodami Unicode odpowiednimi dla poszczególnych znaków. Specjalny zestaw kodów Unicode, rozpoczynaj±cy siê od U+F000, s³u¿y do reprezentacji odwzorowania ,,bezpo¶rednio na font'' (,,direct to font''). (Od wersji 1.3.1.)
PIO_SCRNMAP
Za³adowanie do j±dra ,,definiowanej przez u¿ytkownika'' (czwartej) tabeli odwzorowuj±cej bajty na symbole ekranu konsoli, argp wskazuje na obszar o rozmiarze E_TABSZ.
PIO_UNISCRNMAP
Za³adowanie do j±dra ,,definiowanej przez u¿ytkownika'' (czwartej) tabeli odwzorowuj±cej bajty na kody Unicode, które s± z kolei t³umaczone na symbole ekranowe zgodnie z aktualnie za³adowan± tabel± odwzorowania Unicode-na-font. Do bezpo¶redniego odwzorowania na symbole ekranowe mog± byæ wykorzystywane specjalne kody Unicode rozpoczynaj±ce siê od U+F000. (Od wersji 1.3.1.)
GIO_UNIMAP
Pobranie z j±dra mapy odwzorowania Unicode-na-font. argp wskazuje na strukturê

struct unimapdesc {

        u_short entry_ct;

        struct unipair *entries;

};

w której entries wskazuj± na tablicê struktur


struct unipair {

        u_short unicode;

        u_short fontpos;

};

(Od wersji 1.1.92.)

PIO_UNIMAP
Za³adowanie do j±dra mapy odwzorowania Unicode-na-font. argp wskazuje na strukturê typu struct unimapdesc. (Od wersji 1.1.92.)
PIO_UNIMAPCLR
Wyczyszczenie tabeli, je¶li mo¿liwe proponuje algorytm z mieszaniem (hash).

struct unimapinit {

        u_short advised_hashsize;  /* 0 przy braku opinii */

        u_short advised_hashstep;  /* 0 przy braku opinii */

        u_short advised_hashlevel; /* 0 przy braku opinii */

};

(Od wersji 1.1.92.)

KDGKBMODE
Pobranie aktualnego stanu klawiatury. argp wskazuje na zmienn± typu long, której zostanie nadana warto¶æ równa jednej z poni¿szych sta³ych:


    K_RAW         0x00   
    K_XLATE       0x01   
    K_MEDIUMRAW   0x02   
    K_UNICODE     0x03

KDSKBMODE
Ustawienie aktualnego stanu klawiatury. argp wskazuje na zmienn± typu long o warto¶ci równej jednej z powy¿szych sta³ych.
KDGKBMETA
Pobranie trybu obs³ugi klawisza meta. argp wskazuje na zmienn± typu long, której zostanie nadana warto¶æ równa jednej z poni¿szych sta³ych:


    K_METABIT     0x03   ustawienie najwy¿szego bitu 
    K_ESCPREFIX   0x04   kod przedrostkowy ucieczki

KDSKBMETA
Ustawienie trybu obs³ugi klawisza meta. argp wskazuje na zmienn± typu long o warto¶ci równej jednej z powy¿szych sta³ych:
KDGKBENT
Pobranie jednej pozycji z tabeli translacji klawiszy (kod klawisza (keycode) na kod akcji). argp wskazuje na strukturê

struct kbentry {

    u_char kb_table;

    u_char kb_index;

    u_short kb_value;

};

której pierwsze dwa pola maj± nadane warto¶ci o nastêpuj±cym znaczeniu: kb_table okre¶la rodzaj tabeli (0 <= kb_table < MAX_NR_KEYMAPS), a kb_index oznacza kod klawisza (keycode) (0 <= kb_index < NR_KEYS). Polu kb_value zostaje nadany odpowiedni kod akcji, K_HOLE, je¶li nie ma takiego klawisza, a K_NOSUCHMAP, je¶li kb_table jest niepoprawne.

KDSKBENT
Nadanie warto¶ci jednej pozycji tabeli translacji. argp wskazuje na strukturê typu struct kbentry.
KDGKBSENT
Pobranie ³añcucha znaków przypisanego klawiszowi funkcyjnemu. argp wskazuje na strukturê

struct kbsentry {

    u_char kb_func;

    u_char kb_string[512];

};

kb_string przypisywany jest zakoñczony znakiem NUL ³añcuch znaków, odpowiadaj±cy kodowi akcji kb_func-tego klawisza funkcyjnego.

KDSKBSENT
Przypisuje klawiszowi funkcyjnemu ³añcuch znaków. argp wskazuje na strukturê typu struct kbsentry.
KDGKBDIACR
Odczytanie tabeli akcentów j±dra. argp wskazuje na strukturê

struct kbdiacrs { 

    unsigned int kb_cnt;

    struct kbdiacr kbdiacr[256];

};

gdzie kb_cnt oznacza liczbê pozycji w tablicy, z których ka¿da jest struktur±

struct kbdiacr { u_char diacr, base, result; };

KDGETKEYCODE
Odczytanie pozycji z tabeli kodów klawiszy (scan code to keycode). argp wskazuje na strukturê

struct kbkeycode { unsigned int scancode, keycode; };

keycode otrzymuje warto¶æ odpowiedni± dla podanego scancode. (Tylko z zakresu 89 <= scancode <= 255. Dla 1 <= scancode <= 88, jest keycode==scancode.) (Od wersji 1.1.63.)

KDSETKEYCODE
Zapisanie pozycji w tabeli kodów klawiszy j±dra. argp wskazuje na strukture typu struct kbkeycode. (Od wersji 1.1.63.)
KDSIGACCEPT
Proces wywo³uj±cy tê funkcjê wskazuje sw± chêæ do przyjêcia sygna³u argp, generowanego przez wci¶niêcie odpowiedniej kombinacji klawiszy. (1 <= argp <= NSIG). (Patrz spawn_console() w linux/drivers/char/keyboard.c.)
VT_OPENQRY
Przekazanie pierwszej dostêpnej (ale nie otwartej) konsoli. argp wskazuje na zmienn± typu int, której zostanie nadana warto¶æ równa numerowi konsoli wirtualnej (1 <= *argp <= MAX_NR_CONSOLES).
VT_GETMODE
Pobranie trybu aktywnej konsoli wirtualnej. argp wskazuje na struktuê

struct vt_mode {

    char mode;     /* tryb konsoli wirtualnej */

    char waitv;    /* je¶li ustawione, czeka przy zapisie,

                            je¶li nie jest aktywna */

    short relsig;  /* sygna³ w przypadku zwolnienia */

    short acqsig;  /* sygna³ w przypadku uzyskania */

    short frsig;   /* niewykorzystane (równe 0) */

};

mode mo¿e przyjmowaæ nastêpuj±ce warto¶ci:


    VT_AUTO       autoamtyczne prze³±czanie vt
    VT_PROCESS    prze³±czanie sterowane przez proces
    VT_ACKACQ     potwierdzanie prze³±czenia

VT_SETMODE
Ustawienie trybu aktywnej konsoli wirtualnej. argp wskazuje na strukturê typu struct vt_mode.
VT_GETSTATE
Ustawienie globalne informacje o stanie konsoli wirtualnej. argp wskazuje na strukturê

struct vt_stat {

    ushort v_active;  /* aktywna konsola wirtualna */

    ushort v_signal;  /* sygna³ do wys³ania */

    ushort v_state;   /* maska bitowa konsoli wirt. */

};

Dla ka¿ej aktualnie u¿ywanej konsoli ustawiany jest odpowiedni bit w polu v_state. (J±dra od 1.0 do 1.1.92.)

VT_RELDISP
Zwolnienie ekranu.
VT_ACTIVATE
Prze³±czenie na konsolê argp (1 <= argp <= MAX_NR_CONSOLES).
VT_WAITACTIVE
Oczekiwanie na aktywacjê konsoli wirtualnej argp.
VT_DISALLOCATE
Zwolnienie pamiêci przydzielonej dla konsoli wirtualnej argp. (Od wersji 1.1.54.)
VT_RESIZE
Zmiana wybra¿enia j±dra o rozmiarach ekranu. argp wskazuje na strukturê

struct vt_sizes {

    ushort v_rows;       /* liczba wierszy  */

    ushort v_cols;       /* liczba kolumn */

    ushort v_scrollsize; /* aktualnie nie u¿ywane */

};

Nale¿y pamiêtaæ, ¿e nie zmienia to trybu karty graficznej Patrz resizecons(8). (Od wersji 1.1.54.)

VT_RESIZEX
Zmiana wyobra¿enia j±dra o ró¿nych parametrach ekranu. argp wskazuje na strukturê

struct vt_consize {

        ushort v_rows;          /* liczba wierszy */

        ushort v_cols;          /* liczba kolumn */

        ushort v_vlin;          /* liczba wierszy pikseli na ekranie */

        ushort v_clin;          /* liczba wierszy pikseli na znak */

        ushort v_vcol;          /* liczba kolumn pikseli na ekranie */

        ushort v_ccol;          /* liczba kolumn pikseli na znak */

};

Ka¿dy z parametrów mo¿e mieæ warto¶æ zerow±, co oznacza ,,nie zmieniaæ'', lecz je¶li jednoczêsnie zmienianych jest kilka parametrów, musz± one byæ ze sob± zgodne. Nale¿y pamiêtaæ, ¿e nie zmienia to trybu karty graficznej Patrz resizecons(8). (Od wersji 1.3.3.)

Dzia³anie poni¿szych funkcji ioctl jest zale¿ne od warto¶ci pierwszego bajtu struktury wskazywanej przez argp, tutaj oznaczanego jako subcode. Mog± z nich korzystaæ jedynie administrator i w³a¶ciciel aktualnej konsoli.

TIOCLINUX, subcode=0
Zrzut ekranu Zniknêlo w 1.1.92. (Dla j±dra 1.1.92 i pó¼niejszych, obecnie nale¿y zamiast tego czytaæ z /dev/vcsN lub /dev/vcsaN.)
TIOCLINUX, subcode=1
Pobranie inforamcji o zadaniu. Zniknê³o w 1.1.92.
TIOCLINUX, subcode=2
Ustawienie zaznaczenia. argp wskazuje na strukturê


   struct {char subcode;
       short xsysxeye;
       short sel_mode;
   }

xs i ys oznaczaj± pocz±tkow± kolumnê i wiersz xe i ye oznaczaj± koñcow± kolumnê i wiersz. (Górny lewy róg ma wspó³rzêdne wiersz=kolumna=1.) sel_mode jest równe 0 w przypadku zaznaczania znak po znaku, 1 - s³owo po s³owie, lub 2 - wiersz po wierszu. Zaznaczone znaki ekranowe s± pod¶wietlone i zachowane w statycznej tablicy sel_buffer zdefiniowanej w devices/char/console.c.

TIOCLINUX, subcode=3
Wstawienie zanaczenia. Znaki znajduj±ce siê w buforze zaznaczenia s± zapisywane do fd.
TIOCLINUX, subcode=4
Odtworzenie ekranu po wygaszeniu.
TIOCLINUX, subcode=5
Wype³nienie 256-bitowej tablicy definuj±cej znaki w "s³owie" dla zaznaczania "s³owo-po-s³owie". (Od wersji 1.1.32.)
TIOCLINUX, subcode=6
argp wskazuje na zmienn± typu char, której nadawana jest warto¶æ zmiennej j±dra shift_state. (Od wersji 1.1.32.)
TIOCLINUX, subcode=7
argp wskazuje na zmienn± typu char, której nadawana jest warto¶æ zmiennej j±dra report_mouse. (Od wersji 1.1.33.)
TIOCLINUX, subcode=8
Zrzucenie informacji o szeroko¶ci i wysoko¶ci ekranu, pozycji kursora i wszystkich parach znak-atrybuty. (Tylko j±dra od 1.1.67 do 1.1.91. Pocz±wszy od 1.1.92 mo¿na przecztyaæ wszystkie te inforamcje z /dev/vcsa*.)
TIOCLINUX, subcode=9
Odtworzenie rozmiaru ekranu, po³o¿enia kursora i wszystkich par znak-atrybut. (Tylko j±dra od 1.1.67 do 1.1.91. Pocz±wszy od j±dra 1.1.92, mo¿na to wykonaæ przez zapis do /dev/vcsa*.)
TIOCLINUX, subcode=10
Obs³uguje funkcjê oszczêdzania energii (Power Saving) monitorów nowej generacji. Tryb wygaszania ekranu VESA przyjmuje warto¶æ argp[1], co powoduje sterowanie wygaszaniem ekranu w sposób nastêpuj±cy:


    0: Wygaszanie ekranu jest wy³±czone.


    1: Aktualne zawarto¶ci rejestrów karty graficznej zostaj± zachowane, nastêpnie sterownik zostaje zaprogramowany tak, aby wy³±czy³ impulsy synchronizacji pionowej. Powoduje to przestawienie monitora w tryb oczekiwania (standby). Je¶li monitor posiada licznik czasowy Off_Mode, wtedy mo¿e ewentualnie sam wy³±czyæ zasilanie.


    2: Zostaj± zachowane aktualne ustawienia, nastêpnie wy³±czane s± zarówno impulsy synchronizacji zarówno pionowej, jak i poziomej. Powoduje to wy³aczenie monitora (tryb "off"). Opcjê tê nale¿y wybraæ je¶li monitor nie posiada licznika czasowego Off_Mode lub je¶li chcemy aby monitor wy³±czy³ siê natychmiast. (Ostrze¿enei: Czêste wy³±czanie zasilania mo¿e uszkodziæ monitor.)

(Od wersji 1.1.76.)

WARTO¦Æ ZWRACANA

Po pomy¶lnym zakoñczeniu zwracane jest 0. Po b³êdzie zwracane jest -1 i ustawiana jest zmienna errno.

B£ÊDY

errno mo¿e przyjmowaæ nastêpuj±ce warto¶ci:
EBADF
deskryptor pliku jest nieprawid³owy.
ENOTTY
deskryptor pliku nie jest skojarzony ze specjalnym urz±dzeniem znakowym lub podane polecenie nie ma do niego zastosowania.
EINVAL
deskryptor pliku lub argp jest niepoprawny.
EPERM
naruszenie uprawnieñ.

OSTRZE¯ENIE

Nie nale¿y traktowaæ tej strony podrêcznika jak dokumentacji funkcji ioctl dla konsoli Linuksa. Jest ona przeznaczona dla ciekawskich jako alternatywa wobec czytania zróde³ j±dra. Funkcje ioctl s± niudokumentowanymi funkcjami wewnêtrznymi Linuksa, które mog± ulec zmianie bez ostrze¿enia (i rzeczywi¶cie, ten dokument odzwierciedla w sposób mniej lub bardziej dok³adny sytuacjê dla j±dra w wersji 1.1.94; istnieje wiele mniej i bardziej znacz±cych ró¿nic w stosunku do poprzednich wersji.)

Bardzo czêsto wywo³ania funkcji ioctl s± wprowadzane w celu komunikacji pomiêdzy j±drem i szczególnymi, dobrze znanymi programami (fdisk, hdparm, setserial, tunelp, loadkeys, selection, setfont itd.), i ich zachowanie zostanie zmienione, kiedy bêdzie tego wymaga³ który¶ z tych programów.

Programy korzystaj±ce z tych wywo³añ ioctl nie bêd± przeno¶ne na inne systemy Unix, nie bêd± dzia³aæ poprawnie ze starszymi wersjami jadra Linuksa, ani nie bêd± wspó³pracowaæ z przysz³ymi wersjami j±dra.

Nale¿y korzystaæ z funkcji zgodnych z POSIX.

ZOBACZ TAK¯E

kbd_mode(1), loadkeys(1), dumpkeys(1), mknod(1), setleds(1), setmetamode(1), ioperm(2), execve(2), fcntl(2), termios(3), console(4), console_codes(4), mt(4), sd(4), tty(4), ttys(4), tty_ioctl(4), vcs(4), vcsa(4), charsets(7), mapscrn(8), setfont(8), resizecons(8), /usr/include/linux/kd.h, /usr/include/linux/vt.h