Struktury związane z szeregowaniem żądań do urządzeń blokowych


  • 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.



Wstecz Tomasz Wadowski Dalej