Systemy Operacyjne : Pamięć : Zwalnianie pamięci przydzielonej dla jądra kfree
Łukasz Bolikowski
Wprowadzenie znajduje się w rozdziale Przydział pamięci na potrzeby jądra
Oto nagłówki interesujących nas funkcji:
void kfree (void *objp);
void kmem_cache_free (kmem_cache_t *cachep, void *objp);
Funkcja kfree działa następująco:
-
jeśli objp == NULL zakończ działanie
-
policz na którą stronę wskazuje objp
-
znajdź schowek, do którego należy ta strona
-
wywołaj kmem_cache_free ze tym schowkiem jako pierwszym argumentem
Funkcja kmem_cache_free działa tak:
-
policz na którą stronę wskazuje objp
-
znajdź taflę, do której należy ta strona
-
usuń obiekt z tafli
-
jeśli tafla była pełna, to przesuń ją na liście tuż przed first_not_full, ustaw first_not_null na nią i zakończ działanie
-
jeśli tafla jest pusta, ustaw first_not_null na poprzednią taflę
spis treści
© 2001 Łukasz Bolikowski, Jakub Górski, Jakub Kowalski, Janusz Kuligowski, Tomasz Szymko