Proces szeregowania żądań do urządzeń blokowych | |||
Funkcja submit_bh ustawia pewne pola w przekazanej jej, strukturze bufora, i wywołuje funkcję generic_make_request. Funkcja generic_make_request: Parametry wejściowe: czytanie czy pisanie, bufor początek funkcji sprawdzanie czy nie wyjdziemy poza urządzenie pobierz kolejkę żądań, funkcją blk_get_queue wywołaj funkcję make_request_fn przypisaną tej kolejce koniec funkcjiFunkcja blk_get_queue, na podstawie numeru głównego urządzenia, znajduje w tablicy blk_dev, strukturę blk_dev_struct. W niej zapisana jest kolejka żądań do tego urządzenie, oraz funkcja do pobierania kolejki. Jeśli funkcja ta jest zdefiniowana, wówczas jej rezultat jest przekazywany jako rezultat funkcji blk_get_queue, w.p.p. zwracana jest kolejka z blk_dev_struct. Natomiast funkcja make_request_fn jest polem struktury request_queue, czyli kolejki żądań. Jest ona odpowiedzialna za tworzenie i dodawanie struktur request. Wartości domyślne dla kolejki żądań, ustawiane są w funkcji blk_init_queue. Jedyną funkcją, ze struktury request_queue, której nie zostaje przypisana wartość domyślna, jest request_fn. Przypisywana jest jej funkcja przekazana jako parametr funkcji blk_init_queue. Funkcja request_fn jest odpowiedzialna za przetwarzanie żądań z kolejki i musi uwzględniać szczegóły techniczne urządzenia blokowego. | |||
|