next up previous
Next: Literatura Up: Funkcje ładujące pliki wykonywalne Previous: Funkcja load_script()

Funkcja load_elf_binary()

Funkcja odpowiedzialna za załadownie do pamięci programu w formacie ELF jest dużo bardzie skomplikowanan niż ta dla skryptu. load_elf_binary() zadeklarowana jest w pliku fs/binfmt_elf.c. Na załadowanie kodu do pamięci składają sie następujące czynności.
  1. Sprawdzane są ``magiczne'' numery, w zmiennej bprm.buf. Są one specyficzne dla danego formatu.
  2. Czytany jest nagłówek pliku wykonywalnego. Stą pobierany jest opis segmentów, bibliotek itd.
  3. Szukana jest scieżka do interpretera bibliotek współdzielonych.
  4. Przygotowywane jest załadownie jest do pamięci interpreter formatu ELF. Ładowanie odbywa sie na podobnej zasadzie co ładowanie zwykłego programu.
  5. Wykonywana jest funkcja flush_old_exec(). Usuwa ona z pamięci pozostałość starego procesu.
  6. Wywoływana jest metoda ładująca interpreter programu. Jeśli jest on w formacie ELF to nazywa się ona load_elf_interp().
  7. Określane są uprawnienia procesu. Następuje przygotowanie struktur danych dla procesu.
  8. Wywoływana jest funkcja start_thread, która ostatecznie przygotowuje proces do wykonania


Michal Rutkowski 2001-12-19