Subversion Repositories Kolibri OS

Rev

Rev 6082 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #ifndef _LINUX_PERSONALITY_H
  2. #define _LINUX_PERSONALITY_H
  3.  
  4. #include <uapi/linux/personality.h>
  5.  
  6.  
  7. /*
  8.  * Handling of different ABIs (personalities).
  9.  */
  10.  
  11. struct exec_domain;
  12. struct pt_regs;
  13.  
  14. extern int              register_exec_domain(struct exec_domain *);
  15. extern int              unregister_exec_domain(struct exec_domain *);
  16. extern int              __set_personality(unsigned int);
  17.  
  18.  
  19. /*
  20.  * Description of an execution domain.
  21.  *
  22.  * The first two members are refernced from assembly source
  23.  * and should stay where they are unless explicitly needed.
  24.  */
  25. typedef void (*handler_t)(int, struct pt_regs *);
  26.  
  27. struct exec_domain {
  28.         const char              *name;          /* name of the execdomain */
  29.         handler_t               handler;        /* handler for syscalls */
  30.         unsigned char           pers_low;       /* lowest personality */
  31.         unsigned char           pers_high;      /* highest personality */
  32.         unsigned long           *signal_map;    /* signal mapping */
  33.         unsigned long           *signal_invmap; /* reverse signal mapping */
  34.         struct map_segment      *err_map;       /* error mapping */
  35.         struct map_segment      *socktype_map;  /* socket type mapping */
  36.         struct map_segment      *sockopt_map;   /* socket option mapping */
  37.         struct map_segment      *af_map;        /* address family mapping */
  38.         struct module           *module;        /* module context of the ed. */
  39.         struct exec_domain      *next;          /* linked list (internal) */
  40. };
  41.  
  42. /*
  43.  * Return the base personality without flags.
  44.  */
  45. #define personality(pers)       (pers & PER_MASK)
  46.  
  47.  
  48. /*
  49.  * Change personality of the currently running process.
  50.  */
  51. #define set_personality(pers) \
  52.         ((current->personality == (pers)) ? 0 : __set_personality(pers))
  53.  
  54. #endif /* _LINUX_PERSONALITY_H */
  55.