Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.
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: