next up previous contents
Next: Otwieranie urządzenia blokowego Up: Otwieranie urządzeń Previous: Funkcja init_special_inode   Spis tresci

Otwieranie urządzenia znakowego

Jak zostało wyżej powiedziane, podczas czytania inode'a z dysku jako domyślna funkcja do otwierania urządzenia ustawiana jest funkcja chrdev_open, która następnie jest uruchamiana.

int chrdev_open(struct inode * inode, struct file * filp)

Funkcja chrdev_open ustala właściwe dla konkretnego typu urządzenia procedury dostępu korzystając z funkcji get_chrfops. Wszystkie niezbędne do tego dane znajdują się w tablicy chrdevs. Jeśli w tej tablicy zostanie znalezione wystąpienie odpowiadające właściwemu numerowi głownemu, następuje zwiększenie liczby odwołań do modułu dostarczającego procedury, jeśli natomiast nie zostanie znalezione właściwe wystąpienie, następuje próba załadowania modułu char-major-nr, gdzie nr oznacza numer główny. Po tej operacji znów badamy tablicę chrdevs.

Jeśli w znalezionej strukturze struct file_operations pole open jest ustawione na NULL, to funkcja chrdev_open kończy się sukcesem (jeśli nie ustawiono żadnej procedury do otwierania urządzenia, to znaczy że żadna nie jest potrzebna), w przeciwnym przypadku wywoływana jest właściwa funkcja (filp->f_op->open).



2001-12-18