~ubuntu-branches/ubuntu/wily/qemu-kvm-spice/wily

« back to all changes in this revision

Viewing changes to linux-user/syscall_defs.h

  • Committer: Bazaar Package Importer
  • Author(s): Serge Hallyn
  • Date: 2011-10-19 10:44:56 UTC
  • Revision ID: james.westby@ubuntu.com-20111019104456-xgvskumk3sxi97f4
Tags: upstream-0.15.0+noroms
ImportĀ upstreamĀ versionĀ 0.15.0+noroms

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* common syscall defines for all architectures */
 
2
 
 
3
/* Note: although the syscall numbers change between architectures,
 
4
   most of them stay the same, so we handle it by puting ifdefs if
 
5
   necessary */
 
6
 
 
7
#include "syscall_nr.h"
 
8
 
 
9
#define SOCKOP_socket           1
 
10
#define SOCKOP_bind             2
 
11
#define SOCKOP_connect          3
 
12
#define SOCKOP_listen           4
 
13
#define SOCKOP_accept           5
 
14
#define SOCKOP_getsockname      6
 
15
#define SOCKOP_getpeername      7
 
16
#define SOCKOP_socketpair       8
 
17
#define SOCKOP_send             9
 
18
#define SOCKOP_recv             10
 
19
#define SOCKOP_sendto           11
 
20
#define SOCKOP_recvfrom         12
 
21
#define SOCKOP_shutdown         13
 
22
#define SOCKOP_setsockopt       14
 
23
#define SOCKOP_getsockopt       15
 
24
#define SOCKOP_sendmsg          16
 
25
#define SOCKOP_recvmsg          17
 
26
 
 
27
#define IPCOP_semop             1
 
28
#define IPCOP_semget            2
 
29
#define IPCOP_semctl            3
 
30
#define IPCOP_semtimedop        4
 
31
#define IPCOP_msgsnd            11
 
32
#define IPCOP_msgrcv            12
 
33
#define IPCOP_msgget            13
 
34
#define IPCOP_msgctl            14
 
35
#define IPCOP_shmat             21
 
36
#define IPCOP_shmdt             22
 
37
#define IPCOP_shmget            23
 
38
#define IPCOP_shmctl            24
 
39
 
 
40
/*
 
41
 * The following is for compatibility across the various Linux
 
42
 * platforms.  The i386 ioctl numbering scheme doesn't really enforce
 
43
 * a type field.  De facto, however, the top 8 bits of the lower 16
 
44
 * bits are indeed used as a type field, so we might just as well make
 
45
 * this explicit here.  Please be sure to use the decoding macros
 
46
 * below from now on.
 
47
 */
 
48
#define TARGET_IOC_NRBITS       8
 
49
#define TARGET_IOC_TYPEBITS     8
 
50
 
 
51
#if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) \
 
52
    || defined(TARGET_M68K) || defined(TARGET_SH4) || defined(TARGET_CRIS)
 
53
    /* 16 bit uid wrappers emulation */
 
54
#define USE_UID16
 
55
#define target_id uint16_t
 
56
#else
 
57
#define target_id uint32_t
 
58
#endif
 
59
 
 
60
#if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SH4) \
 
61
    || defined(TARGET_M68K) || defined(TARGET_CRIS) || defined(TARGET_UNICORE32) \
 
62
    || defined(TARGET_S390X)
 
63
 
 
64
#define TARGET_IOC_SIZEBITS     14
 
65
#define TARGET_IOC_DIRBITS      2
 
66
 
 
67
#define TARGET_IOC_NONE   0U
 
68
#define TARGET_IOC_WRITE  1U
 
69
#define TARGET_IOC_READ   2U
 
70
 
 
71
#elif defined(TARGET_PPC) || defined(TARGET_ALPHA) || \
 
72
      defined(TARGET_SPARC) || defined(TARGET_MICROBLAZE) || \
 
73
      defined(TARGET_MIPS)
 
74
 
 
75
#define TARGET_IOC_SIZEBITS     13
 
76
#define TARGET_IOC_DIRBITS      3
 
77
 
 
78
#define TARGET_IOC_NONE   1U
 
79
#define TARGET_IOC_READ   2U
 
80
#define TARGET_IOC_WRITE  4U
 
81
 
 
82
#else
 
83
#error unsupported CPU
 
84
#endif
 
85
 
 
86
#define TARGET_IOC_NRMASK       ((1 << TARGET_IOC_NRBITS)-1)
 
87
#define TARGET_IOC_TYPEMASK     ((1 << TARGET_IOC_TYPEBITS)-1)
 
88
#define TARGET_IOC_SIZEMASK     ((1 << TARGET_IOC_SIZEBITS)-1)
 
89
#define TARGET_IOC_DIRMASK      ((1 << TARGET_IOC_DIRBITS)-1)
 
90
 
 
91
#define TARGET_IOC_NRSHIFT      0
 
92
#define TARGET_IOC_TYPESHIFT    (TARGET_IOC_NRSHIFT+TARGET_IOC_NRBITS)
 
93
#define TARGET_IOC_SIZESHIFT    (TARGET_IOC_TYPESHIFT+TARGET_IOC_TYPEBITS)
 
94
#define TARGET_IOC_DIRSHIFT     (TARGET_IOC_SIZESHIFT+TARGET_IOC_SIZEBITS)
 
95
 
 
96
#define TARGET_IOC(dir,type,nr,size) \
 
97
        (((dir)  << TARGET_IOC_DIRSHIFT) | \
 
98
         ((type) << TARGET_IOC_TYPESHIFT) | \
 
99
         ((nr)   << TARGET_IOC_NRSHIFT) | \
 
100
         ((size) << TARGET_IOC_SIZESHIFT))
 
101
 
 
102
/* used to create numbers */
 
103
#define TARGET_IO(type,nr)              TARGET_IOC(TARGET_IOC_NONE,(type),(nr),0)
 
104
#define TARGET_IOR(type,nr,size)        TARGET_IOC(TARGET_IOC_READ,(type),(nr),sizeof(size))
 
105
#define TARGET_IOW(type,nr,size)        TARGET_IOC(TARGET_IOC_WRITE,(type),(nr),sizeof(size))
 
106
#define TARGET_IOWR(type,nr,size)       TARGET_IOC(TARGET_IOC_READ|TARGET_IOC_WRITE,(type),(nr),sizeof(size))
 
107
 
 
108
/* the size is automatically computed for these defines */
 
109
#define TARGET_IORU(type,nr)    TARGET_IOC(TARGET_IOC_READ,(type),(nr),TARGET_IOC_SIZEMASK)
 
110
#define TARGET_IOWU(type,nr)    TARGET_IOC(TARGET_IOC_WRITE,(type),(nr),TARGET_IOC_SIZEMASK)
 
111
#define TARGET_IOWRU(type,nr)   TARGET_IOC(TARGET_IOC_READ|TARGET_IOC_WRITE,(type),(nr),TARGET_IOC_SIZEMASK)
 
112
 
 
113
struct target_sockaddr {
 
114
    uint16_t sa_family;
 
115
    uint8_t sa_data[14];
 
116
};
 
117
 
 
118
struct target_in_addr {
 
119
    uint32_t s_addr; /* big endian */
 
120
};
 
121
 
 
122
struct target_ip_mreq {
 
123
    struct target_in_addr imr_multiaddr;
 
124
    struct target_in_addr imr_address;
 
125
};
 
126
 
 
127
struct target_ip_mreqn {
 
128
    struct target_in_addr imr_multiaddr;
 
129
    struct target_in_addr imr_address;
 
130
    abi_long imr_ifindex;
 
131
};
 
132
 
 
133
struct target_ip_mreq_source {
 
134
    /* big endian */
 
135
    uint32_t imr_multiaddr;
 
136
    uint32_t imr_interface;
 
137
    uint32_t imr_sourceaddr;
 
138
};
 
139
 
 
140
struct target_timeval {
 
141
    abi_long tv_sec;
 
142
    abi_long tv_usec;
 
143
};
 
144
 
 
145
struct target_timespec {
 
146
    abi_long tv_sec;
 
147
    abi_long tv_nsec;
 
148
};
 
149
 
 
150
struct target_itimerval {
 
151
    struct target_timeval it_interval;
 
152
    struct target_timeval it_value;
 
153
};
 
154
 
 
155
typedef abi_long target_clock_t;
 
156
 
 
157
#define TARGET_HZ 100
 
158
 
 
159
struct target_tms {
 
160
    target_clock_t tms_utime;
 
161
    target_clock_t tms_stime;
 
162
    target_clock_t tms_cutime;
 
163
    target_clock_t tms_cstime;
 
164
};
 
165
 
 
166
struct target_utimbuf {
 
167
    abi_long actime;
 
168
    abi_long modtime;
 
169
};
 
170
 
 
171
struct target_sel_arg_struct {
 
172
    abi_long n;
 
173
    abi_long inp, outp, exp;
 
174
    abi_long tvp;
 
175
};
 
176
 
 
177
struct target_iovec {
 
178
    abi_long iov_base;   /* Starting address */
 
179
    abi_long iov_len;   /* Number of bytes */
 
180
};
 
181
 
 
182
struct target_msghdr {
 
183
    abi_long     msg_name;       /* Socket name                 */
 
184
    int          msg_namelen;    /* Length of name              */
 
185
    abi_long     msg_iov;        /* Data blocks                 */
 
186
    abi_long     msg_iovlen;     /* Number of blocks            */
 
187
    abi_long     msg_control;    /* Per protocol magic (eg BSD file descriptor passing) */
 
188
    abi_long     msg_controllen; /* Length of cmsg list */
 
189
    unsigned int msg_flags;
 
190
};
 
191
 
 
192
struct target_cmsghdr {
 
193
    abi_long     cmsg_len;
 
194
    int          cmsg_level;
 
195
    int          cmsg_type;
 
196
};
 
197
 
 
198
#define TARGET_CMSG_DATA(cmsg) ((unsigned char *) ((struct target_cmsghdr *) (cmsg) + 1))
 
199
#define TARGET_CMSG_NXTHDR(mhdr, cmsg) __target_cmsg_nxthdr (mhdr, cmsg)
 
200
#define TARGET_CMSG_ALIGN(len) (((len) + sizeof (abi_long) - 1) \
 
201
                               & (size_t) ~(sizeof (abi_long) - 1))
 
202
#define TARGET_CMSG_SPACE(len) (TARGET_CMSG_ALIGN (len) \
 
203
                               + TARGET_CMSG_ALIGN (sizeof (struct target_cmsghdr)))
 
204
#define TARGET_CMSG_LEN(len)   (TARGET_CMSG_ALIGN (sizeof (struct target_cmsghdr)) + (len))
 
205
 
 
206
static __inline__ struct target_cmsghdr *
 
207
__target_cmsg_nxthdr (struct target_msghdr *__mhdr, struct target_cmsghdr *__cmsg)
 
208
{
 
209
  struct target_cmsghdr *__ptr;
 
210
 
 
211
  __ptr = (struct target_cmsghdr *)((unsigned char *) __cmsg
 
212
                                    + TARGET_CMSG_ALIGN (tswapl(__cmsg->cmsg_len)));
 
213
  if ((unsigned long)((char *)(__ptr+1) - (char *)(size_t)tswapl(__mhdr->msg_control))
 
214
      > tswapl(__mhdr->msg_controllen))
 
215
    /* No more entries.  */
 
216
    return (struct target_cmsghdr *)0;
 
217
  return __cmsg;
 
218
}
 
219
 
 
220
 
 
221
struct  target_rusage {
 
222
        struct target_timeval ru_utime;        /* user time used */
 
223
        struct target_timeval ru_stime;        /* system time used */
 
224
        abi_long    ru_maxrss;                 /* maximum resident set size */
 
225
        abi_long    ru_ixrss;                  /* integral shared memory size */
 
226
        abi_long    ru_idrss;                  /* integral unshared data size */
 
227
        abi_long    ru_isrss;                  /* integral unshared stack size */
 
228
        abi_long    ru_minflt;                 /* page reclaims */
 
229
        abi_long    ru_majflt;                 /* page faults */
 
230
        abi_long    ru_nswap;                  /* swaps */
 
231
        abi_long    ru_inblock;                /* block input operations */
 
232
        abi_long    ru_oublock;                /* block output operations */
 
233
        abi_long    ru_msgsnd;                 /* messages sent */
 
234
        abi_long    ru_msgrcv;                 /* messages received */
 
235
        abi_long    ru_nsignals;               /* signals received */
 
236
        abi_long    ru_nvcsw;                  /* voluntary context switches */
 
237
        abi_long    ru_nivcsw;                 /* involuntary " */
 
238
};
 
239
 
 
240
typedef struct {
 
241
        int     val[2];
 
242
} kernel_fsid_t;
 
243
 
 
244
struct kernel_statfs {
 
245
        int f_type;
 
246
        int f_bsize;
 
247
        int f_blocks;
 
248
        int f_bfree;
 
249
        int f_bavail;
 
250
        int f_files;
 
251
        int f_ffree;
 
252
        kernel_fsid_t f_fsid;
 
253
        int f_namelen;
 
254
        int f_spare[6];
 
255
};
 
256
 
 
257
struct target_dirent {
 
258
        abi_long        d_ino;
 
259
        abi_long        d_off;
 
260
        unsigned short  d_reclen;
 
261
        char            d_name[256]; /* We must not include limits.h! */
 
262
};
 
263
 
 
264
struct target_dirent64 {
 
265
        uint64_t        d_ino;
 
266
        int64_t         d_off;
 
267
        unsigned short  d_reclen;
 
268
        unsigned char   d_type;
 
269
        char            d_name[256];
 
270
};
 
271
 
 
272
 
 
273
/* mostly generic signal stuff */
 
274
#define TARGET_SIG_DFL  ((abi_long)0)   /* default signal handling */
 
275
#define TARGET_SIG_IGN  ((abi_long)1)   /* ignore signal */
 
276
#define TARGET_SIG_ERR  ((abi_long)-1)  /* error return from signal */
 
277
 
 
278
#ifdef TARGET_MIPS
 
279
#define TARGET_NSIG        128
 
280
#else
 
281
#define TARGET_NSIG        64
 
282
#endif
 
283
#define TARGET_NSIG_BPW    TARGET_ABI_BITS
 
284
#define TARGET_NSIG_WORDS  (TARGET_NSIG / TARGET_NSIG_BPW)
 
285
 
 
286
typedef struct {
 
287
    abi_ulong sig[TARGET_NSIG_WORDS];
 
288
} target_sigset_t;
 
289
 
 
290
#ifdef BSWAP_NEEDED
 
291
static inline void tswap_sigset(target_sigset_t *d, const target_sigset_t *s)
 
292
{
 
293
    int i;
 
294
    for(i = 0;i < TARGET_NSIG_WORDS; i++)
 
295
        d->sig[i] = tswapl(s->sig[i]);
 
296
}
 
297
#else
 
298
static inline void tswap_sigset(target_sigset_t *d, const target_sigset_t *s)
 
299
{
 
300
    *d = *s;
 
301
}
 
302
#endif
 
303
 
 
304
static inline void target_siginitset(target_sigset_t *d, abi_ulong set)
 
305
{
 
306
    int i;
 
307
    d->sig[0] = set;
 
308
    for(i = 1;i < TARGET_NSIG_WORDS; i++)
 
309
        d->sig[i] = 0;
 
310
}
 
311
 
 
312
void host_to_target_sigset(target_sigset_t *d, const sigset_t *s);
 
313
void target_to_host_sigset(sigset_t *d, const target_sigset_t *s);
 
314
void host_to_target_old_sigset(abi_ulong *old_sigset,
 
315
                               const sigset_t *sigset);
 
316
void target_to_host_old_sigset(sigset_t *sigset,
 
317
                               const abi_ulong *old_sigset);
 
318
struct target_sigaction;
 
319
int do_sigaction(int sig, const struct target_sigaction *act,
 
320
                 struct target_sigaction *oact);
 
321
 
 
322
#if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) \
 
323
    || defined(TARGET_PPC) || defined(TARGET_MIPS) || defined(TARGET_SH4) \
 
324
    || defined(TARGET_M68K) || defined(TARGET_ALPHA) || defined(TARGET_CRIS) \
 
325
    || defined(TARGET_MICROBLAZE) || defined(TARGET_UNICORE32) \
 
326
    || defined(TARGET_S390X)
 
327
 
 
328
#if defined(TARGET_SPARC)
 
329
#define TARGET_SA_NOCLDSTOP    8u
 
330
#define TARGET_SA_NOCLDWAIT    0x100u
 
331
#define TARGET_SA_SIGINFO      0x200u
 
332
#define TARGET_SA_ONSTACK      1u
 
333
#define TARGET_SA_RESTART      2u
 
334
#define TARGET_SA_NODEFER      0x20u
 
335
#define TARGET_SA_RESETHAND    4u
 
336
#elif defined(TARGET_MIPS)
 
337
#define TARGET_SA_NOCLDSTOP     0x00000001
 
338
#define TARGET_SA_NOCLDWAIT     0x00010000
 
339
#define TARGET_SA_SIGINFO       0x00000008
 
340
#define TARGET_SA_ONSTACK       0x08000000
 
341
#define TARGET_SA_NODEFER       0x40000000
 
342
#define TARGET_SA_RESTART       0x10000000
 
343
#define TARGET_SA_RESETHAND     0x80000000
 
344
#if !defined(TARGET_ABI_MIPSN32) && !defined(TARGET_ABI_MIPSN64)
 
345
#define TARGET_SA_RESTORER      0x04000000      /* Only for O32 */
 
346
#endif
 
347
#elif defined(TARGET_ALPHA)
 
348
#define TARGET_SA_ONSTACK       0x00000001
 
349
#define TARGET_SA_RESTART       0x00000002
 
350
#define TARGET_SA_NOCLDSTOP     0x00000004
 
351
#define TARGET_SA_NODEFER       0x00000008
 
352
#define TARGET_SA_RESETHAND     0x00000010
 
353
#define TARGET_SA_NOCLDWAIT     0x00000020 /* not supported yet */
 
354
#define TARGET_SA_SIGINFO       0x00000040
 
355
#else
 
356
#define TARGET_SA_NOCLDSTOP     0x00000001
 
357
#define TARGET_SA_NOCLDWAIT     0x00000002 /* not supported yet */
 
358
#define TARGET_SA_SIGINFO       0x00000004
 
359
#define TARGET_SA_ONSTACK       0x08000000
 
360
#define TARGET_SA_RESTART       0x10000000
 
361
#define TARGET_SA_NODEFER       0x40000000
 
362
#define TARGET_SA_RESETHAND     0x80000000
 
363
#define TARGET_SA_RESTORER      0x04000000
 
364
#endif
 
365
 
 
366
#if defined(TARGET_SPARC)
 
367
 
 
368
#define TARGET_SIGHUP            1
 
369
#define TARGET_SIGINT            2
 
370
#define TARGET_SIGQUIT           3
 
371
#define TARGET_SIGILL            4
 
372
#define TARGET_SIGTRAP           5
 
373
#define TARGET_SIGABRT           6
 
374
#define TARGET_SIGIOT            6
 
375
#define TARGET_SIGSTKFLT         7 /* actually EMT */
 
376
#define TARGET_SIGFPE            8
 
377
#define TARGET_SIGKILL           9
 
378
#define TARGET_SIGBUS           10
 
379
#define TARGET_SIGSEGV          11
 
380
#define TARGET_SIGSYS           12
 
381
#define TARGET_SIGPIPE          13
 
382
#define TARGET_SIGALRM          14
 
383
#define TARGET_SIGTERM          15
 
384
#define TARGET_SIGURG           16
 
385
#define TARGET_SIGSTOP          17
 
386
#define TARGET_SIGTSTP          18
 
387
#define TARGET_SIGCONT          19
 
388
#define TARGET_SIGCHLD          20
 
389
#define TARGET_SIGTTIN          21
 
390
#define TARGET_SIGTTOU          22
 
391
#define TARGET_SIGIO            23
 
392
#define TARGET_SIGXCPU          24
 
393
#define TARGET_SIGXFSZ          25
 
394
#define TARGET_SIGVTALRM        26
 
395
#define TARGET_SIGPROF          27
 
396
#define TARGET_SIGWINCH         28
 
397
#define TARGET_SIGPWR           29
 
398
#define TARGET_SIGUSR1          30
 
399
#define TARGET_SIGUSR2          31
 
400
#define TARGET_SIGRTMIN         32
 
401
 
 
402
#define TARGET_SIG_BLOCK          0x01 /* for blocking signals */
 
403
#define TARGET_SIG_UNBLOCK        0x02 /* for unblocking signals */
 
404
#define TARGET_SIG_SETMASK        0x04 /* for setting the signal mask */
 
405
 
 
406
#elif defined(TARGET_MIPS)
 
407
 
 
408
#define TARGET_SIGHUP            1      /* Hangup (POSIX).  */
 
409
#define TARGET_SIGINT            2      /* Interrupt (ANSI).  */
 
410
#define TARGET_SIGQUIT           3      /* Quit (POSIX).  */
 
411
#define TARGET_SIGILL            4      /* Illegal instruction (ANSI).  */
 
412
#define TARGET_SIGTRAP           5      /* Trace trap (POSIX).  */
 
413
#define TARGET_SIGIOT            6      /* IOT trap (4.2 BSD).  */
 
414
#define TARGET_SIGABRT           TARGET_SIGIOT  /* Abort (ANSI).  */
 
415
#define TARGET_SIGEMT            7
 
416
#define TARGET_SIGSTKFLT         7 /* XXX: incorrect */
 
417
#define TARGET_SIGFPE            8      /* Floating-point exception (ANSI).  */
 
418
#define TARGET_SIGKILL           9      /* Kill, unblockable (POSIX).  */
 
419
#define TARGET_SIGBUS           10      /* BUS error (4.2 BSD).  */
 
420
#define TARGET_SIGSEGV          11      /* Segmentation violation (ANSI).  */
 
421
#define TARGET_SIGSYS           12
 
422
#define TARGET_SIGPIPE          13      /* Broken pipe (POSIX).  */
 
423
#define TARGET_SIGALRM          14      /* Alarm clock (POSIX).  */
 
424
#define TARGET_SIGTERM          15      /* Termination (ANSI).  */
 
425
#define TARGET_SIGUSR1          16      /* User-defined signal 1 (POSIX).  */
 
426
#define TARGET_SIGUSR2          17      /* User-defined signal 2 (POSIX).  */
 
427
#define TARGET_SIGCHLD          18      /* Child status has changed (POSIX).  */
 
428
#define TARGET_SIGCLD           TARGET_SIGCHLD  /* Same as TARGET_SIGCHLD (System V).  */
 
429
#define TARGET_SIGPWR           19      /* Power failure restart (System V).  */
 
430
#define TARGET_SIGWINCH 20      /* Window size change (4.3 BSD, Sun).  */
 
431
#define TARGET_SIGURG           21      /* Urgent condition on socket (4.2 BSD).  */
 
432
#define TARGET_SIGIO            22      /* I/O now possible (4.2 BSD).  */
 
433
#define TARGET_SIGPOLL          TARGET_SIGIO    /* Pollable event occurred (System V).  */
 
434
#define TARGET_SIGSTOP          23      /* Stop, unblockable (POSIX).  */
 
435
#define TARGET_SIGTSTP          24      /* Keyboard stop (POSIX).  */
 
436
#define TARGET_SIGCONT          25      /* Continue (POSIX).  */
 
437
#define TARGET_SIGTTIN          26      /* Background read from tty (POSIX).  */
 
438
#define TARGET_SIGTTOU          27      /* Background write to tty (POSIX).  */
 
439
#define TARGET_SIGVTALRM        28      /* Virtual alarm clock (4.2 BSD).  */
 
440
#define TARGET_SIGPROF          29      /* Profiling alarm clock (4.2 BSD).  */
 
441
#define TARGET_SIGXCPU          30      /* CPU limit exceeded (4.2 BSD).  */
 
442
#define TARGET_SIGXFSZ          31      /* File size limit exceeded (4.2 BSD).  */
 
443
#define TARGET_SIGRTMIN         32
 
444
 
 
445
#define TARGET_SIG_BLOCK        1       /* for blocking signals */
 
446
#define TARGET_SIG_UNBLOCK      2       /* for unblocking signals */
 
447
#define TARGET_SIG_SETMASK      3       /* for setting the signal mask */
 
448
 
 
449
#else
 
450
 
 
451
#define TARGET_SIGHUP            1
 
452
#define TARGET_SIGINT            2
 
453
#define TARGET_SIGQUIT           3
 
454
#define TARGET_SIGILL            4
 
455
#define TARGET_SIGTRAP           5
 
456
#define TARGET_SIGABRT           6
 
457
#define TARGET_SIGIOT            6
 
458
#define TARGET_SIGBUS            7
 
459
#define TARGET_SIGFPE            8
 
460
#define TARGET_SIGKILL           9
 
461
#define TARGET_SIGUSR1          10
 
462
#define TARGET_SIGSEGV          11
 
463
#define TARGET_SIGUSR2          12
 
464
#define TARGET_SIGPIPE          13
 
465
#define TARGET_SIGALRM          14
 
466
#define TARGET_SIGTERM          15
 
467
#define TARGET_SIGSTKFLT        16
 
468
#define TARGET_SIGCHLD          17
 
469
#define TARGET_SIGCONT          18
 
470
#define TARGET_SIGSTOP          19
 
471
#define TARGET_SIGTSTP          20
 
472
#define TARGET_SIGTTIN          21
 
473
#define TARGET_SIGTTOU          22
 
474
#define TARGET_SIGURG           23
 
475
#define TARGET_SIGXCPU          24
 
476
#define TARGET_SIGXFSZ          25
 
477
#define TARGET_SIGVTALRM        26
 
478
#define TARGET_SIGPROF          27
 
479
#define TARGET_SIGWINCH         28
 
480
#define TARGET_SIGIO            29
 
481
#define TARGET_SIGPWR           30
 
482
#define TARGET_SIGSYS           31
 
483
#define TARGET_SIGRTMIN         32
 
484
 
 
485
#define TARGET_SIG_BLOCK          0    /* for blocking signals */
 
486
#define TARGET_SIG_UNBLOCK        1    /* for unblocking signals */
 
487
#define TARGET_SIG_SETMASK        2    /* for setting the signal mask */
 
488
 
 
489
#endif
 
490
 
 
491
#if defined(TARGET_ALPHA)
 
492
struct target_old_sigaction {
 
493
    abi_ulong _sa_handler;
 
494
    abi_ulong sa_mask;
 
495
    abi_ulong sa_flags;
 
496
};
 
497
 
 
498
struct target_rt_sigaction {
 
499
    abi_ulong _sa_handler;
 
500
    abi_ulong sa_flags;
 
501
    target_sigset_t sa_mask;
 
502
};
 
503
 
 
504
/* This is the struct used inside the kernel.  The ka_restorer
 
505
   field comes from the 5th argument to sys_rt_sigaction.  */
 
506
struct target_sigaction {
 
507
    abi_ulong _sa_handler;
 
508
    abi_ulong sa_flags;
 
509
    target_sigset_t sa_mask;
 
510
    abi_ulong sa_restorer;
 
511
};
 
512
#elif defined(TARGET_MIPS)
 
513
struct target_sigaction {
 
514
        uint32_t        sa_flags;
 
515
#if defined(TARGET_ABI_MIPSN32)
 
516
        uint32_t        _sa_handler;
 
517
#else
 
518
        abi_ulong       _sa_handler;
 
519
#endif
 
520
        target_sigset_t sa_mask;
 
521
};
 
522
#else
 
523
struct target_old_sigaction {
 
524
        abi_ulong _sa_handler;
 
525
        abi_ulong sa_mask;
 
526
        abi_ulong sa_flags;
 
527
        abi_ulong sa_restorer;
 
528
};
 
529
 
 
530
struct target_sigaction {
 
531
        abi_ulong _sa_handler;
 
532
        abi_ulong sa_flags;
 
533
        abi_ulong sa_restorer;
 
534
        target_sigset_t sa_mask;
 
535
};
 
536
#endif
 
537
 
 
538
typedef union target_sigval {
 
539
        int sival_int;
 
540
        abi_ulong sival_ptr;
 
541
} target_sigval_t;
 
542
#if 0
 
543
#if defined (TARGET_SPARC)
 
544
typedef struct {
 
545
        struct {
 
546
                abi_ulong psr;
 
547
                abi_ulong pc;
 
548
                abi_ulong npc;
 
549
                abi_ulong y;
 
550
                abi_ulong u_regs[16]; /* globals and ins */
 
551
        }               si_regs;
 
552
        int             si_mask;
 
553
} __siginfo_t;
 
554
 
 
555
typedef struct {
 
556
        unsigned   long si_float_regs [32];
 
557
        unsigned   long si_fsr;
 
558
        unsigned   long si_fpqdepth;
 
559
        struct {
 
560
                unsigned long *insn_addr;
 
561
                unsigned long insn;
 
562
        } si_fpqueue [16];
 
563
} __siginfo_fpu_t;
 
564
#endif
 
565
#endif
 
566
 
 
567
#define TARGET_SI_MAX_SIZE      128
 
568
#define TARGET_SI_PAD_SIZE      ((TARGET_SI_MAX_SIZE/sizeof(int)) - 3)
 
569
 
 
570
typedef struct target_siginfo {
 
571
#ifdef TARGET_MIPS
 
572
        int si_signo;
 
573
        int si_code;
 
574
        int si_errno;
 
575
#else
 
576
        int si_signo;
 
577
        int si_errno;
 
578
        int si_code;
 
579
#endif
 
580
 
 
581
        union {
 
582
                int _pad[TARGET_SI_PAD_SIZE];
 
583
 
 
584
                /* kill() */
 
585
                struct {
 
586
                        pid_t _pid;             /* sender's pid */
 
587
                        uid_t _uid;             /* sender's uid */
 
588
                } _kill;
 
589
 
 
590
                /* POSIX.1b timers */
 
591
                struct {
 
592
                        unsigned int _timer1;
 
593
                        unsigned int _timer2;
 
594
                } _timer;
 
595
 
 
596
                /* POSIX.1b signals */
 
597
                struct {
 
598
                        pid_t _pid;             /* sender's pid */
 
599
                        uid_t _uid;             /* sender's uid */
 
600
                        target_sigval_t _sigval;
 
601
                } _rt;
 
602
 
 
603
                /* SIGCHLD */
 
604
                struct {
 
605
                        pid_t _pid;             /* which child */
 
606
                        uid_t _uid;             /* sender's uid */
 
607
                        int _status;            /* exit code */
 
608
                        target_clock_t _utime;
 
609
                        target_clock_t _stime;
 
610
                } _sigchld;
 
611
 
 
612
                /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
 
613
                struct {
 
614
                        abi_ulong _addr; /* faulting insn/memory ref. */
 
615
                } _sigfault;
 
616
 
 
617
                /* SIGPOLL */
 
618
                struct {
 
619
                        int _band;      /* POLL_IN, POLL_OUT, POLL_MSG */
 
620
                        int _fd;
 
621
                } _sigpoll;
 
622
        } _sifields;
 
623
} target_siginfo_t;
 
624
 
 
625
/*
 
626
 * si_code values
 
627
 * Digital reserves positive values for kernel-generated signals.
 
628
 */
 
629
#define TARGET_SI_USER          0       /* sent by kill, sigsend, raise */
 
630
#define TARGET_SI_KERNEL        0x80    /* sent by the kernel from somewhere */
 
631
#define TARGET_SI_QUEUE -1              /* sent by sigqueue */
 
632
#define TARGET_SI_TIMER -2              /* sent by timer expiration */
 
633
#define TARGET_SI_MESGQ -3              /* sent by real time mesq state change */
 
634
#define TARGET_SI_ASYNCIO       -4      /* sent by AIO completion */
 
635
#define TARGET_SI_SIGIO -5              /* sent by queued SIGIO */
 
636
 
 
637
/*
 
638
 * SIGILL si_codes
 
639
 */
 
640
#define TARGET_ILL_ILLOPC       (1)     /* illegal opcode */
 
641
#define TARGET_ILL_ILLOPN       (2)     /* illegal operand */
 
642
#define TARGET_ILL_ILLADR       (3)     /* illegal addressing mode */
 
643
#define TARGET_ILL_ILLTRP       (4)     /* illegal trap */
 
644
#define TARGET_ILL_PRVOPC       (5)     /* privileged opcode */
 
645
#define TARGET_ILL_PRVREG       (6)     /* privileged register */
 
646
#define TARGET_ILL_COPROC       (7)     /* coprocessor error */
 
647
#define TARGET_ILL_BADSTK       (8)     /* internal stack error */
 
648
 
 
649
/*
 
650
 * SIGFPE si_codes
 
651
 */
 
652
#define TARGET_FPE_INTDIV      (1)  /* integer divide by zero */
 
653
#define TARGET_FPE_INTOVF      (2)  /* integer overflow */
 
654
#define TARGET_FPE_FLTDIV      (3)  /* floating point divide by zero */
 
655
#define TARGET_FPE_FLTOVF      (4)  /* floating point overflow */
 
656
#define TARGET_FPE_FLTUND      (5)  /* floating point underflow */
 
657
#define TARGET_FPE_FLTRES      (6)  /* floating point inexact result */
 
658
#define TARGET_FPE_FLTINV      (7)  /* floating point invalid operation */
 
659
#define TARGET_FPE_FLTSUB      (8)  /* subscript out of range */
 
660
#define TARGET_NSIGFPE         8
 
661
 
 
662
/*
 
663
 * SIGSEGV si_codes
 
664
 */
 
665
#define TARGET_SEGV_MAPERR     (1)  /* address not mapped to object */
 
666
#define TARGET_SEGV_ACCERR     (2)  /* invalid permissions for mapped object */
 
667
 
 
668
/*
 
669
 * SIGBUS si_codes
 
670
 */
 
671
#define TARGET_BUS_ADRALN       (1)     /* invalid address alignment */
 
672
#define TARGET_BUS_ADRERR       (2)     /* non-existant physical address */
 
673
#define TARGET_BUS_OBJERR       (3)     /* object specific hardware error */
 
674
 
 
675
/*
 
676
 * SIGTRAP si_codes
 
677
 */
 
678
#define TARGET_TRAP_BRKPT       (1)     /* process breakpoint */
 
679
#define TARGET_TRAP_TRACE       (2)     /* process trace trap */
 
680
 
 
681
#endif /* defined(TARGET_I386) || defined(TARGET_ARM) */
 
682
 
 
683
struct target_rlimit {
 
684
        abi_ulong   rlim_cur;
 
685
        abi_ulong   rlim_max;
 
686
};
 
687
 
 
688
#if defined(TARGET_ALPHA)
 
689
#define TARGET_RLIM_INFINITY    0x7fffffffffffffffull
 
690
#elif defined(TARGET_MIPS) || defined(TARGET_SPARC)
 
691
#define TARGET_RLIM_INFINITY    0x7fffffffUL
 
692
#else
 
693
#define TARGET_RLIM_INFINITY    ((target_ulong)~0UL)
 
694
#endif
 
695
 
 
696
#if defined(TARGET_MIPS)
 
697
#define TARGET_RLIMIT_CPU               0
 
698
#define TARGET_RLIMIT_FSIZE             1
 
699
#define TARGET_RLIMIT_DATA              2
 
700
#define TARGET_RLIMIT_STACK             3
 
701
#define TARGET_RLIMIT_CORE              4
 
702
#define TARGET_RLIMIT_RSS               7
 
703
#define TARGET_RLIMIT_NPROC             8
 
704
#define TARGET_RLIMIT_NOFILE            5
 
705
#define TARGET_RLIMIT_MEMLOCK           9
 
706
#define TARGET_RLIMIT_AS                6
 
707
#define TARGET_RLIMIT_LOCKS             10
 
708
#define TARGET_RLIMIT_SIGPENDING        11
 
709
#define TARGET_RLIMIT_MSGQUEUE          12
 
710
#define TARGET_RLIMIT_NICE              13
 
711
#define TARGET_RLIMIT_RTPRIO            14
 
712
#else
 
713
#define TARGET_RLIMIT_CPU               0
 
714
#define TARGET_RLIMIT_FSIZE             1
 
715
#define TARGET_RLIMIT_DATA              2
 
716
#define TARGET_RLIMIT_STACK             3
 
717
#define TARGET_RLIMIT_CORE              4
 
718
#define TARGET_RLIMIT_RSS               5
 
719
#define TARGET_RLIMIT_NPROC             6
 
720
#define TARGET_RLIMIT_NOFILE            7
 
721
#define TARGET_RLIMIT_MEMLOCK           8
 
722
#define TARGET_RLIMIT_AS                9
 
723
#define TARGET_RLIMIT_LOCKS             10
 
724
#define TARGET_RLIMIT_SIGPENDING        11
 
725
#define TARGET_RLIMIT_MSGQUEUE          12
 
726
#define TARGET_RLIMIT_NICE              13
 
727
#define TARGET_RLIMIT_RTPRIO            14
 
728
#endif
 
729
 
 
730
struct target_pollfd {
 
731
    int fd;           /* file descriptor */
 
732
    short events;     /* requested events */
 
733
    short revents;    /* returned events */
 
734
};
 
735
 
 
736
/* virtual terminal ioctls */
 
737
#define TARGET_KIOCSOUND       0x4B2F   /* start sound generation (0 for off) */
 
738
#define TARGET_KDMKTONE        0x4B30   /* generate tone */
 
739
#define TARGET_KDGKBTYPE       0x4b33
 
740
#define TARGET_KDSETMODE       0x4b3a
 
741
#define TARGET_KDGKBMODE       0x4b44
 
742
#define TARGET_KDSKBMODE       0x4b45
 
743
#define TARGET_KDGKBENT        0x4B46   /* gets one entry in translation table */
 
744
#define TARGET_KDGKBSENT       0x4B48   /* gets one function key string entry */
 
745
#define TARGET_KDGKBLED        0x4B64   /* get led flags (not lights) */
 
746
#define TARGET_KDSKBLED        0x4B65   /* set led flags (not lights) */
 
747
#define TARGET_KDGETLED        0x4B31   /* return current led state */
 
748
#define TARGET_KDSETLED        0x4B32   /* set led state [lights, not flags] */
 
749
 
 
750
#define TARGET_SIOCATMARK      0x8905
 
751
 
 
752
/* Networking ioctls */
 
753
#define TARGET_SIOCADDRT       0x890B          /* add routing table entry */
 
754
#define TARGET_SIOCDELRT       0x890C          /* delete routing table entry */
 
755
#define TARGET_SIOCGIFNAME     0x8910          /* get iface name               */
 
756
#define TARGET_SIOCSIFLINK     0x8911          /* set iface channel            */
 
757
#define TARGET_SIOCGIFCONF     0x8912          /* get iface list               */
 
758
#define TARGET_SIOCGIFFLAGS    0x8913          /* get flags                    */
 
759
#define TARGET_SIOCSIFFLAGS    0x8914          /* set flags                    */
 
760
#define TARGET_SIOCGIFADDR     0x8915          /* get PA address               */
 
761
#define TARGET_SIOCSIFADDR     0x8916          /* set PA address               */
 
762
#define TARGET_SIOCGIFDSTADDR  0x8917          /* get remote PA address        */
 
763
#define TARGET_SIOCSIFDSTADDR  0x8918          /* set remote PA address        */
 
764
#define TARGET_SIOCGIFBRDADDR  0x8919          /* get broadcast PA address     */
 
765
#define TARGET_SIOCSIFBRDADDR  0x891a          /* set broadcast PA address     */
 
766
#define TARGET_SIOCGIFNETMASK  0x891b          /* get network PA mask          */
 
767
#define TARGET_SIOCSIFNETMASK  0x891c          /* set network PA mask          */
 
768
#define TARGET_SIOCGIFMETRIC   0x891d          /* get metric                   */
 
769
#define TARGET_SIOCSIFMETRIC   0x891e          /* set metric                   */
 
770
#define TARGET_SIOCGIFMEM      0x891f          /* get memory address (BSD)     */
 
771
#define TARGET_SIOCSIFMEM      0x8920          /* set memory address (BSD)     */
 
772
#define TARGET_SIOCGIFMTU      0x8921          /* get MTU size                 */
 
773
#define TARGET_SIOCSIFMTU      0x8922          /* set MTU size                 */
 
774
#define TARGET_SIOCSIFHWADDR   0x8924          /* set hardware address (NI)    */
 
775
#define TARGET_SIOCGIFENCAP    0x8925          /* get/set slip encapsulation   */
 
776
#define TARGET_SIOCSIFENCAP    0x8926
 
777
#define TARGET_SIOCGIFHWADDR   0x8927          /* Get hardware address         */
 
778
#define TARGET_SIOCGIFSLAVE    0x8929          /* Driver slaving support       */
 
779
#define TARGET_SIOCSIFSLAVE    0x8930
 
780
#define TARGET_SIOCADDMULTI    0x8931          /* Multicast address lists      */
 
781
#define TARGET_SIOCDELMULTI    0x8932
 
782
 
 
783
/* Bridging control calls */
 
784
#define TARGET_SIOCGIFBR       0x8940          /* Bridging support             */
 
785
#define TARGET_SIOCSIFBR       0x8941          /* Set bridging options         */
 
786
 
 
787
#define TARGET_SIOCGIFTXQLEN   0x8942          /* Get the tx queue length      */
 
788
#define TARGET_SIOCSIFTXQLEN   0x8943          /* Set the tx queue length      */
 
789
 
 
790
/* ARP cache control calls. */
 
791
#define TARGET_OLD_SIOCDARP    0x8950          /* old delete ARP table entry   */
 
792
#define TARGET_OLD_SIOCGARP    0x8951          /* old get ARP table entry      */
 
793
#define TARGET_OLD_SIOCSARP    0x8952          /* old set ARP table entry      */
 
794
#define TARGET_SIOCDARP        0x8953          /* delete ARP table entry       */
 
795
#define TARGET_SIOCGARP        0x8954          /* get ARP table entry          */
 
796
#define TARGET_SIOCSARP        0x8955          /* set ARP table entry          */
 
797
 
 
798
/* RARP cache control calls. */
 
799
#define TARGET_SIOCDRARP       0x8960          /* delete RARP table entry      */
 
800
#define TARGET_SIOCGRARP       0x8961          /* get RARP table entry         */
 
801
#define TARGET_SIOCSRARP       0x8962          /* set RARP table entry         */
 
802
 
 
803
/* Driver configuration calls */
 
804
#define TARGET_SIOCGIFMAP      0x8970          /* Get device parameters        */
 
805
#define TARGET_SIOCSIFMAP      0x8971          /* Set device parameters        */
 
806
 
 
807
/* DLCI configuration calls */
 
808
#define TARGET_SIOCADDDLCI     0x8980          /* Create new DLCI device       */
 
809
#define TARGET_SIOCDELDLCI     0x8981          /* Delete DLCI device           */
 
810
 
 
811
/* From <linux/wireless.h> */
 
812
 
 
813
#define TARGET_SIOCGIWNAME     0x8B01          /* get name == wireless protocol */
 
814
 
 
815
/* From <linux/fs.h> */
 
816
 
 
817
#define TARGET_BLKROSET   TARGET_IO(0x12,93) /* set device read-only (0 = read-write) */
 
818
#define TARGET_BLKROGET   TARGET_IO(0x12,94) /* get read-only status (0 = read_write) */
 
819
#define TARGET_BLKRRPART  TARGET_IO(0x12,95) /* re-read partition table */
 
820
#define TARGET_BLKGETSIZE TARGET_IO(0x12,96) /* return device size /512 (long *arg) */
 
821
#define TARGET_BLKFLSBUF  TARGET_IO(0x12,97) /* flush buffer cache */
 
822
#define TARGET_BLKRASET   TARGET_IO(0x12,98) /* Set read ahead for block device */
 
823
#define TARGET_BLKRAGET   TARGET_IO(0x12,99) /* get current read ahead setting */
 
824
#define TARGET_BLKFRASET  TARGET_IO(0x12,100)/* set filesystem (mm/filemap.c) read-ahead */
 
825
#define TARGET_BLKFRAGET  TARGET_IO(0x12,101)/* get filesystem (mm/filemap.c) read-ahead */
 
826
#define TARGET_BLKSECTSET TARGET_IO(0x12,102)/* set max sectors per request (ll_rw_blk.c) */
 
827
#define TARGET_BLKSECTGET TARGET_IO(0x12,103)/* get max sectors per request (ll_rw_blk.c) */
 
828
#define TARGET_BLKSSZGET  TARGET_IO(0x12,104)/* get block device sector size */
 
829
/* A jump here: 108-111 have been used for various private purposes. */
 
830
#define TARGET_BLKBSZGET  TARGET_IOR(0x12,112,sizeof(int))
 
831
#define TARGET_BLKBSZSET  TARGET_IOW(0x12,113,sizeof(int))
 
832
#define TARGET_BLKGETSIZE64 TARGET_IOR(0x12,114,sizeof(uint64_t)) /* return device size in bytes (u64 *arg) */
 
833
#define TARGET_FIBMAP     TARGET_IO(0x00,1)  /* bmap access */
 
834
#define TARGET_FIGETBSZ   TARGET_IO(0x00,2)  /* get the block size used for bmap */
 
835
#define TARGET_FS_IOC_FIEMAP TARGET_IOWR('f',11,struct fiemap)
 
836
 
 
837
/* cdrom commands */
 
838
#define TARGET_CDROMPAUSE               0x5301 /* Pause Audio Operation */
 
839
#define TARGET_CDROMRESUME              0x5302 /* Resume paused Audio Operation */
 
840
#define TARGET_CDROMPLAYMSF             0x5303 /* Play Audio MSF (struct cdrom_msf) */
 
841
#define TARGET_CDROMPLAYTRKIND          0x5304 /* Play Audio Track/index
 
842
                                           (struct cdrom_ti) */
 
843
#define TARGET_CDROMREADTOCHDR          0x5305 /* Read TOC header
 
844
                                           (struct cdrom_tochdr) */
 
845
#define TARGET_CDROMREADTOCENTRY        0x5306 /* Read TOC entry
 
846
                                           (struct cdrom_tocentry) */
 
847
#define TARGET_CDROMSTOP                0x5307 /* Stop the cdrom drive */
 
848
#define TARGET_CDROMSTART               0x5308 /* Start the cdrom drive */
 
849
#define TARGET_CDROMEJECT               0x5309 /* Ejects the cdrom media */
 
850
#define TARGET_CDROMVOLCTRL             0x530a /* Control output volume
 
851
                                           (struct cdrom_volctrl) */
 
852
#define TARGET_CDROMSUBCHNL             0x530b /* Read subchannel data
 
853
                                           (struct cdrom_subchnl) */
 
854
#define TARGET_CDROMREADMODE2           0x530c /* Read TARGET_CDROM mode 2 data (2336 Bytes)
 
855
                                           (struct cdrom_read) */
 
856
#define TARGET_CDROMREADMODE1           0x530d /* Read TARGET_CDROM mode 1 data (2048 Bytes)
 
857
                                           (struct cdrom_read) */
 
858
#define TARGET_CDROMREADAUDIO           0x530e /* (struct cdrom_read_audio) */
 
859
#define TARGET_CDROMEJECT_SW            0x530f /* enable(1)/disable(0) auto-ejecting */
 
860
#define TARGET_CDROMMULTISESSION        0x5310 /* Obtain the start-of-last-session
 
861
                                           address of multi session disks
 
862
                                           (struct cdrom_multisession) */
 
863
#define TARGET_CDROM_GET_MCN            0x5311 /* Obtain the "Universal Product Code"
 
864
                                           if available (struct cdrom_mcn) */
 
865
#define TARGET_CDROM_GET_UPC            TARGET_CDROM_GET_MCN  /* This one is depricated,
 
866
                                          but here anyway for compatability */
 
867
#define TARGET_CDROMRESET               0x5312 /* hard-reset the drive */
 
868
#define TARGET_CDROMVOLREAD             0x5313 /* Get the drive's volume setting
 
869
                                          (struct cdrom_volctrl) */
 
870
#define TARGET_CDROMREADRAW             0x5314  /* read data in raw mode (2352 Bytes)
 
871
                                           (struct cdrom_read) */
 
872
/*
 
873
 * These ioctls are used only used in aztcd.c and optcd.c
 
874
 */
 
875
#define TARGET_CDROMREADCOOKED          0x5315  /* read data in cooked mode */
 
876
#define TARGET_CDROMSEEK                0x5316  /* seek msf address */
 
877
 
 
878
/*
 
879
 * This ioctl is only used by the scsi-cd driver.
 
880
   It is for playing audio in logical block addressing mode.
 
881
 */
 
882
#define TARGET_CDROMPLAYBLK             0x5317  /* (struct cdrom_blk) */
 
883
 
 
884
/*
 
885
 * These ioctls are only used in optcd.c
 
886
 */
 
887
#define TARGET_CDROMREADALL             0x5318  /* read all 2646 bytes */
 
888
 
 
889
/*
 
890
 * These ioctls are (now) only in ide-cd.c for controlling
 
891
 * drive spindown time.  They should be implemented in the
 
892
 * Uniform driver, via generic packet commands, GPCMD_MODE_SELECT_10,
 
893
 * GPCMD_MODE_SENSE_10 and the GPMODE_POWER_PAGE...
 
894
 *  -Erik
 
895
 */
 
896
#define TARGET_CDROMGETSPINDOWN        0x531d
 
897
#define TARGET_CDROMSETSPINDOWN        0x531e
 
898
 
 
899
/*
 
900
 * These ioctls are implemented through the uniform CD-ROM driver
 
901
 * They _will_ be adopted by all CD-ROM drivers, when all the CD-ROM
 
902
 * drivers are eventually ported to the uniform CD-ROM driver interface.
 
903
 */
 
904
#define TARGET_CDROMCLOSETRAY           0x5319  /* pendant of CDROMEJECT */
 
905
#define TARGET_CDROM_SET_OPTIONS        0x5320  /* Set behavior options */
 
906
#define TARGET_CDROM_CLEAR_OPTIONS      0x5321  /* Clear behavior options */
 
907
#define TARGET_CDROM_SELECT_SPEED       0x5322  /* Set the CD-ROM speed */
 
908
#define TARGET_CDROM_SELECT_DISC        0x5323  /* Select disc (for juke-boxes) */
 
909
#define TARGET_CDROM_MEDIA_CHANGED      0x5325  /* Check is media changed  */
 
910
#define TARGET_CDROM_DRIVE_STATUS       0x5326  /* Get tray position, etc. */
 
911
#define TARGET_CDROM_DISC_STATUS        0x5327  /* Get disc type, etc. */
 
912
#define TARGET_CDROM_CHANGER_NSLOTS    0x5328  /* Get number of slots */
 
913
#define TARGET_CDROM_LOCKDOOR           0x5329  /* lock or unlock door */
 
914
#define TARGET_CDROM_DEBUG              0x5330  /* Turn debug messages on/off */
 
915
#define TARGET_CDROM_GET_CAPABILITY     0x5331  /* get capabilities */
 
916
 
 
917
/* Note that scsi/scsi_ioctl.h also uses 0x5382 - 0x5386.
 
918
 * Future CDROM ioctls should be kept below 0x537F
 
919
 */
 
920
 
 
921
/* This ioctl is only used by sbpcd at the moment */
 
922
#define TARGET_CDROMAUDIOBUFSIZ        0x5382   /* set the audio buffer size */
 
923
                                        /* conflict with SCSI_IOCTL_GET_IDLUN */
 
924
 
 
925
/* DVD-ROM Specific ioctls */
 
926
#define TARGET_DVD_READ_STRUCT          0x5390  /* Read structure */
 
927
#define TARGET_DVD_WRITE_STRUCT 0x5391  /* Write structure */
 
928
#define TARGET_DVD_AUTH         0x5392  /* Authentication */
 
929
 
 
930
#define TARGET_CDROM_SEND_PACKET        0x5393  /* send a packet to the drive */
 
931
#define TARGET_CDROM_NEXT_WRITABLE      0x5394  /* get next writable block */
 
932
#define TARGET_CDROM_LAST_WRITTEN       0x5395  /* get last block written on disc */
 
933
 
 
934
/* HD commands */
 
935
 
 
936
/* hd/ide ctl's that pass (arg) ptrs to user space are numbered 0x030n/0x031n */
 
937
#define TARGET_HDIO_GETGEO            0x0301  /* get device geometry */
 
938
#define TARGET_HDIO_GET_UNMASKINTR    0x0302  /* get current unmask setting */
 
939
#define TARGET_HDIO_GET_MULTCOUNT     0x0304  /* get current IDE blockmode setting */
 
940
#define TARGET_HDIO_GET_KEEPSETTINGS  0x0308  /* get keep-settings-on-reset flag */
 
941
#define TARGET_HDIO_GET_32BIT         0x0309  /* get current io_32bit setting */
 
942
#define TARGET_HDIO_GET_NOWERR        0x030a  /* get ignore-write-error flag */
 
943
#define TARGET_HDIO_GET_DMA           0x030b  /* get use-dma flag */
 
944
#define TARGET_HDIO_GET_IDENTITY      0x030d  /* get IDE identification info */
 
945
#define TARGET_HDIO_DRIVE_CMD         0x031f  /* execute a special drive command */
 
946
 
 
947
/* hd/ide ctl's that pass (arg) non-ptr values are numbered 0x032n/0x033n */
 
948
#define TARGET_HDIO_SET_MULTCOUNT     0x0321  /* change IDE blockmode */
 
949
#define TARGET_HDIO_SET_UNMASKINTR    0x0322  /* permit other irqs during I/O */
 
950
#define TARGET_HDIO_SET_KEEPSETTINGS  0x0323  /* keep ioctl settings on reset */
 
951
#define TARGET_HDIO_SET_32BIT         0x0324  /* change io_32bit flags */
 
952
#define TARGET_HDIO_SET_NOWERR        0x0325  /* change ignore-write-error flag */
 
953
#define TARGET_HDIO_SET_DMA           0x0326  /* change use-dma flag */
 
954
#define TARGET_HDIO_SET_PIO_MODE      0x0327  /* reconfig interface to new speed */
 
955
 
 
956
/* loop ioctls */
 
957
#define TARGET_LOOP_SET_FD            0x4C00
 
958
#define TARGET_LOOP_CLR_FD            0x4C01
 
959
#define TARGET_LOOP_SET_STATUS        0x4C02
 
960
#define TARGET_LOOP_GET_STATUS        0x4C03
 
961
#define TARGET_LOOP_SET_STATUS64      0x4C04
 
962
#define TARGET_LOOP_GET_STATUS64      0x4C05
 
963
#define TARGET_LOOP_CHANGE_FD         0x4C06
 
964
 
 
965
/* fb ioctls */
 
966
#define TARGET_FBIOGET_VSCREENINFO    0x4600
 
967
#define TARGET_FBIOPUT_VSCREENINFO    0x4601
 
968
#define TARGET_FBIOGET_FSCREENINFO    0x4602
 
969
#define TARGET_FBIOGETCMAP            0x4604
 
970
#define TARGET_FBIOPUTCMAP            0x4605
 
971
#define TARGET_FBIOPAN_DISPLAY        0x4606
 
972
#define TARGET_FBIOGET_CON2FBMAP      0x460F
 
973
#define TARGET_FBIOPUT_CON2FBMAP      0x4610
 
974
 
 
975
/* vt ioctls */
 
976
#define TARGET_VT_OPENQRY             0x5600
 
977
#define TARGET_VT_GETSTATE            0x5603
 
978
#define TARGET_VT_ACTIVATE            0x5606
 
979
#define TARGET_VT_WAITACTIVE          0x5607
 
980
#define TARGET_VT_LOCKSWITCH          0x560b
 
981
#define TARGET_VT_UNLOCKSWITCH        0x560c
 
982
#define TARGET_VT_GETMODE             0x5601
 
983
#define TARGET_VT_SETMODE             0x5602
 
984
#define TARGET_VT_RELDISP             0x5605
 
985
#define TARGET_VT_DISALLOCATE         0x5608
 
986
 
 
987
/* from asm/termbits.h */
 
988
 
 
989
#define TARGET_NCC 8
 
990
struct target_termio {
 
991
        unsigned short c_iflag;         /* input mode flags */
 
992
        unsigned short c_oflag;         /* output mode flags */
 
993
        unsigned short c_cflag;         /* control mode flags */
 
994
        unsigned short c_lflag;         /* local mode flags */
 
995
        unsigned char c_line;           /* line discipline */
 
996
        unsigned char c_cc[TARGET_NCC]; /* control characters */
 
997
};
 
998
 
 
999
struct target_winsize {
 
1000
        unsigned short ws_row;
 
1001
        unsigned short ws_col;
 
1002
        unsigned short ws_xpixel;
 
1003
        unsigned short ws_ypixel;
 
1004
};
 
1005
 
 
1006
#include "termbits.h"
 
1007
 
 
1008
#if defined(TARGET_MIPS)
 
1009
#define TARGET_PROT_SEM         0x10
 
1010
#else
 
1011
#define TARGET_PROT_SEM         0x08
 
1012
#endif
 
1013
 
 
1014
/* Common */
 
1015
#define TARGET_MAP_SHARED       0x01            /* Share changes */
 
1016
#define TARGET_MAP_PRIVATE      0x02            /* Changes are private */
 
1017
#define TARGET_MAP_TYPE         0x0f            /* Mask for type of mapping */
 
1018
 
 
1019
/* Target specific */
 
1020
#if defined(TARGET_MIPS)
 
1021
#define TARGET_MAP_FIXED        0x10            /* Interpret addr exactly */
 
1022
#define TARGET_MAP_ANONYMOUS    0x0800          /* don't use a file */
 
1023
#define TARGET_MAP_GROWSDOWN    0x1000          /* stack-like segment */
 
1024
#define TARGET_MAP_DENYWRITE    0x2000          /* ETXTBSY */
 
1025
#define TARGET_MAP_EXECUTABLE   0x4000          /* mark it as an executable */
 
1026
#define TARGET_MAP_LOCKED       0x8000          /* pages are locked */
 
1027
#define TARGET_MAP_NORESERVE    0x0400          /* don't check for reservations */
 
1028
#define TARGET_MAP_POPULATE     0x10000         /* populate (prefault) pagetables */
 
1029
#define TARGET_MAP_NONBLOCK     0x20000         /* do not block on IO */
 
1030
#elif defined(TARGET_PPC)
 
1031
#define TARGET_MAP_FIXED        0x10            /* Interpret addr exactly */
 
1032
#define TARGET_MAP_ANONYMOUS    0x20            /* don't use a file */
 
1033
#define TARGET_MAP_GROWSDOWN    0x0100          /* stack-like segment */
 
1034
#define TARGET_MAP_DENYWRITE    0x0800          /* ETXTBSY */
 
1035
#define TARGET_MAP_EXECUTABLE   0x1000          /* mark it as an executable */
 
1036
#define TARGET_MAP_LOCKED       0x0080          /* pages are locked */
 
1037
#define TARGET_MAP_NORESERVE    0x0040          /* don't check for reservations */
 
1038
#define TARGET_MAP_POPULATE     0x8000          /* populate (prefault) pagetables */
 
1039
#define TARGET_MAP_NONBLOCK     0x10000         /* do not block on IO */
 
1040
#elif defined(TARGET_ALPHA)
 
1041
#define TARGET_MAP_ANONYMOUS    0x10            /* don't use a file */
 
1042
#define TARGET_MAP_FIXED        0x100           /* Interpret addr exactly */
 
1043
#define TARGET_MAP_GROWSDOWN    0x01000         /* stack-like segment */
 
1044
#define TARGET_MAP_DENYWRITE    0x02000         /* ETXTBSY */
 
1045
#define TARGET_MAP_EXECUTABLE   0x04000         /* mark it as an executable */
 
1046
#define TARGET_MAP_LOCKED       0x08000         /* lock the mapping */
 
1047
#define TARGET_MAP_NORESERVE    0x10000         /* no check for reservations */
 
1048
#define TARGET_MAP_POPULATE     0x20000         /* pop (prefault) pagetables */
 
1049
#define TARGET_MAP_NONBLOCK     0x40000         /* do not block on IO */
 
1050
#else
 
1051
#define TARGET_MAP_FIXED        0x10            /* Interpret addr exactly */
 
1052
#define TARGET_MAP_ANONYMOUS    0x20            /* don't use a file */
 
1053
#define TARGET_MAP_GROWSDOWN    0x0100          /* stack-like segment */
 
1054
#define TARGET_MAP_DENYWRITE    0x0800          /* ETXTBSY */
 
1055
#define TARGET_MAP_EXECUTABLE   0x1000          /* mark it as an executable */
 
1056
#define TARGET_MAP_LOCKED       0x2000          /* pages are locked */
 
1057
#define TARGET_MAP_NORESERVE    0x4000          /* don't check for reservations */
 
1058
#define TARGET_MAP_POPULATE     0x8000          /* populate (prefault) pagetables */
 
1059
#define TARGET_MAP_NONBLOCK     0x10000         /* do not block on IO */
 
1060
#define TARGET_MAP_UNINITIALIZED 0x4000000      /* for anonymous mmap, memory could be uninitialized */
 
1061
#endif
 
1062
 
 
1063
#if (defined(TARGET_I386) && defined(TARGET_ABI32)) || defined(TARGET_ARM) \
 
1064
    || defined(TARGET_CRIS) || defined(TARGET_UNICORE32)
 
1065
struct target_stat {
 
1066
        unsigned short st_dev;
 
1067
        unsigned short __pad1;
 
1068
        abi_ulong st_ino;
 
1069
        unsigned short st_mode;
 
1070
        unsigned short st_nlink;
 
1071
        unsigned short st_uid;
 
1072
        unsigned short st_gid;
 
1073
        unsigned short st_rdev;
 
1074
        unsigned short __pad2;
 
1075
        abi_ulong  st_size;
 
1076
        abi_ulong  st_blksize;
 
1077
        abi_ulong  st_blocks;
 
1078
        abi_ulong  target_st_atime;
 
1079
        abi_ulong  __unused1;
 
1080
        abi_ulong  target_st_mtime;
 
1081
        abi_ulong  __unused2;
 
1082
        abi_ulong  target_st_ctime;
 
1083
        abi_ulong  __unused3;
 
1084
        abi_ulong  __unused4;
 
1085
        abi_ulong  __unused5;
 
1086
};
 
1087
 
 
1088
/* This matches struct stat64 in glibc2.1, hence the absolutely
 
1089
 * insane amounts of padding around dev_t's.
 
1090
 */
 
1091
struct target_stat64 {
 
1092
        unsigned short  st_dev;
 
1093
        unsigned char   __pad0[10];
 
1094
 
 
1095
#define TARGET_STAT64_HAS_BROKEN_ST_INO 1
 
1096
        abi_ulong       __st_ino;
 
1097
 
 
1098
        unsigned int    st_mode;
 
1099
        unsigned int    st_nlink;
 
1100
 
 
1101
        abi_ulong       st_uid;
 
1102
        abi_ulong       st_gid;
 
1103
 
 
1104
        unsigned short  st_rdev;
 
1105
        unsigned char   __pad3[10];
 
1106
 
 
1107
        long long       st_size;
 
1108
        abi_ulong       st_blksize;
 
1109
 
 
1110
        abi_ulong       st_blocks;      /* Number 512-byte blocks allocated. */
 
1111
        abi_ulong       __pad4;         /* future possible st_blocks high bits */
 
1112
 
 
1113
        abi_ulong       target_st_atime;
 
1114
        abi_ulong       __pad5;
 
1115
 
 
1116
        abi_ulong       target_st_mtime;
 
1117
        abi_ulong       __pad6;
 
1118
 
 
1119
        abi_ulong       target_st_ctime;
 
1120
        abi_ulong       __pad7;         /* will be high 32 bits of ctime someday */
 
1121
 
 
1122
        unsigned long long      st_ino;
 
1123
} __attribute__((packed));
 
1124
 
 
1125
#ifdef TARGET_ARM
 
1126
struct target_eabi_stat64 {
 
1127
        unsigned long long st_dev;
 
1128
        unsigned int    __pad1;
 
1129
        abi_ulong    __st_ino;
 
1130
        unsigned int    st_mode;
 
1131
        unsigned int    st_nlink;
 
1132
 
 
1133
        abi_ulong    st_uid;
 
1134
        abi_ulong    st_gid;
 
1135
 
 
1136
        unsigned long long st_rdev;
 
1137
        unsigned int    __pad2[2];
 
1138
 
 
1139
        long long       st_size;
 
1140
        abi_ulong    st_blksize;
 
1141
        unsigned int    __pad3;
 
1142
        unsigned long long st_blocks;
 
1143
 
 
1144
        abi_ulong    target_st_atime;
 
1145
        abi_ulong    target_st_atime_nsec;
 
1146
 
 
1147
        abi_ulong    target_st_mtime;
 
1148
        abi_ulong    target_st_mtime_nsec;
 
1149
 
 
1150
        abi_ulong    target_st_ctime;
 
1151
        abi_ulong    target_st_ctime_nsec;
 
1152
 
 
1153
        unsigned long long st_ino;
 
1154
} __attribute__ ((packed));
 
1155
#endif
 
1156
 
 
1157
#elif defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
 
1158
struct target_stat {
 
1159
        unsigned int    st_dev;
 
1160
        abi_ulong       st_ino;
 
1161
        unsigned int    st_mode;
 
1162
        unsigned int    st_nlink;
 
1163
        unsigned int    st_uid;
 
1164
        unsigned int    st_gid;
 
1165
        unsigned int    st_rdev;
 
1166
        abi_long        st_size;
 
1167
        abi_long        target_st_atime;
 
1168
        abi_long        target_st_mtime;
 
1169
        abi_long        target_st_ctime;
 
1170
        abi_long        st_blksize;
 
1171
        abi_long        st_blocks;
 
1172
        abi_ulong       __unused4[2];
 
1173
};
 
1174
 
 
1175
struct target_stat64 {
 
1176
        unsigned char   __pad0[6];
 
1177
        unsigned short  st_dev;
 
1178
 
 
1179
        uint64_t        st_ino;
 
1180
        uint64_t        st_nlink;
 
1181
 
 
1182
        unsigned int    st_mode;
 
1183
 
 
1184
        unsigned int    st_uid;
 
1185
        unsigned int    st_gid;
 
1186
 
 
1187
        unsigned char   __pad2[6];
 
1188
        unsigned short  st_rdev;
 
1189
 
 
1190
        int64_t         st_size;
 
1191
        int64_t         st_blksize;
 
1192
 
 
1193
        unsigned char   __pad4[4];
 
1194
        unsigned int    st_blocks;
 
1195
 
 
1196
        abi_ulong       target_st_atime;
 
1197
        abi_ulong       __unused1;
 
1198
 
 
1199
        abi_ulong       target_st_mtime;
 
1200
        abi_ulong       __unused2;
 
1201
 
 
1202
        abi_ulong       target_st_ctime;
 
1203
        abi_ulong       __unused3;
 
1204
 
 
1205
        abi_ulong       __unused4[3];
 
1206
};
 
1207
 
 
1208
#elif defined(TARGET_SPARC)
 
1209
 
 
1210
struct target_stat {
 
1211
        unsigned short  st_dev;
 
1212
        abi_ulong       st_ino;
 
1213
        unsigned short  st_mode;
 
1214
        short           st_nlink;
 
1215
        unsigned short  st_uid;
 
1216
        unsigned short  st_gid;
 
1217
        unsigned short  st_rdev;
 
1218
        abi_long        st_size;
 
1219
        abi_long        target_st_atime;
 
1220
        abi_ulong       __unused1;
 
1221
        abi_long        target_st_mtime;
 
1222
        abi_ulong       __unused2;
 
1223
        abi_long        target_st_ctime;
 
1224
        abi_ulong       __unused3;
 
1225
        abi_long        st_blksize;
 
1226
        abi_long        st_blocks;
 
1227
        abi_ulong       __unused4[2];
 
1228
};
 
1229
 
 
1230
struct target_stat64 {
 
1231
        unsigned char   __pad0[6];
 
1232
        unsigned short  st_dev;
 
1233
 
 
1234
        uint64_t st_ino;
 
1235
 
 
1236
        unsigned int    st_mode;
 
1237
        unsigned int    st_nlink;
 
1238
 
 
1239
        unsigned int    st_uid;
 
1240
        unsigned int    st_gid;
 
1241
 
 
1242
        unsigned char   __pad2[6];
 
1243
        unsigned short  st_rdev;
 
1244
 
 
1245
        unsigned char   __pad3[8];
 
1246
 
 
1247
        int64_t st_size;
 
1248
        unsigned int    st_blksize;
 
1249
 
 
1250
        unsigned char   __pad4[8];
 
1251
        unsigned int    st_blocks;
 
1252
 
 
1253
        unsigned int    target_st_atime;
 
1254
        unsigned int    __unused1;
 
1255
 
 
1256
        unsigned int    target_st_mtime;
 
1257
        unsigned int    __unused2;
 
1258
 
 
1259
        unsigned int    target_st_ctime;
 
1260
        unsigned int    __unused3;
 
1261
 
 
1262
        unsigned int    __unused4;
 
1263
        unsigned int    __unused5;
 
1264
};
 
1265
 
 
1266
#elif defined(TARGET_PPC)
 
1267
 
 
1268
struct target_stat {
 
1269
        abi_ulong st_dev;
 
1270
        abi_ulong st_ino;
 
1271
#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
 
1272
        abi_ulong st_nlink;
 
1273
        unsigned int st_mode;
 
1274
#else
 
1275
        unsigned int st_mode;
 
1276
        unsigned short st_nlink;
 
1277
#endif
 
1278
        unsigned int st_uid;
 
1279
        unsigned int st_gid;
 
1280
        abi_ulong  st_rdev;
 
1281
        abi_ulong  st_size;
 
1282
        abi_ulong  st_blksize;
 
1283
        abi_ulong  st_blocks;
 
1284
        abi_ulong  target_st_atime;
 
1285
        abi_ulong  target_st_atime_nsec;
 
1286
        abi_ulong  target_st_mtime;
 
1287
        abi_ulong  target_st_mtime_nsec;
 
1288
        abi_ulong  target_st_ctime;
 
1289
        abi_ulong  target_st_ctime_nsec;
 
1290
        abi_ulong  __unused4;
 
1291
        abi_ulong  __unused5;
 
1292
#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
 
1293
        abi_ulong  __unused6;
 
1294
#endif
 
1295
};
 
1296
 
 
1297
struct __attribute__((__packed__)) target_stat64 {
 
1298
        unsigned long long st_dev;
 
1299
        unsigned long long st_ino;
 
1300
        unsigned int st_mode;
 
1301
        unsigned int st_nlink;
 
1302
        unsigned int st_uid;
 
1303
        unsigned int st_gid;
 
1304
        unsigned long long st_rdev;
 
1305
        unsigned long long __pad0;
 
1306
        long long      st_size;
 
1307
        int            st_blksize;
 
1308
        unsigned int   __pad1;
 
1309
        long long      st_blocks;       /* Number 512-byte blocks allocated. */
 
1310
        int            target_st_atime;
 
1311
        unsigned int   target_st_atime_nsec;
 
1312
        int            target_st_mtime;
 
1313
        unsigned int   target_st_mtime_nsec;
 
1314
        int            target_st_ctime;
 
1315
        unsigned int   target_st_ctime_nsec;
 
1316
        unsigned int   __unused4;
 
1317
        unsigned int   __unused5;
 
1318
};
 
1319
 
 
1320
#elif defined(TARGET_MICROBLAZE)
 
1321
 
 
1322
struct target_stat {
 
1323
        abi_ulong st_dev;
 
1324
        abi_ulong st_ino;
 
1325
        unsigned int st_mode;
 
1326
        unsigned short st_nlink;
 
1327
        unsigned int st_uid;
 
1328
        unsigned int st_gid;
 
1329
        abi_ulong  st_rdev;
 
1330
        abi_ulong  st_size;
 
1331
        abi_ulong  st_blksize;
 
1332
        abi_ulong  st_blocks;
 
1333
        abi_ulong  target_st_atime;
 
1334
        abi_ulong  target_st_atime_nsec;
 
1335
        abi_ulong  target_st_mtime;
 
1336
        abi_ulong  target_st_mtime_nsec;
 
1337
        abi_ulong  target_st_ctime;
 
1338
        abi_ulong  target_st_ctime_nsec;
 
1339
        abi_ulong  __unused4;
 
1340
        abi_ulong  __unused5;
 
1341
};
 
1342
 
 
1343
/* FIXME: Microblaze no-mmu user-space has a difference stat64 layout...  */
 
1344
struct __attribute__((__packed__)) target_stat64 {
 
1345
        uint64_t st_dev;
 
1346
#define TARGET_STAT64_HAS_BROKEN_ST_INO 1
 
1347
        uint32_t pad0;
 
1348
        uint32_t __st_ino;
 
1349
 
 
1350
        uint32_t st_mode;
 
1351
        uint32_t st_nlink;
 
1352
        uint32_t st_uid;
 
1353
        uint32_t st_gid;
 
1354
        uint64_t st_rdev;
 
1355
        uint64_t __pad1;
 
1356
 
 
1357
        int64_t  st_size;
 
1358
        int32_t  st_blksize;
 
1359
        uint32_t __pad2;
 
1360
        int64_t st_blocks;      /* Number 512-byte blocks allocated. */
 
1361
 
 
1362
        int            target_st_atime;
 
1363
        unsigned int   target_st_atime_nsec;
 
1364
        int            target_st_mtime;
 
1365
        unsigned int   target_st_mtime_nsec;
 
1366
        int            target_st_ctime;
 
1367
        unsigned int   target_st_ctime_nsec;
 
1368
        uint64_t st_ino;
 
1369
};
 
1370
 
 
1371
#elif defined(TARGET_M68K)
 
1372
 
 
1373
struct target_stat {
 
1374
        unsigned short st_dev;
 
1375
        unsigned short __pad1;
 
1376
        abi_ulong st_ino;
 
1377
        unsigned short st_mode;
 
1378
        unsigned short st_nlink;
 
1379
        unsigned short st_uid;
 
1380
        unsigned short st_gid;
 
1381
        unsigned short st_rdev;
 
1382
        unsigned short __pad2;
 
1383
        abi_ulong  st_size;
 
1384
        abi_ulong  st_blksize;
 
1385
        abi_ulong  st_blocks;
 
1386
        abi_ulong  target_st_atime;
 
1387
        abi_ulong  __unused1;
 
1388
        abi_ulong  target_st_mtime;
 
1389
        abi_ulong  __unused2;
 
1390
        abi_ulong  target_st_ctime;
 
1391
        abi_ulong  __unused3;
 
1392
        abi_ulong  __unused4;
 
1393
        abi_ulong  __unused5;
 
1394
};
 
1395
 
 
1396
/* This matches struct stat64 in glibc2.1, hence the absolutely
 
1397
 * insane amounts of padding around dev_t's.
 
1398
 */
 
1399
struct target_stat64 {
 
1400
        unsigned long long      st_dev;
 
1401
        unsigned char   __pad1[2];
 
1402
 
 
1403
#define TARGET_STAT64_HAS_BROKEN_ST_INO 1
 
1404
        abi_ulong       __st_ino;
 
1405
 
 
1406
        unsigned int    st_mode;
 
1407
        unsigned int    st_nlink;
 
1408
 
 
1409
        abi_ulong       st_uid;
 
1410
        abi_ulong       st_gid;
 
1411
 
 
1412
        unsigned long long      st_rdev;
 
1413
        unsigned char   __pad3[2];
 
1414
 
 
1415
        long long       st_size;
 
1416
        abi_ulong       st_blksize;
 
1417
 
 
1418
        abi_ulong       __pad4;         /* future possible st_blocks high bits */
 
1419
        abi_ulong       st_blocks;      /* Number 512-byte blocks allocated. */
 
1420
 
 
1421
        abi_ulong       target_st_atime;
 
1422
        abi_ulong       target_st_atime_nsec;
 
1423
 
 
1424
        abi_ulong       target_st_mtime;
 
1425
        abi_ulong       target_st_mtime_nsec;
 
1426
 
 
1427
        abi_ulong       target_st_ctime;
 
1428
        abi_ulong       target_st_ctime_nsec;
 
1429
 
 
1430
        unsigned long long      st_ino;
 
1431
} __attribute__((packed));
 
1432
 
 
1433
#elif defined(TARGET_ABI_MIPSN64)
 
1434
 
 
1435
/* The memory layout is the same as of struct stat64 of the 32-bit kernel.  */
 
1436
struct target_stat {
 
1437
        unsigned int            st_dev;
 
1438
        unsigned int            st_pad0[3]; /* Reserved for st_dev expansion */
 
1439
 
 
1440
        abi_ulong               st_ino;
 
1441
 
 
1442
        unsigned int            st_mode;
 
1443
        unsigned int            st_nlink;
 
1444
 
 
1445
        int                     st_uid;
 
1446
        int                     st_gid;
 
1447
 
 
1448
        unsigned int            st_rdev;
 
1449
        unsigned int            st_pad1[3]; /* Reserved for st_rdev expansion */
 
1450
 
 
1451
        abi_ulong               st_size;
 
1452
 
 
1453
        /*
 
1454
         * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
 
1455
         * but we don't have it under Linux.
 
1456
         */
 
1457
        unsigned int            target_st_atime;
 
1458
        unsigned int            target_st_atime_nsec;
 
1459
 
 
1460
        unsigned int            target_st_mtime;
 
1461
        unsigned int            target_st_mtime_nsec;
 
1462
 
 
1463
        unsigned int            target_st_ctime;
 
1464
        unsigned int            target_st_ctime_nsec;
 
1465
 
 
1466
        unsigned int            st_blksize;
 
1467
        unsigned int            st_pad2;
 
1468
 
 
1469
        abi_ulong               st_blocks;
 
1470
};
 
1471
 
 
1472
#elif defined(TARGET_ABI_MIPSN32)
 
1473
 
 
1474
struct target_stat {
 
1475
        unsigned        st_dev;
 
1476
        int             st_pad1[3];             /* Reserved for network id */
 
1477
        unsigned int    st_ino;
 
1478
        unsigned int    st_mode;
 
1479
        unsigned int    st_nlink;
 
1480
        int             st_uid;
 
1481
        int             st_gid;
 
1482
        unsigned        st_rdev;
 
1483
        unsigned int    st_pad2[2];
 
1484
        unsigned int    st_size;
 
1485
        unsigned int    st_pad3;
 
1486
        /*
 
1487
         * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
 
1488
         * but we don't have it under Linux.
 
1489
         */
 
1490
        unsigned int            target_st_atime;
 
1491
        unsigned int            target_st_atime_nsec;
 
1492
        unsigned int            target_st_mtime;
 
1493
        unsigned int            target_st_mtime_nsec;
 
1494
        unsigned int            target_st_ctime;
 
1495
        unsigned int            target_st_ctime_nsec;
 
1496
        unsigned int            st_blksize;
 
1497
        unsigned int            st_blocks;
 
1498
        unsigned int            st_pad4[14];
 
1499
};
 
1500
 
 
1501
/*
 
1502
 * This matches struct stat64 in glibc2.1, hence the absolutely insane
 
1503
 * amounts of padding around dev_t's.  The memory layout is the same as of
 
1504
 * struct stat of the 64-bit kernel.
 
1505
 */
 
1506
 
 
1507
struct target_stat64 {
 
1508
        unsigned int    st_dev;
 
1509
        unsigned int    st_pad0[3];     /* Reserved for st_dev expansion  */
 
1510
 
 
1511
        target_ulong    st_ino;
 
1512
 
 
1513
        unsigned int    st_mode;
 
1514
        unsigned int    st_nlink;
 
1515
 
 
1516
        int             st_uid;
 
1517
        int             st_gid;
 
1518
 
 
1519
        unsigned int    st_rdev;
 
1520
        unsigned int    st_pad1[3];     /* Reserved for st_rdev expansion  */
 
1521
 
 
1522
        int             st_size;
 
1523
 
 
1524
        /*
 
1525
         * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
 
1526
         * but we don't have it under Linux.
 
1527
         */
 
1528
        int             target_st_atime;
 
1529
        unsigned int    target_st_atime_nsec;   /* Reserved for st_atime expansion  */
 
1530
 
 
1531
        int             target_st_mtime;
 
1532
        unsigned int    target_st_mtime_nsec;   /* Reserved for st_mtime expansion  */
 
1533
 
 
1534
        int             target_st_ctime;
 
1535
        unsigned int    target_st_ctime_nsec;   /* Reserved for st_ctime expansion  */
 
1536
 
 
1537
        unsigned int    st_blksize;
 
1538
        unsigned int    st_pad2;
 
1539
 
 
1540
        int             st_blocks;
 
1541
};
 
1542
 
 
1543
#elif defined(TARGET_ABI_MIPSO32)
 
1544
 
 
1545
struct target_stat {
 
1546
        unsigned        st_dev;
 
1547
        abi_long        st_pad1[3];             /* Reserved for network id */
 
1548
        abi_ulong       st_ino;
 
1549
        unsigned int    st_mode;
 
1550
        unsigned int    st_nlink;
 
1551
        int             st_uid;
 
1552
        int             st_gid;
 
1553
        unsigned        st_rdev;
 
1554
        abi_long        st_pad2[2];
 
1555
        abi_long        st_size;
 
1556
        abi_long        st_pad3;
 
1557
        /*
 
1558
         * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
 
1559
         * but we don't have it under Linux.
 
1560
         */
 
1561
        abi_long                target_st_atime;
 
1562
        abi_long                target_st_atime_nsec;
 
1563
        abi_long                target_st_mtime;
 
1564
        abi_long                target_st_mtime_nsec;
 
1565
        abi_long                target_st_ctime;
 
1566
        abi_long                target_st_ctime_nsec;
 
1567
        abi_long                st_blksize;
 
1568
        abi_long                st_blocks;
 
1569
        abi_long                st_pad4[14];
 
1570
};
 
1571
 
 
1572
/*
 
1573
 * This matches struct stat64 in glibc2.1, hence the absolutely insane
 
1574
 * amounts of padding around dev_t's.  The memory layout is the same as of
 
1575
 * struct stat of the 64-bit kernel.
 
1576
 */
 
1577
 
 
1578
struct target_stat64 {
 
1579
        abi_ulong       st_dev;
 
1580
        abi_ulong       st_pad0[3];     /* Reserved for st_dev expansion  */
 
1581
 
 
1582
        uint64_t        st_ino;
 
1583
 
 
1584
        unsigned int    st_mode;
 
1585
        unsigned int    st_nlink;
 
1586
 
 
1587
        int             st_uid;
 
1588
        int             st_gid;
 
1589
 
 
1590
        abi_ulong       st_rdev;
 
1591
        abi_ulong       st_pad1[3];     /* Reserved for st_rdev expansion  */
 
1592
 
 
1593
        int64_t         st_size;
 
1594
 
 
1595
        /*
 
1596
         * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
 
1597
         * but we don't have it under Linux.
 
1598
         */
 
1599
        abi_long        target_st_atime;
 
1600
        abi_ulong       target_st_atime_nsec;   /* Reserved for st_atime expansion  */
 
1601
 
 
1602
        abi_long        target_st_mtime;
 
1603
        abi_ulong       target_st_mtime_nsec;   /* Reserved for st_mtime expansion  */
 
1604
 
 
1605
        abi_long        target_st_ctime;
 
1606
        abi_ulong       target_st_ctime_nsec;   /* Reserved for st_ctime expansion  */
 
1607
 
 
1608
        abi_ulong       st_blksize;
 
1609
        abi_ulong       st_pad2;
 
1610
 
 
1611
        int64_t         st_blocks;
 
1612
};
 
1613
 
 
1614
#elif defined(TARGET_ALPHA)
 
1615
 
 
1616
struct target_stat {
 
1617
       unsigned int    st_dev;
 
1618
       unsigned int    st_ino;
 
1619
       unsigned int    st_mode;
 
1620
       unsigned int    st_nlink;
 
1621
       unsigned int    st_uid;
 
1622
       unsigned int    st_gid;
 
1623
       unsigned int    st_rdev;
 
1624
       abi_long     st_size;
 
1625
       abi_ulong    target_st_atime;
 
1626
       abi_ulong    target_st_mtime;
 
1627
       abi_ulong    target_st_ctime;
 
1628
       unsigned int    st_blksize;
 
1629
       unsigned int    st_blocks;
 
1630
       unsigned int    st_flags;
 
1631
       unsigned int    st_gen;
 
1632
};
 
1633
 
 
1634
struct target_stat64 {
 
1635
       abi_ulong    st_dev;
 
1636
       abi_ulong    st_ino;
 
1637
       abi_ulong    st_rdev;
 
1638
       abi_long     st_size;
 
1639
       abi_ulong    st_blocks;
 
1640
 
 
1641
       unsigned int    st_mode;
 
1642
       unsigned int    st_uid;
 
1643
       unsigned int    st_gid;
 
1644
       unsigned int    st_blksize;
 
1645
       unsigned int    st_nlink;
 
1646
       unsigned int    __pad0;
 
1647
 
 
1648
       abi_ulong    target_st_atime;
 
1649
       abi_ulong    target_st_atime_nsec;
 
1650
       abi_ulong    target_st_mtime;
 
1651
       abi_ulong    target_st_mtime_nsec;
 
1652
       abi_ulong    target_st_ctime;
 
1653
       abi_ulong    target_st_ctime_nsec;
 
1654
       abi_long     __unused[3];
 
1655
};
 
1656
 
 
1657
#elif defined(TARGET_SH4)
 
1658
 
 
1659
struct target_stat {
 
1660
        abi_ulong  st_dev;
 
1661
        abi_ulong  st_ino;
 
1662
        unsigned short st_mode;
 
1663
        unsigned short st_nlink;
 
1664
        unsigned short st_uid;
 
1665
        unsigned short st_gid;
 
1666
        abi_ulong  st_rdev;
 
1667
        abi_ulong  st_size;
 
1668
        abi_ulong  st_blksize;
 
1669
        abi_ulong  st_blocks;
 
1670
        abi_ulong  target_st_atime;
 
1671
        abi_ulong  target_st_atime_nsec;
 
1672
        abi_ulong  target_st_mtime;
 
1673
        abi_ulong  target_st_mtime_nsec;
 
1674
        abi_ulong  target_st_ctime;
 
1675
        abi_ulong  target_st_ctime_nsec;
 
1676
        abi_ulong  __unused4;
 
1677
        abi_ulong  __unused5;
 
1678
};
 
1679
 
 
1680
/* This matches struct stat64 in glibc2.1, hence the absolutely
 
1681
 * insane amounts of padding around dev_t's.
 
1682
 */
 
1683
struct __attribute__((__packed__)) target_stat64 {
 
1684
        unsigned long long      st_dev;
 
1685
        unsigned char   __pad0[4];
 
1686
 
 
1687
#define TARGET_STAT64_HAS_BROKEN_ST_INO 1
 
1688
        abi_ulong       __st_ino;
 
1689
 
 
1690
        unsigned int    st_mode;
 
1691
        unsigned int    st_nlink;
 
1692
 
 
1693
        abi_ulong       st_uid;
 
1694
        abi_ulong       st_gid;
 
1695
 
 
1696
        unsigned long long      st_rdev;
 
1697
        unsigned char   __pad3[4];
 
1698
 
 
1699
        long long       st_size;
 
1700
        abi_ulong       st_blksize;
 
1701
 
 
1702
        unsigned long long      st_blocks;      /* Number 512-byte blocks allocated. */
 
1703
 
 
1704
        abi_ulong       target_st_atime;
 
1705
        abi_ulong       target_st_atime_nsec;
 
1706
 
 
1707
        abi_ulong       target_st_mtime;
 
1708
        abi_ulong       target_st_mtime_nsec;
 
1709
 
 
1710
        abi_ulong       target_st_ctime;
 
1711
        abi_ulong       target_st_ctime_nsec;
 
1712
 
 
1713
        unsigned long long      st_ino;
 
1714
};
 
1715
 
 
1716
#elif defined(TARGET_I386) && !defined(TARGET_ABI32)
 
1717
struct target_stat {
 
1718
        abi_ulong       st_dev;
 
1719
        abi_ulong       st_ino;
 
1720
        abi_ulong       st_nlink;
 
1721
 
 
1722
        unsigned int    st_mode;
 
1723
        unsigned int    st_uid;
 
1724
        unsigned int    st_gid;
 
1725
        unsigned int    __pad0;
 
1726
        abi_ulong       st_rdev;
 
1727
        abi_long        st_size;
 
1728
        abi_long        st_blksize;
 
1729
        abi_long        st_blocks;      /* Number 512-byte blocks allocated. */
 
1730
 
 
1731
        abi_ulong       target_st_atime;
 
1732
        abi_ulong       target_st_atime_nsec; 
 
1733
        abi_ulong       target_st_mtime;
 
1734
        abi_ulong       target_st_mtime_nsec;
 
1735
        abi_ulong       target_st_ctime;
 
1736
        abi_ulong       target_st_ctime_nsec;
 
1737
 
 
1738
        abi_long        __unused[3];
 
1739
};
 
1740
#elif defined(TARGET_S390X)
 
1741
struct target_stat {
 
1742
    abi_ulong  st_dev;
 
1743
    abi_ulong  st_ino;
 
1744
    abi_ulong  st_nlink;
 
1745
    unsigned int   st_mode;
 
1746
    unsigned int   st_uid;
 
1747
    unsigned int   st_gid;
 
1748
    unsigned int   __pad1;
 
1749
    abi_ulong  st_rdev;
 
1750
    abi_ulong  st_size;
 
1751
    abi_ulong  target_st_atime;
 
1752
    abi_ulong  target_st_atime_nsec;
 
1753
    abi_ulong  target_st_mtime;
 
1754
    abi_ulong  target_st_mtime_nsec;
 
1755
    abi_ulong  target_st_ctime;
 
1756
    abi_ulong  target_st_ctime_nsec;
 
1757
    abi_ulong  st_blksize;
 
1758
    abi_long       st_blocks;
 
1759
    abi_ulong  __unused[3];
 
1760
};
 
1761
#else
 
1762
#error unsupported CPU
 
1763
#endif
 
1764
 
 
1765
typedef struct {
 
1766
        int     val[2];
 
1767
} target_fsid_t;
 
1768
 
 
1769
#ifdef TARGET_MIPS
 
1770
#ifdef TARGET_ABI_MIPSN32
 
1771
struct target_statfs {
 
1772
        int32_t                 f_type;
 
1773
        int32_t                 f_bsize;
 
1774
        int32_t                 f_frsize;       /* Fragment size - unsupported */
 
1775
        int32_t                 f_blocks;
 
1776
        int32_t                 f_bfree;
 
1777
        int32_t                 f_files;
 
1778
        int32_t                 f_ffree;
 
1779
        int32_t                 f_bavail;
 
1780
 
 
1781
        /* Linux specials */
 
1782
        target_fsid_t           f_fsid;
 
1783
        int32_t                 f_namelen;
 
1784
        int32_t                 f_spare[6];
 
1785
};
 
1786
#else
 
1787
struct target_statfs {
 
1788
        abi_long                f_type;
 
1789
        abi_long                f_bsize;
 
1790
        abi_long                f_frsize;       /* Fragment size - unsupported */
 
1791
        abi_long                f_blocks;
 
1792
        abi_long                f_bfree;
 
1793
        abi_long                f_files;
 
1794
        abi_long                f_ffree;
 
1795
        abi_long                f_bavail;
 
1796
 
 
1797
        /* Linux specials */
 
1798
        target_fsid_t           f_fsid;
 
1799
        abi_long                f_namelen;
 
1800
        abi_long                f_spare[6];
 
1801
};
 
1802
#endif
 
1803
 
 
1804
struct target_statfs64 {
 
1805
        uint32_t        f_type;
 
1806
        uint32_t        f_bsize;
 
1807
        uint32_t        f_frsize;       /* Fragment size - unsupported */
 
1808
        uint32_t        __pad;
 
1809
        uint64_t        f_blocks;
 
1810
        uint64_t        f_bfree;
 
1811
        uint64_t        f_files;
 
1812
        uint64_t        f_ffree;
 
1813
        uint64_t        f_bavail;
 
1814
        target_fsid_t   f_fsid;
 
1815
        uint32_t        f_namelen;
 
1816
        uint32_t        f_spare[6];
 
1817
};
 
1818
#elif (defined(TARGET_PPC64) || defined(TARGET_X86_64) || \
 
1819
       defined(TARGET_SPARC64)) && !defined(TARGET_ABI32)
 
1820
struct target_statfs {
 
1821
        abi_long f_type;
 
1822
        abi_long f_bsize;
 
1823
        abi_long f_blocks;
 
1824
        abi_long f_bfree;
 
1825
        abi_long f_bavail;
 
1826
        abi_long f_files;
 
1827
        abi_long f_ffree;
 
1828
        target_fsid_t f_fsid;
 
1829
        abi_long f_namelen;
 
1830
        abi_long f_frsize;
 
1831
        abi_long f_spare[5];
 
1832
};
 
1833
 
 
1834
struct target_statfs64 {
 
1835
        abi_long f_type;
 
1836
        abi_long f_bsize;
 
1837
        abi_long f_blocks;
 
1838
        abi_long f_bfree;
 
1839
        abi_long f_bavail;
 
1840
        abi_long f_files;
 
1841
        abi_long f_ffree;
 
1842
        target_fsid_t f_fsid;
 
1843
        abi_long f_namelen;
 
1844
        abi_long f_frsize;
 
1845
        abi_long f_spare[5];
 
1846
};
 
1847
#elif defined(TARGET_S390X)
 
1848
struct target_statfs {
 
1849
    int32_t  f_type;
 
1850
    int32_t  f_bsize;
 
1851
    abi_long f_blocks;
 
1852
    abi_long f_bfree;
 
1853
    abi_long f_bavail;
 
1854
    abi_long f_files;
 
1855
    abi_long f_ffree;
 
1856
    kernel_fsid_t f_fsid;
 
1857
    int32_t  f_namelen;
 
1858
    int32_t  f_frsize;
 
1859
    int32_t  f_spare[5];
 
1860
};
 
1861
 
 
1862
struct target_statfs64 {
 
1863
    int32_t  f_type;
 
1864
    int32_t  f_bsize;
 
1865
    abi_long f_blocks;
 
1866
    abi_long f_bfree;
 
1867
    abi_long f_bavail;
 
1868
    abi_long f_files;
 
1869
    abi_long f_ffree;
 
1870
    kernel_fsid_t f_fsid;
 
1871
    int32_t  f_namelen;
 
1872
    int32_t  f_frsize;
 
1873
    int32_t  f_spare[5];
 
1874
};
 
1875
#else
 
1876
struct target_statfs {
 
1877
        uint32_t f_type;
 
1878
        uint32_t f_bsize;
 
1879
        uint32_t f_blocks;
 
1880
        uint32_t f_bfree;
 
1881
        uint32_t f_bavail;
 
1882
        uint32_t f_files;
 
1883
        uint32_t f_ffree;
 
1884
        target_fsid_t f_fsid;
 
1885
        uint32_t f_namelen;
 
1886
        uint32_t f_frsize;
 
1887
        uint32_t f_spare[5];
 
1888
};
 
1889
 
 
1890
struct target_statfs64 {
 
1891
        uint32_t f_type;
 
1892
        uint32_t f_bsize;
 
1893
        uint64_t f_blocks;
 
1894
        uint64_t f_bfree;
 
1895
        uint64_t f_bavail;
 
1896
        uint64_t f_files;
 
1897
        uint64_t f_ffree;
 
1898
        target_fsid_t f_fsid;
 
1899
        uint32_t f_namelen;
 
1900
        uint32_t f_frsize;
 
1901
        uint32_t f_spare[5];
 
1902
};
 
1903
#endif
 
1904
 
 
1905
 
 
1906
#define TARGET_F_DUPFD         0       /* dup */
 
1907
#define TARGET_F_GETFD         1       /* get close_on_exec */
 
1908
#define TARGET_F_SETFD         2       /* set/clear close_on_exec */
 
1909
#define TARGET_F_GETFL         3       /* get file->f_flags */
 
1910
#define TARGET_F_SETFL         4       /* set file->f_flags */
 
1911
 
 
1912
#if defined(TARGET_ALPHA)
 
1913
#define TARGET_F_GETLK         7
 
1914
#define TARGET_F_SETLK         8
 
1915
#define TARGET_F_SETLKW        9
 
1916
#define TARGET_F_SETOWN        5       /*  for sockets. */
 
1917
#define TARGET_F_GETOWN        6       /*  for sockets. */
 
1918
#elif defined(TARGET_MIPS)
 
1919
#define TARGET_F_GETLK         14
 
1920
#define TARGET_F_SETLK         6
 
1921
#define TARGET_F_SETLKW        7
 
1922
#define TARGET_F_SETOWN        24       /*  for sockets. */
 
1923
#define TARGET_F_GETOWN        25       /*  for sockets. */
 
1924
#else
 
1925
#define TARGET_F_GETLK         5
 
1926
#define TARGET_F_SETLK         6
 
1927
#define TARGET_F_SETLKW        7
 
1928
#define TARGET_F_SETOWN        8       /*  for sockets. */
 
1929
#define TARGET_F_GETOWN        9       /*  for sockets. */
 
1930
#endif
 
1931
 
 
1932
#define TARGET_F_SETSIG        10      /*  for sockets. */
 
1933
#define TARGET_F_GETSIG        11      /*  for sockets. */
 
1934
 
 
1935
#if defined(TARGET_MIPS)
 
1936
#define TARGET_F_GETLK64       33      /*  using 'struct flock64' */
 
1937
#define TARGET_F_SETLK64       34
 
1938
#define TARGET_F_SETLKW64      35
 
1939
#else
 
1940
#define TARGET_F_GETLK64       12      /*  using 'struct flock64' */
 
1941
#define TARGET_F_SETLK64       13
 
1942
#define TARGET_F_SETLKW64      14
 
1943
#endif
 
1944
 
 
1945
#define TARGET_F_LINUX_SPECIFIC_BASE 1024
 
1946
#define TARGET_F_SETLEASE (TARGET_F_LINUX_SPECIFIC_BASE + 0)
 
1947
#define TARGET_F_GETLEASE (TARGET_F_LINUX_SPECIFIC_BASE + 1)
 
1948
#define TARGET_F_DUPFD_CLOEXEC (TARGET_F_LINUX_SPECIFIC_BASE + 6)
 
1949
#define TARGET_F_NOTIFY  (TARGET_F_LINUX_SPECIFIC_BASE+2)
 
1950
 
 
1951
#if defined (TARGET_ARM)
 
1952
#define TARGET_O_ACCMODE          0003
 
1953
#define TARGET_O_RDONLY             00
 
1954
#define TARGET_O_WRONLY             01
 
1955
#define TARGET_O_RDWR               02
 
1956
#define TARGET_O_CREAT            0100 /* not fcntl */
 
1957
#define TARGET_O_EXCL             0200 /* not fcntl */
 
1958
#define TARGET_O_NOCTTY           0400 /* not fcntl */
 
1959
#define TARGET_O_TRUNC           01000 /* not fcntl */
 
1960
#define TARGET_O_APPEND          02000
 
1961
#define TARGET_O_NONBLOCK        04000
 
1962
#define TARGET_O_NDELAY        TARGET_O_NONBLOCK
 
1963
#define TARGET_O_SYNC           010000
 
1964
#define TARGET_FASYNC           020000 /* fcntl, for BSD compatibility */
 
1965
#define TARGET_O_DIRECTORY      040000 /* must be a directory */
 
1966
#define TARGET_O_NOFOLLOW      0100000 /* don't follow links */
 
1967
#define TARGET_O_DIRECT        0200000 /* direct disk access hint */
 
1968
#define TARGET_O_LARGEFILE     0400000
 
1969
#elif defined (TARGET_PPC)
 
1970
#define TARGET_O_ACCMODE          0003
 
1971
#define TARGET_O_RDONLY             00
 
1972
#define TARGET_O_WRONLY             01
 
1973
#define TARGET_O_RDWR               02
 
1974
#define TARGET_O_CREAT            0100 /* not fcntl */
 
1975
#define TARGET_O_EXCL             0200 /* not fcntl */
 
1976
#define TARGET_O_NOCTTY           0400 /* not fcntl */
 
1977
#define TARGET_O_TRUNC           01000 /* not fcntl */
 
1978
#define TARGET_O_APPEND          02000
 
1979
#define TARGET_O_NONBLOCK        04000
 
1980
#define TARGET_O_NDELAY        TARGET_O_NONBLOCK
 
1981
#define TARGET_O_SYNC           010000
 
1982
#define TARGET_FASYNC           020000 /* fcntl, for BSD compatibility */
 
1983
#define TARGET_O_DIRECTORY      040000 /* must be a directory */
 
1984
#define TARGET_O_NOFOLLOW      0100000 /* don't follow links */
 
1985
#define TARGET_O_LARGEFILE     0200000
 
1986
#define TARGET_O_DIRECT        0400000 /* direct disk access hint */
 
1987
#elif defined (TARGET_MICROBLAZE)
 
1988
#define TARGET_O_ACCMODE          0003
 
1989
#define TARGET_O_RDONLY             00
 
1990
#define TARGET_O_WRONLY             01
 
1991
#define TARGET_O_RDWR               02
 
1992
#define TARGET_O_CREAT            0100 /* not fcntl */
 
1993
#define TARGET_O_EXCL             0200 /* not fcntl */
 
1994
#define TARGET_O_NOCTTY           0400 /* not fcntl */
 
1995
#define TARGET_O_TRUNC           01000 /* not fcntl */
 
1996
#define TARGET_O_APPEND          02000
 
1997
#define TARGET_O_NONBLOCK        04000
 
1998
#define TARGET_O_NDELAY        TARGET_O_NONBLOCK
 
1999
#define TARGET_O_SYNC           010000
 
2000
#define TARGET_FASYNC           020000 /* fcntl, for BSD compatibility */
 
2001
#define TARGET_O_DIRECTORY      040000 /* must be a directory */
 
2002
#define TARGET_O_NOFOLLOW      0100000 /* don't follow links */
 
2003
#define TARGET_O_LARGEFILE     0200000
 
2004
#define TARGET_O_DIRECT        0400000 /* direct disk access hint */
 
2005
#elif defined (TARGET_SPARC)
 
2006
#define TARGET_O_RDONLY        0x0000
 
2007
#define TARGET_O_WRONLY        0x0001
 
2008
#define TARGET_O_RDWR          0x0002
 
2009
#define TARGET_O_ACCMODE       0x0003
 
2010
#define TARGET_O_APPEND        0x0008
 
2011
#define TARGET_FASYNC          0x0040  /* fcntl, for BSD compatibility */
 
2012
#define TARGET_O_CREAT         0x0200  /* not fcntl */
 
2013
#define TARGET_O_TRUNC         0x0400  /* not fcntl */
 
2014
#define TARGET_O_EXCL          0x0800  /* not fcntl */
 
2015
#define TARGET_O_SYNC          0x2000
 
2016
#define TARGET_O_NONBLOCK      0x4000
 
2017
#define TARGET_O_NDELAY        (0x0004 | TARGET_O_NONBLOCK)
 
2018
#define TARGET_O_NOCTTY        0x8000  /* not fcntl */
 
2019
#define TARGET_O_DIRECTORY     0x10000 /* must be a directory */
 
2020
#define TARGET_O_NOFOLLOW      0x20000 /* don't follow links */
 
2021
#define TARGET_O_LARGEFILE     0x40000
 
2022
#define TARGET_O_DIRECT        0x100000 /* direct disk access hint */
 
2023
#elif defined(TARGET_MIPS)
 
2024
#define TARGET_O_ACCMODE        0x0003
 
2025
#define TARGET_O_RDONLY 0x0000
 
2026
#define TARGET_O_WRONLY 0x0001
 
2027
#define TARGET_O_RDWR           0x0002
 
2028
#define TARGET_O_APPEND 0x0008
 
2029
#define TARGET_O_SYNC           0x0010
 
2030
#define TARGET_O_NONBLOCK       0x0080
 
2031
#define TARGET_O_CREAT         0x0100   /* not fcntl */
 
2032
#define TARGET_O_TRUNC          0x0200  /* not fcntl */
 
2033
#define TARGET_O_EXCL           0x0400  /* not fcntl */
 
2034
#define TARGET_O_NOCTTY 0x0800  /* not fcntl */
 
2035
#define TARGET_FASYNC           0x1000  /* fcntl, for BSD compatibility */
 
2036
#define TARGET_O_LARGEFILE      0x2000  /* allow large file opens */
 
2037
#define TARGET_O_DIRECT 0x8000  /* direct disk access hint */
 
2038
#define TARGET_O_DIRECTORY      0x10000 /* must be a directory */
 
2039
#define TARGET_O_NOFOLLOW       0x20000 /* don't follow links */
 
2040
#define TARGET_O_NOATIME        0x40000
 
2041
#define TARGET_O_NDELAY TARGET_O_NONBLOCK
 
2042
#elif defined(TARGET_ALPHA)
 
2043
#define TARGET_O_ACCMODE        0x0003
 
2044
#define TARGET_O_RDONLY 0x0000
 
2045
#define TARGET_O_WRONLY 0x0001
 
2046
#define TARGET_O_RDWR           0x0002
 
2047
#define TARGET_O_APPEND 0x0008
 
2048
#define TARGET_O_SYNC           0x4000
 
2049
#define TARGET_O_NONBLOCK       0x0004
 
2050
#define TARGET_O_CREAT         0x0200   /* not fcntl */
 
2051
#define TARGET_O_TRUNC          0x0400  /* not fcntl */
 
2052
#define TARGET_O_EXCL           0x0800  /* not fcntl */
 
2053
#define TARGET_O_NOCTTY 0x1000  /* not fcntl */
 
2054
#define TARGET_FASYNC           0x2000  /* fcntl, for BSD compatibility */
 
2055
#define TARGET_O_LARGEFILE      0x0000  /* not necessary, always 64-bit */
 
2056
#define TARGET_O_DIRECT 0x80000 /* direct disk access hint */
 
2057
#define TARGET_O_DIRECTORY      0x8000  /* must be a directory */
 
2058
#define TARGET_O_NOFOLLOW       0x10000 /* don't follow links */
 
2059
#define TARGET_O_NOATIME        0x100000
 
2060
#define TARGET_O_NDELAY TARGET_O_NONBLOCK
 
2061
#else
 
2062
#define TARGET_O_ACCMODE          0003
 
2063
#define TARGET_O_RDONLY             00
 
2064
#define TARGET_O_WRONLY             01
 
2065
#define TARGET_O_RDWR               02
 
2066
#define TARGET_O_CREAT            0100 /* not fcntl */
 
2067
#define TARGET_O_EXCL             0200 /* not fcntl */
 
2068
#define TARGET_O_NOCTTY           0400 /* not fcntl */
 
2069
#define TARGET_O_TRUNC           01000 /* not fcntl */
 
2070
#define TARGET_O_APPEND          02000
 
2071
#define TARGET_O_NONBLOCK        04000
 
2072
#define TARGET_O_NDELAY        TARGET_O_NONBLOCK
 
2073
#define TARGET_O_SYNC           010000
 
2074
#define TARGET_FASYNC           020000 /* fcntl, for BSD compatibility */
 
2075
#define TARGET_O_DIRECT         040000 /* direct disk access hint */
 
2076
#define TARGET_O_LARGEFILE     0100000
 
2077
#define TARGET_O_DIRECTORY     0200000 /* must be a directory */
 
2078
#define TARGET_O_NOFOLLOW      0400000 /* don't follow links */
 
2079
#endif
 
2080
 
 
2081
struct target_flock {
 
2082
        short l_type;
 
2083
        short l_whence;
 
2084
        abi_ulong l_start;
 
2085
        abi_ulong l_len;
 
2086
        int l_pid;
 
2087
};
 
2088
 
 
2089
struct target_flock64 {
 
2090
        short  l_type;
 
2091
        short  l_whence;
 
2092
#if defined(TARGET_PPC) || defined(TARGET_X86_64) || defined(TARGET_MIPS) || defined(TARGET_SPARC) || defined(TARGET_HPPA) || defined (TARGET_MICROBLAZE)
 
2093
        int __pad;
 
2094
#endif
 
2095
        unsigned long long l_start;
 
2096
        unsigned long long l_len;
 
2097
        int  l_pid;
 
2098
}__attribute__((packed));
 
2099
 
 
2100
#ifdef TARGET_ARM
 
2101
struct target_eabi_flock64 {
 
2102
        short  l_type;
 
2103
        short  l_whence;
 
2104
        int __pad;
 
2105
        unsigned long long l_start;
 
2106
        unsigned long long l_len;
 
2107
        int  l_pid;
 
2108
}__attribute__((packed));
 
2109
#endif
 
2110
 
 
2111
/* soundcard defines */
 
2112
/* XXX: convert them all to arch indepedent entries */
 
2113
#define TARGET_SNDCTL_COPR_HALT           TARGET_IOWR('C',  7, int);
 
2114
#define TARGET_SNDCTL_COPR_LOAD           0xcfb04301
 
2115
#define TARGET_SNDCTL_COPR_RCODE          0xc0144303
 
2116
#define TARGET_SNDCTL_COPR_RCVMSG         0x8fa44309
 
2117
#define TARGET_SNDCTL_COPR_RDATA          0xc0144302
 
2118
#define TARGET_SNDCTL_COPR_RESET          0x00004300
 
2119
#define TARGET_SNDCTL_COPR_RUN            0xc0144306
 
2120
#define TARGET_SNDCTL_COPR_SENDMSG        0xcfa44308
 
2121
#define TARGET_SNDCTL_COPR_WCODE          0x40144305
 
2122
#define TARGET_SNDCTL_COPR_WDATA          0x40144304
 
2123
#define TARGET_SNDCTL_DSP_RESET           TARGET_IO('P', 0)
 
2124
#define TARGET_SNDCTL_DSP_SYNC            TARGET_IO('P', 1)
 
2125
#define TARGET_SNDCTL_DSP_SPEED           TARGET_IOWR('P', 2, int)
 
2126
#define TARGET_SNDCTL_DSP_STEREO          TARGET_IOWR('P', 3, int)
 
2127
#define TARGET_SNDCTL_DSP_GETBLKSIZE      TARGET_IOWR('P', 4, int)
 
2128
#define TARGET_SNDCTL_DSP_SETFMT          TARGET_IOWR('P', 5, int)
 
2129
#define TARGET_SNDCTL_DSP_CHANNELS        TARGET_IOWR('P', 6, int)
 
2130
#define TARGET_SOUND_PCM_WRITE_FILTER     TARGET_IOWR('P', 7, int)
 
2131
#define TARGET_SNDCTL_DSP_POST            TARGET_IO('P', 8)
 
2132
#define TARGET_SNDCTL_DSP_SUBDIVIDE       TARGET_IOWR('P', 9, int)
 
2133
#define TARGET_SNDCTL_DSP_SETFRAGMENT     TARGET_IOWR('P',10, int)
 
2134
#define TARGET_SNDCTL_DSP_GETFMTS         TARGET_IOR('P', 11, int)
 
2135
#define TARGET_SNDCTL_DSP_GETOSPACE       TARGET_IORU('P',12)
 
2136
#define TARGET_SNDCTL_DSP_GETISPACE       TARGET_IORU('P',13)
 
2137
#define TARGET_SNDCTL_DSP_GETCAPS         TARGET_IOR('P', 15, int)
 
2138
#define TARGET_SNDCTL_DSP_GETTRIGGER      TARGET_IOR('P',16, int)
 
2139
#define TARGET_SNDCTL_DSP_GETIPTR         TARGET_IORU('P',17)
 
2140
#define TARGET_SNDCTL_DSP_GETOPTR         TARGET_IORU('P',18)
 
2141
#define TARGET_SNDCTL_DSP_MAPINBUF        0x80085013
 
2142
#define TARGET_SNDCTL_DSP_MAPOUTBUF       0x80085014
 
2143
#define TARGET_SNDCTL_DSP_NONBLOCK        0x0000500e
 
2144
#define TARGET_SNDCTL_DSP_SAMPLESIZE      0xc0045005
 
2145
#define TARGET_SNDCTL_DSP_SETDUPLEX       0x00005016
 
2146
#define TARGET_SNDCTL_DSP_SETSYNCRO       0x00005015
 
2147
#define TARGET_SNDCTL_DSP_SETTRIGGER      0x40045010
 
2148
#define TARGET_SNDCTL_FM_4OP_ENABLE       0x4004510f
 
2149
#define TARGET_SNDCTL_FM_LOAD_INSTR       0x40285107
 
2150
#define TARGET_SNDCTL_MIDI_INFO           0xc074510c
 
2151
#define TARGET_SNDCTL_MIDI_MPUCMD         0xc0216d02
 
2152
#define TARGET_SNDCTL_MIDI_MPUMODE        0xc0046d01
 
2153
#define TARGET_SNDCTL_MIDI_PRETIME        0xc0046d00
 
2154
#define TARGET_SNDCTL_PMGR_ACCESS         0xcfb85110
 
2155
#define TARGET_SNDCTL_PMGR_IFACE          0xcfb85001
 
2156
#define TARGET_SNDCTL_SEQ_CTRLRATE        0xc0045103
 
2157
#define TARGET_SNDCTL_SEQ_GETINCOUNT      0x80045105
 
2158
#define TARGET_SNDCTL_SEQ_GETOUTCOUNT     0x80045104
 
2159
#define TARGET_SNDCTL_SEQ_NRMIDIS         0x8004510b
 
2160
#define TARGET_SNDCTL_SEQ_NRSYNTHS        0x8004510a
 
2161
#define TARGET_SNDCTL_SEQ_OUTOFBAND       0x40085112
 
2162
#define TARGET_SNDCTL_SEQ_PANIC           0x00005111
 
2163
#define TARGET_SNDCTL_SEQ_PERCMODE        0x40045106
 
2164
#define TARGET_SNDCTL_SEQ_RESET           0x00005100
 
2165
#define TARGET_SNDCTL_SEQ_RESETSAMPLES    0x40045109
 
2166
#define TARGET_SNDCTL_SEQ_SYNC            0x00005101
 
2167
#define TARGET_SNDCTL_SEQ_TESTMIDI        0x40045108
 
2168
#define TARGET_SNDCTL_SEQ_THRESHOLD       0x4004510d
 
2169
#define TARGET_SNDCTL_SEQ_TRESHOLD        0x4004510d
 
2170
#define TARGET_SNDCTL_SYNTH_INFO          0xc08c5102
 
2171
#define TARGET_SNDCTL_SYNTH_MEMAVL        0xc004510e
 
2172
#define TARGET_SNDCTL_TMR_CONTINUE        0x00005404
 
2173
#define TARGET_SNDCTL_TMR_METRONOME       0x40045407
 
2174
#define TARGET_SNDCTL_TMR_SELECT          0x40045408
 
2175
#define TARGET_SNDCTL_TMR_SOURCE          0xc0045406
 
2176
#define TARGET_SNDCTL_TMR_START           0x00005402
 
2177
#define TARGET_SNDCTL_TMR_STOP            0x00005403
 
2178
#define TARGET_SNDCTL_TMR_TEMPO           0xc0045405
 
2179
#define TARGET_SNDCTL_TMR_TIMEBASE        0xc0045401
 
2180
#define TARGET_SOUND_PCM_READ_RATE        0x80045002
 
2181
#define TARGET_SOUND_PCM_READ_CHANNELS    0x80045006
 
2182
#define TARGET_SOUND_PCM_READ_BITS        0x80045005
 
2183
#define TARGET_SOUND_PCM_READ_FILTER      0x80045007
 
2184
#define TARGET_SOUND_MIXER_INFO           TARGET_IOR ('M', 101, mixer_info)
 
2185
#define TARGET_SOUND_MIXER_ACCESS         0xc0804d66
 
2186
#define TARGET_SOUND_MIXER_PRIVATE1       TARGET_IOWR('M', 111, int)
 
2187
#define TARGET_SOUND_MIXER_PRIVATE2       TARGET_IOWR('M', 112, int)
 
2188
#define TARGET_SOUND_MIXER_PRIVATE3       TARGET_IOWR('M', 113, int)
 
2189
#define TARGET_SOUND_MIXER_PRIVATE4       TARGET_IOWR('M', 114, int)
 
2190
#define TARGET_SOUND_MIXER_PRIVATE5       TARGET_IOWR('M', 115, int)
 
2191
 
 
2192
#define TARGET_MIXER_READ(dev)  TARGET_IOR('M', dev, int)
 
2193
 
 
2194
#define TARGET_SOUND_MIXER_READ_VOLUME          TARGET_MIXER_READ(SOUND_MIXER_VOLUME)
 
2195
#define TARGET_SOUND_MIXER_READ_BASS            TARGET_MIXER_READ(SOUND_MIXER_BASS)
 
2196
#define TARGET_SOUND_MIXER_READ_TREBLE          TARGET_MIXER_READ(SOUND_MIXER_TREBLE)
 
2197
#define TARGET_SOUND_MIXER_READ_SYNTH           TARGET_MIXER_READ(SOUND_MIXER_SYNTH)
 
2198
#define TARGET_SOUND_MIXER_READ_PCM             TARGET_MIXER_READ(SOUND_MIXER_PCM)
 
2199
#define TARGET_SOUND_MIXER_READ_SPEAKER         TARGET_MIXER_READ(SOUND_MIXER_SPEAKER)
 
2200
#define TARGET_SOUND_MIXER_READ_LINE            TARGET_MIXER_READ(SOUND_MIXER_LINE)
 
2201
#define TARGET_SOUND_MIXER_READ_MIC             TARGET_MIXER_READ(SOUND_MIXER_MIC)
 
2202
#define TARGET_SOUND_MIXER_READ_CD              TARGET_MIXER_READ(SOUND_MIXER_CD)
 
2203
#define TARGET_SOUND_MIXER_READ_IMIX            TARGET_MIXER_READ(SOUND_MIXER_IMIX)
 
2204
#define TARGET_SOUND_MIXER_READ_ALTPCM          TARGET_MIXER_READ(SOUND_MIXER_ALTPCM)
 
2205
#define TARGET_SOUND_MIXER_READ_RECLEV          TARGET_MIXER_READ(SOUND_MIXER_RECLEV)
 
2206
#define TARGET_SOUND_MIXER_READ_IGAIN           TARGET_MIXER_READ(SOUND_MIXER_IGAIN)
 
2207
#define TARGET_SOUND_MIXER_READ_OGAIN           TARGET_MIXER_READ(SOUND_MIXER_OGAIN)
 
2208
#define TARGET_SOUND_MIXER_READ_LINE1           TARGET_MIXER_READ(SOUND_MIXER_LINE1)
 
2209
#define TARGET_SOUND_MIXER_READ_LINE2           TARGET_MIXER_READ(SOUND_MIXER_LINE2)
 
2210
#define TARGET_SOUND_MIXER_READ_LINE3           TARGET_MIXER_READ(SOUND_MIXER_LINE3)
 
2211
 
 
2212
/* Obsolete macros */
 
2213
#define TARGET_SOUND_MIXER_READ_MUTE            TARGET_MIXER_READ(SOUND_MIXER_MUTE)
 
2214
#define TARGET_SOUND_MIXER_READ_ENHANCE         TARGET_MIXER_READ(SOUND_MIXER_ENHANCE)
 
2215
#define TARGET_SOUND_MIXER_READ_LOUD            TARGET_MIXER_READ(SOUND_MIXER_LOUD)
 
2216
 
 
2217
#define TARGET_SOUND_MIXER_READ_RECSRC          TARGET_MIXER_READ(SOUND_MIXER_RECSRC)
 
2218
#define TARGET_SOUND_MIXER_READ_DEVMASK         TARGET_MIXER_READ(SOUND_MIXER_DEVMASK)
 
2219
#define TARGET_SOUND_MIXER_READ_RECMASK         TARGET_MIXER_READ(SOUND_MIXER_RECMASK)
 
2220
#define TARGET_SOUND_MIXER_READ_STEREODEVS      TARGET_MIXER_READ(SOUND_MIXER_STEREODEVS)
 
2221
#define TARGET_SOUND_MIXER_READ_CAPS            TARGET_MIXER_READ(SOUND_MIXER_CAPS)
 
2222
 
 
2223
#define TARGET_MIXER_WRITE(dev)         TARGET_IOWR('M', dev, int)
 
2224
 
 
2225
#define TARGET_SOUND_MIXER_WRITE_VOLUME TARGET_MIXER_WRITE(SOUND_MIXER_VOLUME)
 
2226
#define TARGET_SOUND_MIXER_WRITE_BASS           TARGET_MIXER_WRITE(SOUND_MIXER_BASS)
 
2227
#define TARGET_SOUND_MIXER_WRITE_TREBLE TARGET_MIXER_WRITE(SOUND_MIXER_TREBLE)
 
2228
#define TARGET_SOUND_MIXER_WRITE_SYNTH          TARGET_MIXER_WRITE(SOUND_MIXER_SYNTH)
 
2229
#define TARGET_SOUND_MIXER_WRITE_PCM            TARGET_MIXER_WRITE(SOUND_MIXER_PCM)
 
2230
#define TARGET_SOUND_MIXER_WRITE_SPEAKER        TARGET_MIXER_WRITE(SOUND_MIXER_SPEAKER)
 
2231
#define TARGET_SOUND_MIXER_WRITE_LINE           TARGET_MIXER_WRITE(SOUND_MIXER_LINE)
 
2232
#define TARGET_SOUND_MIXER_WRITE_MIC            TARGET_MIXER_WRITE(SOUND_MIXER_MIC)
 
2233
#define TARGET_SOUND_MIXER_WRITE_CD             TARGET_MIXER_WRITE(SOUND_MIXER_CD)
 
2234
#define TARGET_SOUND_MIXER_WRITE_IMIX           TARGET_MIXER_WRITE(SOUND_MIXER_IMIX)
 
2235
#define TARGET_SOUND_MIXER_WRITE_ALTPCM TARGET_MIXER_WRITE(SOUND_MIXER_ALTPCM)
 
2236
#define TARGET_SOUND_MIXER_WRITE_RECLEV TARGET_MIXER_WRITE(SOUND_MIXER_RECLEV)
 
2237
#define TARGET_SOUND_MIXER_WRITE_IGAIN          TARGET_MIXER_WRITE(SOUND_MIXER_IGAIN)
 
2238
#define TARGET_SOUND_MIXER_WRITE_OGAIN          TARGET_MIXER_WRITE(SOUND_MIXER_OGAIN)
 
2239
#define TARGET_SOUND_MIXER_WRITE_LINE1          TARGET_MIXER_WRITE(SOUND_MIXER_LINE1)
 
2240
#define TARGET_SOUND_MIXER_WRITE_LINE2          TARGET_MIXER_WRITE(SOUND_MIXER_LINE2)
 
2241
#define TARGET_SOUND_MIXER_WRITE_LINE3          TARGET_MIXER_WRITE(SOUND_MIXER_LINE3)
 
2242
 
 
2243
/* Obsolete macros */
 
2244
#define TARGET_SOUND_MIXER_WRITE_MUTE           TARGET_MIXER_WRITE(SOUND_MIXER_MUTE)
 
2245
#define TARGET_SOUND_MIXER_WRITE_ENHANCE        TARGET_MIXER_WRITE(SOUND_MIXER_ENHANCE)
 
2246
#define TARGET_SOUND_MIXER_WRITE_LOUD           TARGET_MIXER_WRITE(SOUND_MIXER_LOUD)
 
2247
 
 
2248
#define TARGET_SOUND_MIXER_WRITE_RECSRC TARGET_MIXER_WRITE(SOUND_MIXER_RECSRC)
 
2249
 
 
2250
/* vfat ioctls */
 
2251
#define TARGET_VFAT_IOCTL_READDIR_BOTH    TARGET_IORU('r', 1)
 
2252
#define TARGET_VFAT_IOCTL_READDIR_SHORT   TARGET_IORU('r', 2)
 
2253
 
 
2254
#define TARGET_MTIOCTOP        TARGET_IOW('m', 1, struct mtop)
 
2255
#define TARGET_MTIOCGET        TARGET_IOR('m', 2, struct mtget)
 
2256
#define TARGET_MTIOCPOS        TARGET_IOR('m', 3, struct mtpos)
 
2257
 
 
2258
struct target_sysinfo {
 
2259
    abi_long uptime;                /* Seconds since boot */
 
2260
    abi_ulong loads[3];             /* 1, 5, and 15 minute load averages */
 
2261
    abi_ulong totalram;             /* Total usable main memory size */
 
2262
    abi_ulong freeram;              /* Available memory size */
 
2263
    abi_ulong sharedram;            /* Amount of shared memory */
 
2264
    abi_ulong bufferram;            /* Memory used by buffers */
 
2265
    abi_ulong totalswap;            /* Total swap space size */
 
2266
    abi_ulong freeswap;             /* swap space still available */
 
2267
    unsigned short procs;           /* Number of current processes */
 
2268
    unsigned short pad;             /* explicit padding for m68k */
 
2269
    abi_ulong totalhigh;            /* Total high memory size */
 
2270
    abi_ulong freehigh;             /* Available high memory size */
 
2271
    unsigned int mem_unit;          /* Memory unit size in bytes */
 
2272
    char _f[20-2*sizeof(abi_long)-sizeof(int)]; /* Padding: libc5 uses this.. */
 
2273
};
 
2274
 
 
2275
struct linux_dirent {
 
2276
    long            d_ino;
 
2277
    unsigned long   d_off;
 
2278
    unsigned short  d_reclen;
 
2279
    char            d_name[256]; /* We must not include limits.h! */
 
2280
};
 
2281
 
 
2282
struct linux_dirent64 {
 
2283
    uint64_t        d_ino;
 
2284
    int64_t         d_off;
 
2285
    unsigned short  d_reclen;
 
2286
    unsigned char   d_type;
 
2287
    char            d_name[256];
 
2288
};
 
2289
 
 
2290
struct target_mq_attr {
 
2291
    abi_long mq_flags;
 
2292
    abi_long mq_maxmsg;
 
2293
    abi_long mq_msgsize;
 
2294
    abi_long mq_curmsgs;
 
2295
};
 
2296
 
 
2297
#include "socket.h"
 
2298
 
 
2299
#include "errno_defs.h"
 
2300
 
 
2301
#define FUTEX_WAIT              0
 
2302
#define FUTEX_WAKE              1
 
2303
#define FUTEX_FD                2
 
2304
#define FUTEX_REQUEUE           3
 
2305
#define FUTEX_CMP_REQUEUE       4
 
2306
#define FUTEX_WAKE_OP           5
 
2307
#define FUTEX_LOCK_PI           6
 
2308
#define FUTEX_UNLOCK_PI         7
 
2309
#define FUTEX_TRYLOCK_PI        8
 
2310
#define FUTEX_WAIT_BITSET       9
 
2311
#define FUTEX_WAKE_BITSET       10
 
2312
 
 
2313
#define FUTEX_PRIVATE_FLAG      128
 
2314
#define FUTEX_CLOCK_REALTIME    256
 
2315
#define FUTEX_CMD_MASK          ~(FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME)
 
2316
 
 
2317
#ifdef CONFIG_EPOLL
 
2318
typedef union target_epoll_data {
 
2319
    abi_ulong ptr;
 
2320
    abi_ulong fd;
 
2321
    uint32_t u32;
 
2322
    uint64_t u64;
 
2323
} target_epoll_data_t;
 
2324
 
 
2325
struct target_epoll_event {
 
2326
    uint32_t events;
 
2327
    target_epoll_data_t data;
 
2328
};
 
2329
#endif
 
2330
struct target_rlimit64 {
 
2331
    uint64_t rlim_cur;
 
2332
    uint64_t rlim_max;
 
2333
};