Blame view

include/linux/moduleloader.h 1.54 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  #ifndef _LINUX_MODULELOADER_H
  #define _LINUX_MODULELOADER_H
  /* The stuff needed for archs to support modules. */
  
  #include <linux/module.h>
  #include <linux/elf.h>
  
  /* These must be implemented by the specific architecture */
  
  /* Adjust arch-specific sections.  Return 0 on success.  */
  int module_frob_arch_sections(Elf_Ehdr *hdr,
  			      Elf_Shdr *sechdrs,
  			      char *secstrings,
  			      struct module *mod);
088af9a6e   Helge Deller   module: fix modul...
15
16
  /* Additional bytes needed by arch in front of individual sections */
  unsigned int arch_mod_section_prepend(struct module *mod, unsigned int section);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
  /* Allocator used for allocating struct module, core sections and init
     sections.  Returns NULL on failure. */
  void *module_alloc(unsigned long size);
  
  /* Free memory returned from module_alloc. */
  void module_free(struct module *mod, void *module_region);
  
  /* Apply the given relocation to the (simplified) ELF.  Return -error
     or 0. */
  int apply_relocate(Elf_Shdr *sechdrs,
  		   const char *strtab,
  		   unsigned int symindex,
  		   unsigned int relsec,
  		   struct module *mod);
  
  /* Apply the given add relocation to the (simplified) ELF.  Return
     -error or 0 */
  int apply_relocate_add(Elf_Shdr *sechdrs,
  		       const char *strtab,
  		       unsigned int symindex,
  		       unsigned int relsec,
  		       struct module *mod);
  
  /* Any final processing of module before access.  Return -error or 0. */
  int module_finalize(const Elf_Ehdr *hdr,
  		    const Elf_Shdr *sechdrs,
  		    struct module *mod);
  
  /* Any cleanup needed when module leaves. */
  void module_arch_cleanup(struct module *mod);
  
  #endif