Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
personality.h
Go to the documentation of this file.
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 */
Generated on Thu Jan 10 2013 14:52:18 for Linux Kernel by
1.8.2