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