Plik include/linux/binfmts.h

Struktury używane przez funkcję do_execve() i inne biorące udział w ładowaniu programu.

Struktura linux_binprm przechowuje informacje o pliku konieczne do załadowania reprezentowanego przez niego programu.


struct linux_binprm{
    /*Pierwsze 128 "magicznych" bajtów pliku*/
    /*zawiera różne ważne informacje o sposobie ładowania*/
    char buf[BINPRM_BUF_SIZE];        
    
    /*strony używane do przekazania ładowanemu*/
    /*programowi argumentów i zmiennych środowiskowych*/
    struct page *page[MAX_ARG_PAGES]; 
    
    /*wskaźnik zapełnienia tablicy page*/
    unsigned long p;
    
    /*struktura odpowiadająca ładowanemu programowi*/
    struct file *file;    
    
    /*efektywny identyfikator użytkownika i grupy programu*/
    int e_uid, e_gid;		      
    ...
    /*liczniki argumentów i zmiennych środowiska*/
    int argc, envc;                   
    
    /*ścieżka pliku*/
    char *filename;		      
}
Struktura linux_binfmt reprezentuje znany format plików wykonywalnych.

struct linux_binfmt {
    /*wskaźnik do kolejnego formatu na liście*/
    struxt linux_binfmt * next; 
    
    /*wskaźnik do modułu, do którego format należy*/
    struct module *module;
    
    /*funkcja ładująca plik danego formatu*/
    /*zwraca 0 gdy się powiedzie, -ENOEXEC gdy nie poznaje formatu*/
    /*lub inną ujemną wartość jako błąd*/
    int (*load_binary)(struct linux_binprm *, struct pt_regs *regs);
    
    /*funkcja ładująca biblioteki dzielone, których wymaga program*/
    int (*load_shlib)(struct file *);
    
    /*funkcja dokonująca zrzutu stanu programu na dysk*/
    int (*core_dump)(long signr, struct pt_regs *regs, struct file *file);
    ...
}