[ Pobierz całość w formacie PDF ]
.Zadanie praktyczne nr 11Do tematu: Podsystem wejścia-wyjściaZadanie 11Opis: Celem zadania jest stworzenie nowego, prostego urządzenia,które służyłoby do śledzenia zawartości struktur danych w jądrze.Dostępdo tego urządzenia byłby taki sam jak do innych urządzeń, tzn.poprzezplik specjalny (np./dev/mydev).Napisać driver prostego urządzenia znakowego,na którym można byłoby wykonywać następujące operacje: (file_operations)open - otwieranie urządzeniarelease - zamykanie urządzeniaread - ma przekazywać użytkownikowi dane dotyczące tablic rozdzielczych: chrdevs, blkdevs (fs/devices.c) takie jak ( np.w zależności od ustawionychflag ):nazwy i numery główne zarejestrowanych urządzeń znakowych lub blokowych(których - rozstrzyga np.flaga), na przykład każde wywołanie funkcji readbędzie zapisywało do bufora użytkownika jeden numer i jedną nazwę.informować, czy konkretna operacja jest dostępna na urządzeniu (jakama to być operacja, można okreslić np.za pomoca flagi)Funkcja kończy się błędem, jeśli jako bufor podamy NULL, lub podamywiększą liczbę bajtów do wczytania, niż rozmiar bufora.write - operacja możliwa, ale nie mająca większego sensulseek - może coś robić np.ustawiać bieżący indeks w tablicy chrdevlub blkdev na podaną wartośćioctl - ustawianie parametrów urządzenia - flagew.inne funkcjeUrządzenie powinno być inicjowane i rejestrowane w trakcie startu systemu.Operacje na urządzeniu nie są blokujące.Do wpisywania znaków do bufora należy użyć funkcji put_user(), którawpisuje dane do przestrzeni adresowej użytkownika.Należy w istniejących plikach źródłowych zdefiniować potrzebne strukturydanych oraz funkcje, stałe itp.(Nie trzeba dodawać własnych plików).Skompilować jądro.Należy także utworzyć plik specjalny dla napisanegourządzenia.Mile widziane programy testowe używające tego urządzenia.Autorka: Anna Petryk
[ Pobierz całość w formacie PDF ]