Next: Usuwanie z tablicy rozdzielczych
Up: Obsługa tablic rozdzielczych
Previous: Dwa rodzaje tablic rozdzielczych
  Spis rzeczy
Poczatkowo obie tablice rozdzielcze są puste. Do rejestracji operacji
na urządzeniu w odpowiedniej tablicy rozdzielczej, służą funkcje zadeklarowane
w pliku include/linux/fs.h:
extern int register_chrdev (unsigned int major, const char *name,
struct file_operations *fops);
extern int register_blkdev (unsigned int major, const char *name,
struct block_device_operations *bdops);
oraz zaimplementowane odpowiednio w pliku fs/devices.c i fs/block_dev.c.
Odpowiednio podajemy: major, nazwę i wskaźnik do tablicy operacji.
Na przykład dla drukarki równoległej będzie to wyglądało nastepująco:
register_chrdev(6, ,,lp'', &lp_flops)
Funkcje te powodują umieszczenie w odpowiedniej tablicy rozdzielczej
pod indeksem major wykazu dozwolonych operacji. Jeżeli dla podanego
numeru nadrzędnego zarejestrowane są operacje, a podane są różne od nich ope-racje
to rejestracja się nie powiedzie (zwrócimy -EBUSY). Jeśli podany numer
wynosi 0, to rejestrowane jest urządzenie na pierwszej wolnej pozycji,
a numer ten jest zwracany. Dzięki temu możemy dodawać własne urządzenia,
które oficjalnie nie mają przyznanego numeru. Jeśli nie ma wolnego
miejsca to zwrócona zostanie wartość -EBUSY i rejestracja się nie
powiedzie. Jeśli podany przez nas numer główny będzie przekraczał wartość
MAX_CHRDEV lub MAX_BLKDEV, to zwrócona zostanie wartość -EINVAL.
Inicjalizacja tablic rozdzielczych odbywa się podczas ładowania systemu.
Odpowiadają za to nastepujące funkcje:
Next: Usuwanie z tablicy rozdzielczych
Up: Obsługa tablic rozdzielczych
Previous: Dwa rodzaje tablic rozdzielczych
  Spis rzeczy
2001-12-19