Blame view

include/linux/moduleloader.h 1.82 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
  #ifndef _LINUX_MODULELOADER_H
  #define _LINUX_MODULELOADER_H
  /* The stuff needed for archs to support modules. */
  
  #include <linux/module.h>
  #include <linux/elf.h>
74e08fcf7   Jonas Bonn   modules: add defa...
7
8
9
10
11
12
  /* These may be implemented by architectures that need to hook into the
   * module loader code.  Architectures that don't need to do anything special
   * can just rely on the 'weak' default hooks defined in kernel/module.c.
   * Note, however, that at least one of apply_relocate or apply_relocate_add
   * must be implemented by each architecture.
   */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
13
14
15
16
17
18
  
  /* 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...
19
20
  /* 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
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
49
50
51
52
  /* 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