Rechercher une page de manuel
console_ioctl
Langue: pl
Version: 1995-09-18 (openSuse - 09/10/07)
Section: 4 (Pilotes et protocoles réseau)
NAZWA
konsolowe ioctl'e - funkcje ioctl konsoli i konsoli wirtualnychOPIS
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 xs, ys, xe, ye;
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.hContenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre