Do tematu: Podsystem wejścia-wyjścia
Do tematu: Struktury danych
struct tty_flip_buffer
Jest to struktura służąca do przechowywania znaków drivera terminala, używana jest do przekazywania znaków z terminala do dyscypliny linii.
struct tq_struct | tqueue | kolejka "bottom half" funkcji, ktore mają być wykonane po wystąpieniu przerwania. Inicjalnie kolejka jest jednoelementowa, funkcja do wykonania to flush_to_ldisc()- opróżnienie bufora i przekazanie znaków dyscyplinie linii |
unsigned char | char_buf [2*FLIP_BUF_SIZE] | bufor drivera terminala |
char | flag_buf [2*FLIP_BUF_SIZE] | flagi, związane z każdym ze znaków znajdujących się w buforze char_buf |
char * | char_buf_ptr | bieżąca pozycja w tablicy char_buf |
unsigned char | flag_buf_ptr | bieżąca pozycja w tablicy flag_buf |
int | count | mówi, ile znaków jest akualnie przechowywnych w buforze char_buf |
int | buf_num | mówi, z której połowy tablic char_buf i flag_buf korzystamy: 0 - z
pierwszej, 1 - z drugiej.
Podział na dwie połowy jest potrzebny po to, by w trakcie opróżniania jednej (flush_to_ldisc) znaki nadchodzące do terminala były kierowane do drugiej połowy. |
TTY_NORMAL | znak ma być traktowany jak zwykły znak (zwykłe przetwarzanie) |
TTY_BREAK | Jeśli ze znakiem związana jest ta flaga, to znaczy, że jest to znak związany z przerwaniem. Do procesów związanych z terminalem ma zostać wysłany sygnał SIGINT. Wysłanie sygnału następuje, jeśli nie jest ustawiona flaga IGN_BRK. |
TTY_FRAME | Flagi te są obsługiwane tak samo przez dyscyplinę linii N_TTY. Flaga TTY_PARITY oznacza, że nastąpił błąd kontroli parzystości . |
TTY_PARITY | |
TTY_OVERRUN | Przepełnienie. Gdy przyjdzie znak, z którym związana jest ta flaga, to znak jest ignorowany, zwiększamy licznik num_overrun, jeśli poprzednie przepełnienie było dość dawno, to zerujemy ten licznik i ustawiamy czas overrun_time na jiffies (globalna zmienna licząca liczbe tyknięć zegara). Nie wiadomo, co się dzieje ze zignorowanym znakiem. Nie ma próby odczytania go ponownie. |