next up previous contents
Next: Usuwanie pozycji z tablicy Up: TABLICE ROZDZIELCZE Previous: URZĄDZENIA BLOKOWE: blkdevs   Spis rzeczy

Wypełnianie pozycji tablic rozdzielczych

Do umieszczania struktur w tablicy blkdevs służy funkcja register_blkdev():

    int register_blkdev(unsigned int major, const char * name, 
                         struct block_device_operations *bdops);
Funkcja ta rejestruje klasę urządzeń blokowych o danym numerze głównym urządzenia (parametr: major), lub jeżeli major=0 to funkcja sama stara się przydzielić numer główny (najwyższa wolna pozycja z tablicy rozdzielczej blkdevs).
  ALGORYTM: 
    1. jeśli major==0 to przeszukujemy tablicę rozdzielczą od góry
       i zatrzymujemy się jeśli pole bdops wskazuje na NULL -
       - wtedy podstawiamy do struktury z tej pozycji
       przekazane parametry funkcji (name, bdops) oraz zwracamy 
       numer znalezionej pozycji (czyli nowy numer główny)
       jeśli nie znaleźliśmy wolnej pozycji to zwracamy błąd
    2. jeśli parametr major był różny od zera to sprawdzamy czy nie jest
       czasem zbyt duży (jeśli jest >= MAX_BLKDEV to błąd)
    3. jeśli pozycja blkdevs[major] jest zajęta (bdops<>NULL) to
       zwracamy błąd
    4. jeśli wszystko w porządku, to wypełniamy strukturę z pozycji 
       blkdevs[major] parametrami name i bdops oraz zwracamy zero;



Marcin Czępiński 2001-12-19