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
arch
mips
include
asm
compat.h
Go to the documentation of this file.
1
#ifndef _ASM_COMPAT_H
2
#define _ASM_COMPAT_H
3
/*
4
* Architecture specific compatibility types
5
*/
6
#include <
linux/thread_info.h
>
7
#include <linux/types.h>
8
#include <asm/page.h>
9
#include <asm/ptrace.h>
10
11
#define COMPAT_USER_HZ 100
12
#define COMPAT_UTS_MACHINE "mips\0\0\0"
13
14
typedef
u32
compat_size_t
;
15
typedef
s32
compat_ssize_t
;
16
typedef
s32
compat_time_t
;
17
typedef
s32
compat_clock_t
;
18
typedef
s32
compat_suseconds_t
;
19
20
typedef
s32
compat_pid_t
;
21
typedef
s32
__compat_uid_t
;
22
typedef
s32
__compat_gid_t
;
23
typedef
__compat_uid_t
__compat_uid32_t
;
24
typedef
__compat_gid_t
__compat_gid32_t
;
25
typedef
u32
compat_mode_t
;
26
typedef
u32
compat_ino_t
;
27
typedef
u32
compat_dev_t
;
28
typedef
s32
compat_off_t
;
29
typedef
s64
compat_loff_t
;
30
typedef
u32
compat_nlink_t
;
31
typedef
s32
compat_ipc_pid_t
;
32
typedef
s32
compat_daddr_t
;
33
typedef
s32
compat_caddr_t
;
34
typedef
struct
{
35
s32
val
[2];
36
}
compat_fsid_t
;
37
typedef
s32
compat_timer_t
;
38
typedef
s32
compat_key_t
;
39
40
typedef
s32
compat_int_t
;
41
typedef
s32
compat_long_t
;
42
typedef
s64
compat_s64
;
43
typedef
u32
compat_uint_t
;
44
typedef
u32
compat_ulong_t
;
45
typedef
u64
compat_u64
;
46
typedef
u32
compat_uptr_t
;
47
48
struct
compat_timespec
{
49
compat_time_t
tv_sec
;
50
s32
tv_nsec
;
51
};
52
53
struct
compat_timeval
{
54
compat_time_t
tv_sec
;
55
s32
tv_usec
;
56
};
57
58
struct
compat_stat
{
59
compat_dev_t
st_dev
;
60
s32
st_pad1
[3];
61
compat_ino_t
st_ino
;
62
compat_mode_t
st_mode
;
63
compat_nlink_t
st_nlink
;
64
__compat_uid_t
st_uid
;
65
__compat_gid_t
st_gid
;
66
compat_dev_t
st_rdev
;
67
s32
st_pad2
[2];
68
compat_off_t
st_size
;
69
s32
st_pad3
;
70
compat_time_t
st_atime
;
71
s32
st_atime_nsec
;
72
compat_time_t
st_mtime
;
73
s32
st_mtime_nsec
;
74
compat_time_t
st_ctime
;
75
s32
st_ctime_nsec
;
76
s32
st_blksize
;
77
s32
st_blocks
;
78
s32
st_pad4
[14];
79
};
80
81
struct
compat_flock
{
82
short
l_type
;
83
short
l_whence
;
84
compat_off_t
l_start
;
85
compat_off_t
l_len
;
86
s32
l_sysid
;
87
compat_pid_t
l_pid
;
88
short
__unused
;
89
s32
pad
[4];
90
};
91
92
#define F_GETLK64 33
93
#define F_SETLK64 34
94
#define F_SETLKW64 35
95
96
struct
compat_flock64
{
97
short
l_type
;
98
short
l_whence
;
99
compat_loff_t
l_start
;
100
compat_loff_t
l_len
;
101
compat_pid_t
l_pid
;
102
};
103
104
struct
compat_statfs
{
105
int
f_type
;
106
int
f_bsize
;
107
int
f_frsize
;
108
int
f_blocks
;
109
int
f_bfree
;
110
int
f_files
;
111
int
f_ffree
;
112
int
f_bavail
;
113
compat_fsid_t
f_fsid
;
114
int
f_namelen
;
115
int
f_flags
;
116
int
f_spare
[5];
117
};
118
119
#define COMPAT_RLIM_INFINITY 0x7fffffffUL
120
121
typedef
u32
compat_old_sigset_t
;
/* at least 32 bits */
122
123
#define _COMPAT_NSIG 128
/* Don't ask !$@#% ... */
124
#define _COMPAT_NSIG_BPW 32
125
126
typedef
u32
compat_sigset_word
;
127
128
typedef
union
compat_sigval
{
129
compat_int_t
sival_int
;
130
compat_uptr_t
sival_ptr
;
131
}
compat_sigval_t
;
132
133
#define SI_PAD_SIZE32 (128/sizeof(int) - 3)
134
135
typedef
struct
compat_siginfo
{
136
int
si_signo
;
137
int
si_code
;
138
int
si_errno
;
139
140
union
{
141
int
_pad
[
SI_PAD_SIZE32
];
142
143
/* kill() */
144
struct
{
145
compat_pid_t
_pid
;
/* sender's pid */
146
__compat_uid_t
_uid
;
/* sender's uid */
147
}
_kill
;
148
149
/* SIGCHLD */
150
struct
{
151
compat_pid_t
_pid
;
/* which child */
152
__compat_uid_t
_uid
;
/* sender's uid */
153
int
_status
;
/* exit code */
154
compat_clock_t
_utime
;
155
compat_clock_t
_stime
;
156
}
_sigchld
;
157
158
/* IRIX SIGCHLD */
159
struct
{
160
compat_pid_t
_pid
;
/* which child */
161
compat_clock_t
_utime
;
162
int
_status
;
/* exit code */
163
compat_clock_t
_stime
;
164
}
_irix_sigchld
;
165
166
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
167
struct
{
168
s32
_addr
;
/* faulting insn/memory ref. */
169
}
_sigfault
;
170
171
/* SIGPOLL, SIGXFSZ (To do ...) */
172
struct
{
173
int
_band
;
/* POLL_IN, POLL_OUT, POLL_MSG */
174
int
_fd
;
175
}
_sigpoll
;
176
177
/* POSIX.1b timers */
178
struct
{
179
timer_t
_tid
;
/* timer id */
180
int
_overrun
;
/* overrun count */
181
compat_sigval_t
_sigval
;
/* same as below */
182
int
_sys_private
;
/* not to be passed to user */
183
}
_timer
;
184
185
/* POSIX.1b signals */
186
struct
{
187
compat_pid_t
_pid
;
/* sender's pid */
188
__compat_uid_t
_uid
;
/* sender's uid */
189
compat_sigval_t
_sigval
;
190
}
_rt
;
191
192
}
_sifields
;
193
}
compat_siginfo_t
;
194
195
#define COMPAT_OFF_T_MAX 0x7fffffff
196
#define COMPAT_LOFF_T_MAX 0x7fffffffffffffffL
197
198
/*
199
* A pointer passed in from user mode. This should not
200
* be used for syscall parameters, just declare them
201
* as pointers because the syscall entry code will have
202
* appropriately converted them already.
203
*/
204
205
static
inline
void
__user
*compat_ptr(
compat_uptr_t
uptr)
206
{
207
/* cast to a __user pointer via "unsigned long" makes sparse happy */
208
return
(
void
__user
*)(
unsigned
long
)(
long
)uptr;
209
}
210
211
static
inline
compat_uptr_t
ptr_to_compat(
void
__user *uptr)
212
{
213
return
(
u32
)(
unsigned
long
)uptr;
214
}
215
216
static
inline
void
__user
*arch_compat_alloc_user_space(
long
len)
217
{
218
struct
pt_regs
*
regs
= (
struct
pt_regs
*)
219
((
unsigned
long
)
current_thread_info
() +
THREAD_SIZE
- 32) - 1;
220
221
return
(
void
__user *) (regs->
regs
[29] - len);
222
}
223
224
struct
compat_ipc64_perm
{
225
compat_key_t
key
;
226
__compat_uid32_t
uid
;
227
__compat_gid32_t
gid
;
228
__compat_uid32_t
cuid
;
229
__compat_gid32_t
cgid
;
230
compat_mode_t
mode
;
231
unsigned
short
seq
;
232
unsigned
short
__pad2
;
233
compat_ulong_t
__unused1
;
234
compat_ulong_t
__unused2
;
235
};
236
237
struct
compat_semid64_ds
{
238
struct
compat_ipc64_perm
sem_perm
;
239
compat_time_t
sem_otime
;
240
compat_time_t
sem_ctime
;
241
compat_ulong_t
sem_nsems
;
242
compat_ulong_t
__unused1
;
243
compat_ulong_t
__unused2
;
244
};
245
246
struct
compat_msqid64_ds
{
247
struct
compat_ipc64_perm
msg_perm
;
248
#ifndef CONFIG_CPU_LITTLE_ENDIAN
249
compat_ulong_t
__unused1
;
250
#endif
251
compat_time_t
msg_stime
;
252
#ifdef CONFIG_CPU_LITTLE_ENDIAN
253
compat_ulong_t
__unused1
;
254
#endif
255
#ifndef CONFIG_CPU_LITTLE_ENDIAN
256
compat_ulong_t
__unused2
;
257
#endif
258
compat_time_t
msg_rtime
;
259
#ifdef CONFIG_CPU_LITTLE_ENDIAN
260
compat_ulong_t
__unused2
;
261
#endif
262
#ifndef CONFIG_CPU_LITTLE_ENDIAN
263
compat_ulong_t
__unused3
;
264
#endif
265
compat_time_t
msg_ctime
;
266
#ifdef CONFIG_CPU_LITTLE_ENDIAN
267
compat_ulong_t
__unused3
;
268
#endif
269
compat_ulong_t
msg_cbytes
;
270
compat_ulong_t
msg_qnum
;
271
compat_ulong_t
msg_qbytes
;
272
compat_pid_t
msg_lspid
;
273
compat_pid_t
msg_lrpid
;
274
compat_ulong_t
__unused4
;
275
compat_ulong_t
__unused5
;
276
};
277
278
struct
compat_shmid64_ds
{
279
struct
compat_ipc64_perm
shm_perm
;
280
compat_size_t
shm_segsz
;
281
compat_time_t
shm_atime
;
282
compat_time_t
shm_dtime
;
283
compat_time_t
shm_ctime
;
284
compat_pid_t
shm_cpid
;
285
compat_pid_t
shm_lpid
;
286
compat_ulong_t
shm_nattch
;
287
compat_ulong_t
__unused1
;
288
compat_ulong_t
__unused2
;
289
};
290
291
static
inline
int
is_compat_task
(
void
)
292
{
293
return
test_thread_flag(TIF_32BIT_ADDR);
294
}
295
296
#endif
/* _ASM_COMPAT_H */
Generated on Thu Jan 10 2013 13:03:32 for Linux Kernel by
1.8.2