Małe zadanie #3¶
Zaimplementować obsługę “zakładek” do syscalla lseek (i pokrewnych):
do struktury
filedodać 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_PUSHiSEEK_POP(które mogą być zORowane z pozostałymi flagami):SEEK_PUSHwrzuca obecną (sprzed wywołania syscalla) pozycję w pliku na stos zakładekSEEK_POPzdejmuje 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.