Do tematu: Podsystem wejścia-wyjścia

Do tematu: Struktury danych

Struktura tq_struct

Struktura tq_struct reprezentuje funkcję "bottom half" oraz jej argument. Struktury tq_struct umieszczane są w kolejkach zadań. Definicja kolejki zadań jest następująca:

typedef struct tq_struct* task_queue

Przykładowe kolejki to tq_timer, dla funkcji obsługujących przerwania od zegara oraz tq_disk dla funkcji obsługujących przerwania od dysku. Definicja struktury tq_struct oraz kolejki zadań znajduje się w pliku /include/linux/tqueue.h

typ nazwa pola opis
struct tq_struct * next Wskaźnik do następnej struktury tq_struct w kolejce zadań.
int sync Pole sync przyjmuje wartość 0 lub 1. Funkcje, wstawiające strukturę tq_struct do kolejki zadań, sprawdzają czy wartość pola sync jest równa 0. Jeśli tak, to przypisują polu temu wartość 1 i wstawiają strukturę na początek kolejki zadań. Jeśli nie, to struktura nie zostanie wstawiona. Po zdjęciu struktury z kolejki, polu sync nadawana jest wartość 0. Początkową wartością tego pola jest również 0. W ten sposób żadna struktura tq_struct nie zostanie umieszczona w kolejkach zadań więcej niż jeden raz.
void (*routine)(void *) Wskaźnik do funkcji "bottom half"
void * data Argument funkcji *routine


Autor: Maciej Kaczmarek