Rev 5270 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5270 | serge | 1 | #ifndef _LINUX_PERSONALITY_H |
2 | #define _LINUX_PERSONALITY_H |
||
3 | |||
4 | #include |
||
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 | * Change personality of the currently running process. |
||
49 | */ |
||
6082 | serge | 50 | #define set_personality(pers) (current->personality = (pers)) |
5270 | serge | 51 | |
52 | #endif /* _LINUX_PERSONALITY_H */ |