Zadanie praktyczne nr 11
Do tematu: Podsystem wejścia-wyjścia
Zadanie 11
Opis: Celem zadania jest stworzenie nowego, prostego urządzenia,
które służyłoby do śledzenia zawartości struktur danych w jądrze. Dostęp
do tego urządzenia byłby taki sam jak do innych urządzeń, tzn. poprzez
plik 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ądzenia
release - zamykanie urządzenia
read - ma przekazywać użytkownikowi dane dotyczące tablic rozdzielczych
: chrdevs, blkdevs (fs/devices.c) takie jak ( np. w zależności od ustawionych
flag ):
nazwy i numery główne zarejestrowanych urządzeń znakowych lub blokowych
(których - rozstrzyga np. flaga), na przykład każde wywołanie funkcji read
będzie zapisywało do bufora użytkownika jeden numer i jedną nazwę.
informować, czy konkretna operacja jest dostępna na urządzeniu (jaka
ma to być operacja, można okreslić np. za pomoca flagi)
Funkcja kończy się błędem, jeśli jako bufor podamy NULL, lub podamy
większą liczbę bajtów do wczytania, niż rozmiar bufora.
write - operacja możliwa, ale nie mająca większego sensu
lseek - może coś robić np. ustawiać bieżący indeks w tablicy chrdev
lub blkdev na podaną wartość
ioctl - ustawianie parametrów urządzenia - flag
ew. inne funkcje
Urzą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óra
wpisuje dane do przestrzeni adresowej użytkownika.
Należy w istniejących plikach źródłowych zdefiniować potrzebne struktury
danych oraz funkcje, stałe itp. (Nie trzeba dodawać własnych plików).
Skompilować jądro. Należy także utworzyć plik specjalny dla napisanego
urządzenia.
Mile widziane programy testowe używające tego urządzenia.
Autorka: Anna Petryk
Wyszukiwarka
Podobne podstrony:
ZADANIE (11)zadaniegz 11ZADANIE (11)Analiza Zadania 11ZADANIE (11)ZADANIE (11)ZADANIE (11)ZADANIE (11)ZADANIE (11)ZADANIE (11)ZADANIE (11)ZADANIE (11)zadanie 11ZADANIE (11)ZADANIE (11)ZADANIE (11)ZADANIE (11)więcej podobnych podstron