16ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/****************************************************************************
26ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ****************************************************************************
36ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***
46ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   This header was automatically generated from a Linux kernel header
56ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   of the same name, to make information necessary for userspace to
66ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   call into the kernel available to libc.  It contains only constants,
76ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   structures, and macros generated from the original header, and thus,
86ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   contains no copyrightable information.
96ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***
106ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ****************************************************************************
116ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ****************************************************************************/
126ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#ifndef _LINUX_PERSONALITY_H
136ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define _LINUX_PERSONALITY_H
146ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
156ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct exec_domain;
166ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct pt_regs;
176ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
186ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehenum {
196ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ADDR_NO_RANDOMIZE = 0x0040000,
206ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh FDPIC_FUNCPTRS = 0x0080000,
216ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh MMAP_PAGE_ZERO = 0x0100000,
226ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ADDR_COMPAT_LAYOUT = 0x0200000,
236ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh READ_IMPLIES_EXEC = 0x0400000,
246ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ADDR_LIMIT_32BIT = 0x0800000,
256ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh SHORT_INODE = 0x1000000,
266ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh WHOLE_SECONDS = 0x2000000,
276ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh STICKY_TIMEOUTS = 0x4000000,
286ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ADDR_LIMIT_3GB = 0x8000000,
296ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh};
306ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
316ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC|ADDR_NO_RANDOMIZE)
326ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
336ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehenum {
346ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_LINUX = 0x0000,
356ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT,
366ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_LINUX_FDPIC = 0x0000 | FDPIC_FUNCPTRS,
376ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_SVR4 = 0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
386ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_SVR3 = 0x0002 | STICKY_TIMEOUTS | SHORT_INODE,
396ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_SCOSVR3 = 0x0003 | STICKY_TIMEOUTS |
406ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh WHOLE_SECONDS | SHORT_INODE,
416ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_OSR5 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS,
426ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_WYSEV386 = 0x0004 | STICKY_TIMEOUTS | SHORT_INODE,
436ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_ISCR4 = 0x0005 | STICKY_TIMEOUTS,
446ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_BSD = 0x0006,
456ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_SUNOS = 0x0006 | STICKY_TIMEOUTS,
466ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_XENIX = 0x0007 | STICKY_TIMEOUTS | SHORT_INODE,
476ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_LINUX32 = 0x0008,
486ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_LINUX32_3GB = 0x0008 | ADDR_LIMIT_3GB,
496ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_IRIX32 = 0x0009 | STICKY_TIMEOUTS,
506ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_IRIXN32 = 0x000a | STICKY_TIMEOUTS,
516ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_IRIX64 = 0x000b | STICKY_TIMEOUTS,
526ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_RISCOS = 0x000c,
536ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_SOLARIS = 0x000d | STICKY_TIMEOUTS,
546ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_UW7 = 0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
556ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_OSF4 = 0x000f,
566ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_HPUX = 0x0010,
576ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh PER_MASK = 0x00ff,
586ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh};
596ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
606ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef void (*handler_t)(int, struct pt_regs *);
616ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
626ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct exec_domain {
636ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh const char *name;
646ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh handler_t handler;
656ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char pers_low;
666ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char pers_high;
676ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned long *signal_map;
686ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned long *signal_invmap;
696ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct map_segment *err_map;
706ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct map_segment *socktype_map;
716ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct map_segment *sockopt_map;
726ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct map_segment *af_map;
736ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct module *module;
746ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct exec_domain *next;
756ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh};
766ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
776ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define personality(pers) (pers & PER_MASK)
786ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
796ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define get_personality (current->personality)
806ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
816ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define set_personality(pers)   ((current->personality == pers) ? 0 : __set_personality(pers))
826ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
836ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif
84