-
struktura "request_queue" - reprezentująca kolejkę żądań do danego użądzenia.
Zawiera ona:
- Pierwszy element listy struktur request reprezentujących żądania skierowane do danego użądzenia: queue_head.
- dwie listy z wolnymi obiektami request, jedną do czytania, drugą do pisania: request_freelist.
- windę elevator do przegladania żądań i znajdowania odpowiedniego miejsca(algorytm windy) na umieszczenie nowych żądań.
- funkcję request_fn odpowiedzialną za przetwarzanie żądań.
- funkcję make_request_fn odpowiedzialną za dodawanie nowych żądań.
- zestaw funkcji do łączenia request-ów (back_merge_fn, front_merge_fn, merge_requests_fn).
- funkcję korkującą: plug_device_fn.
- kolejkę zadań: plug_tq służącą do odkorkowywania kolejki żądań.
- bit informujący czy kolejka jest zakorkowana: plugged.
- informacje czy pierwszy element kolejki jest aktywny(przetwarzany): head_active.
- kolejkę wait_for_request do oczekiwania na wolne struktury request.
|