Małe zadanie #3¶
Zaimplementować obsługę “zakładek” do syscalla lseek
(i pokrewnych):
do struktury
file
dodać nowe pole — stos “zakładek” (czyli zapisanych pozycji w pliku)dodać nowy punkt odniesienia do syscalla
lseek
:SEEK_BOOKMARK
, używający jako punktu odniesienia zakładki będącej na szczycie zakładekdodać dwie nowe flagę do
lseek
:SEEK_PUSH
iSEEK_POP
(które mogą być zORowane z pozostałymi flagami):SEEK_PUSH
wrzuca obecną (sprzed wywołania syscalla) pozycję w pliku na stos zakładekSEEK_POP
zdejmuje zakładkę ze stosu
W przypadku błędu (użycie SEEK_BOOKMARK
bądź SEEK_POP
bez zakładek) należy zwrócić błąd EINVAL
i nie robić nic.
Odpowiednim miejscem do dokonania zmian będzie funkcja vfs_llseek
.