Wywołania systemowe
open() i close()
Marcin Szuppe
Funkcja systemowa sys_open
Parametry:
- const char *filename
- ścieżka dostępu do pliku,
- int flags
- flagi trybu dostępu,
- int mode
- maska bitowa uprawnień, jeśli plik ma być utworzony.
Poniższy diagram przedstawia uogólniony schemat algorytmu (brak obsługi błędów):
Wywołanie open()
Obsługiwane jest przez funkcję sys_open.
Jeśli wywołanie systemowe zakończy się sukcesem, to zwraca deskryptor pliku, czyli indeks do tablicy wskaźników do obiektów plików
current->files->fd; wpp. zwraca -1.
Funkcja systemowa sys_close
- Pobierz adres obiektu pliku z current->files->fd; jeśli NULL to błąd.
- Ustaw current->files->fd na NULL i uwolnij deskryptor fd czyszcząc odpowiednie bity.
- Wywołaj flip_close() w celu:
- wywołania flush(),
- zwolnienia narzuconych blokad,
- wywołania fput() (aby uwolnić obiekt pliku).
- Zwróć kod błędu metody flush.