Małe zadanie #4¶
Przykładowy sterownik załączony do materiałów ma kilka wad. Zadanie polega na poprawieniu ich:
ioctl
jest niezbyt wygodnym dla użytkownika interfejsem. Należy dodać operacjęwrite
tak, aby czytała ona przekazane przez użytkownika dane jako liczbę w formacie dziesiętnym, i ustawiała na nią liczbę powtórzeń.Założenia:
- cała liczba jest zapisana jednym wywołaniem
write
- po liczbie może wystąpić (lub nie) znak nowej linii
- liczba ma co najwyżej 32 znaki (należy zwrócić błąd jeśli użytkownik spróbuje wpisać zbyt długą liczbę) i jest bez znaku
- wpisany ciąg znaków jest poprawną liczbą (tzn. pasuje do regexa
[0-9]+\n?
) - to też trzeba sprawdzić
- cała liczba jest zapisana jednym wywołaniem
liczba powtórzeń jest globalna dla wszystkich użytkowników, przez co urządzenie nie może być użyte w bezpieczny sposób na systemie z wieloma użytkownikami. Należy zmodyfikować sterownik tak, aby każdy użytkownik miał niezależnie ustawianą liczbę powtórzeń. Do przechowywania danych można użyć standardowej implementacji list z jądra oraz dynamicznej alokacji pamięci przez
kmalloc
.