next up previous contents
Next: Wyrejestrowywanie urządzenia Up: Rejestracja i wyrejestrowywanie urządzenia Previous: Rejestracja i wyrejestrowywanie urządzenia   Spis tresci

Rejestracja urządzenia

int register_chrdev(unsigned int major, const char * name,
                    struct file_operations *fops)
int register_blkdev(unsigned int major, const char * name,
                    struct block_device_operations *bdops)

Rejestracja urządzenia polega na wypełnienia odpowiedniego pola w tablicy odpowiednio chrdev dla urządzeń znakowych, lub blkdev dla urządzeń blokowych.

Funkcja bieże wskażnik do tablicy opisującej procedury dostępowe do urządzenia (fops, lub bdops), nazwę urządzenia, oraz jego numer główny. Jeśli podany numer główny będzie równy 0, to zostanie wyszukana ostatnia ,,wolna'' pozycja w odpowiedniej tablicy i tam, zostaną wpisane odpowiednie dane, a funkcja zwróci jako numer główny urządzenia właśnie odszukany indeks, jeśli nie będzie żadnej wolnej pozycji funkcja zwróci -EBUSY. Jeśli podamy różny od zera numer główny, to funkcja będzie starała się wpisać podane przez nas dane w pozycji wskazywanej właśnie przez ten numer. Wpisanie danych się powiedzie, jeśli pozycja będzie pusta, lub wstawiane przez nas dane będą różniły się co najwyżej nazwą urządzenia (name), wówczas funkcja zwróci 0. W przeciwnym przypadku zwrócona zostanie wartość -EBUSY. Jeśli podany przez nas numer główny będzie przekraczał wartość MAX_CHRDEV (lub MAX_BLKDEV) funkcja zwróci wartość -EINVAL.

Podczas wpisywania danych do tablicy nie jest dokonywana alokacja pamięci na strukturę opisującą procedury dostępowe, a tylko przekazywany jest wskażnik.


next up previous contents
Next: Wyrejestrowywanie urządzenia Up: Rejestracja i wyrejestrowywanie urządzenia Previous: Rejestracja i wyrejestrowywanie urządzenia   Spis tresci
2001-12-18