root/include/linux/binfmts.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 #ifndef _LINUX_BINFMTS_H
   2 #define _LINUX_BINFMTS_H
   3 
   4 #include <linux/ptrace.h>
   5 
   6 /*
   7  * MAX_ARG_PAGES defines the number of pages allocated for arguments
   8  * and envelope for the new program. 32 should suffice, this gives
   9  * a maximum env+arg of 128kB !
  10  */
  11 #define MAX_ARG_PAGES 32
  12 
  13 /*
  14  * This structure is used to hold the arguments that are used when loading binaries.
  15  */
  16 struct linux_binprm{
  17         char buf[128];
  18         unsigned long page[MAX_ARG_PAGES];
  19         unsigned long p;
  20         int sh_bang;
  21         struct inode * inode;
  22         int e_uid, e_gid;
  23         int argc, envc;
  24         char * filename;           /* Name of binary */
  25 };
  26 
  27 /*
  28  * This structure defines the functions that are used to load the binary formats that
  29  * linux accepts.
  30  */
  31 struct linux_binfmt {
  32         struct linux_binfmt * next;
  33         int *use_count;
  34         int (*load_binary)(struct linux_binprm *, struct  pt_regs * regs);
  35         int (*load_shlib)(int fd);
  36         int (*core_dump)(long signr, struct pt_regs * regs);
  37 };
  38 
  39 extern int register_binfmt(struct linux_binfmt *);
  40 extern int unregister_binfmt(struct linux_binfmt *);
  41 
  42 extern int read_exec(struct inode *inode, unsigned long offset,
  43         char * addr, unsigned long count);
  44 
  45 extern int open_inode(struct inode * inode, int mode);
  46 
  47 extern void flush_old_exec(struct linux_binprm * bprm);
  48 extern unsigned long setup_arg_pages(unsigned long text_size,unsigned long * page);
  49 extern unsigned long * create_tables(char * p,int argc,int envc,int ibcs);
  50 extern unsigned long copy_strings(int argc,char ** argv,unsigned long *page,
  51                 unsigned long p, int from_kmem);
  52 
  53 /* this eventually goes away */
  54 #define change_ldt(a,b) setup_arg_pages(a,b)
  55 
  56 #endif

/* [previous][next][first][last][top][bottom][index][help] */