/* common syscall defines for all architectures */

/* Note: although the syscall numbers change between architectures,
   most of them stay the same, so we handle it by putting ifdefs if
   necessary */

#ifndef SYSCALL_DEFS_H
#define SYSCALL_DEFS_H

#include "syscall_nr.h"


/* socket operations for socketcall() */
#define TARGET_SYS_SOCKET       1         /* socket()              */
#define TARGET_SYS_BIND         2         /* bind()                */
#define TARGET_SYS_CONNECT      3         /* connect()             */
#define TARGET_SYS_LISTEN       4         /* listen()              */
#define TARGET_SYS_ACCEPT       5         /* accept()              */
#define TARGET_SYS_GETSOCKNAME  6         /* getsockname()         */
#define TARGET_SYS_GETPEERNAME  7         /* getpeername()         */
#define TARGET_SYS_SOCKETPAIR   8         /* socketpair()          */
#define TARGET_SYS_SEND         9         /* send()                */
#define TARGET_SYS_RECV         10        /* recv()                */
#define TARGET_SYS_SENDTO       11        /* sendto()              */
#define TARGET_SYS_RECVFROM     12        /* recvfrom()            */
#define TARGET_SYS_SHUTDOWN     13        /* shutdown()            */
#define TARGET_SYS_SETSOCKOPT   14        /* setsockopt()          */
#define TARGET_SYS_GETSOCKOPT   15        /* getsockopt()          */
#define TARGET_SYS_SENDMSG      16        /* sendmsg()             */
#define TARGET_SYS_RECVMSG      17        /* recvmsg()             */
#define TARGET_SYS_ACCEPT4      18        /* accept4()             */
#define TARGET_SYS_RECVMMSG     19        /* recvmmsg()            */
#define TARGET_SYS_SENDMMSG     20        /* sendmmsg()            */

#define IPCOP_CALL(VERSION, OP) ((VERSION) << 16 | (OP))
#define IPCOP_semop             1
#define IPCOP_semget            2
#define IPCOP_semctl            3
#define IPCOP_semtimedop        4
#define IPCOP_msgsnd            11
#define IPCOP_msgrcv            12
#define IPCOP_msgget            13
#define IPCOP_msgctl            14
#define IPCOP_shmat             21
#define IPCOP_shmdt             22
#define IPCOP_shmget            23
#define IPCOP_shmctl            24

#define TARGET_SEMOPM     500

/*
 * The following is for compatibility across the various Linux
 * platforms.  The i386 ioctl numbering scheme doesn't really enforce
 * a type field.  De facto, however, the top 8 bits of the lower 16
 * bits are indeed used as a type field, so we might just as well make
 * this explicit here.  Please be sure to use the decoding macros
 * below from now on.
 */
#define TARGET_IOC_NRBITS       8
#define TARGET_IOC_TYPEBITS     8

#if (defined(TARGET_I386) && defined(TARGET_ABI32))                     \
    || (defined(TARGET_ARM) && defined(TARGET_ABI32))                   \
    || (defined(TARGET_SPARC) && defined(TARGET_ABI32))                 \
    || defined(TARGET_M68K) || defined(TARGET_SH4) || defined(TARGET_CRIS)
/* 16 bit uid wrappers emulation */
#define USE_UID16
#define target_id uint16_t
#else
#define target_id abi_uint
#endif

#if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SH4)  \
    || defined(TARGET_M68K) || defined(TARGET_CRIS)                     \
    || defined(TARGET_S390X) || defined(TARGET_OPENRISC)                \
    || defined(TARGET_RISCV)                                            \
    || defined(TARGET_XTENSA) || defined(TARGET_LOONGARCH64)

#define TARGET_IOC_SIZEBITS     14
#define TARGET_IOC_DIRBITS      2

#define TARGET_IOC_NONE   0U
#define TARGET_IOC_WRITE  1U
#define TARGET_IOC_READ   2U

#elif defined(TARGET_PPC) || defined(TARGET_ALPHA) ||           \
    defined(TARGET_SPARC) || defined(TARGET_MICROBLAZE) ||      \
    defined(TARGET_MIPS)

#define TARGET_IOC_SIZEBITS     13
#define TARGET_IOC_DIRBITS      3

#define TARGET_IOC_NONE   1U
#define TARGET_IOC_READ   2U
#define TARGET_IOC_WRITE  4U

#elif defined(TARGET_HPPA)

#define TARGET_IOC_SIZEBITS  14
#define TARGET_IOC_DIRBITS    2

#define TARGET_IOC_NONE   0U
#define TARGET_IOC_WRITE  2U
#define TARGET_IOC_READ   1U

#elif defined(TARGET_HEXAGON)

#define TARGET_IOC_SIZEBITS     14

#define TARGET_IOC_NONE   0U
#define TARGET_IOC_WRITE  1U
#define TARGET_IOC_READ          2U

#else
#error unsupported CPU
#endif

#define TARGET_IOC_NRMASK       ((1 << TARGET_IOC_NRBITS)-1)
#define TARGET_IOC_TYPEMASK     ((1 << TARGET_IOC_TYPEBITS)-1)
#define TARGET_IOC_SIZEMASK     ((1 << TARGET_IOC_SIZEBITS)-1)
#define TARGET_IOC_DIRMASK      ((1 << TARGET_IOC_DIRBITS)-1)

#define TARGET_IOC_NRSHIFT      0
#define TARGET_IOC_TYPESHIFT    (TARGET_IOC_NRSHIFT+TARGET_IOC_NRBITS)
#define TARGET_IOC_SIZESHIFT    (TARGET_IOC_TYPESHIFT+TARGET_IOC_TYPEBITS)
#define TARGET_IOC_DIRSHIFT     (TARGET_IOC_SIZESHIFT+TARGET_IOC_SIZEBITS)

#define TARGET_IOC(dir,type,nr,size)            \
    (((dir)  << TARGET_IOC_DIRSHIFT) |          \
     ((type) << TARGET_IOC_TYPESHIFT) |         \
     ((nr)   << TARGET_IOC_NRSHIFT) |           \
     ((size) << TARGET_IOC_SIZESHIFT))

/* used to create numbers */
#define TARGET_IO(type,nr)              TARGET_IOC(TARGET_IOC_NONE,(type),(nr),0)
#define TARGET_IOR(type,nr,size)        TARGET_IOC(TARGET_IOC_READ,(type),(nr),sizeof(size))
#define TARGET_IOW(type,nr,size)        TARGET_IOC(TARGET_IOC_WRITE,(type),(nr),sizeof(size))
#define TARGET_IOWR(type,nr,size)       TARGET_IOC(TARGET_IOC_READ|TARGET_IOC_WRITE,(type),(nr),sizeof(size))

/* the size is automatically computed for these defines */
#define TARGET_IORU(type,nr)    TARGET_IOC(TARGET_IOC_READ,(type),(nr),TARGET_IOC_SIZEMASK)
#define TARGET_IOWU(type,nr)    TARGET_IOC(TARGET_IOC_WRITE,(type),(nr),TARGET_IOC_SIZEMASK)
#define TARGET_IOWRU(type,nr)   TARGET_IOC(TARGET_IOC_READ|TARGET_IOC_WRITE,(type),(nr),TARGET_IOC_SIZEMASK)

struct target_sockaddr {
    abi_ushort sa_family;
    uint8_t sa_data[14];
};

struct target_sockaddr_ll {
    abi_ushort sll_family;   /* Always AF_PACKET */
    abi_ushort sll_protocol; /* Physical layer protocol */
    abi_int    sll_ifindex;  /* Interface number */
    abi_ushort sll_hatype;   /* ARP hardware type */
    uint8_t    sll_pkttype;  /* Packet type */
    uint8_t    sll_halen;    /* Length of address */
    uint8_t    sll_addr[8];  /* Physical layer address */
};

struct target_sockaddr_un {
    abi_ushort su_family;
    uint8_t sun_path[108];
};

struct target_sockaddr_nl {
    abi_ushort nl_family;   /* AF_NETLINK */
    abi_ushort __pad;
    abi_uint nl_pid;
    abi_uint nl_groups;
};

struct target_in_addr {
    abi_uint s_addr; /* big endian */
};

struct target_sockaddr_in {
    abi_ushort sin_family;
    abi_short sin_port; /* big endian */
    struct target_in_addr sin_addr;
    uint8_t __pad[sizeof(struct target_sockaddr) -
                  sizeof(abi_ushort) - sizeof(abi_short) -
                  sizeof(struct target_in_addr)];
};

struct target_sockaddr_in6 {
    abi_ushort sin6_family;
    abi_ushort sin6_port; /* big endian */
    abi_uint sin6_flowinfo; /* big endian */
    struct in6_addr sin6_addr; /* IPv6 address, big endian */
    abi_uint sin6_scope_id;
};

struct target_sock_filter {
    abi_ushort code;
    uint8_t jt;
    uint8_t jf;
    abi_uint k;
};

struct target_sock_fprog {
    abi_ushort len;
    abi_ulong filter;
};

struct target_ip_mreq {
    struct target_in_addr imr_multiaddr;
    struct target_in_addr imr_address;
};

struct target_ip_mreqn {
    struct target_in_addr imr_multiaddr;
    struct target_in_addr imr_address;
    abi_long imr_ifindex;
};

struct target_ip_mreq_source {
    /* big endian */
    abi_uint imr_multiaddr;
    abi_uint imr_interface;
    abi_uint imr_sourceaddr;
};

struct target_linger {
    abi_int l_onoff;        /* Linger active                */
    abi_int l_linger;       /* How long to linger for       */
};

#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
struct target_timeval {
    abi_long tv_sec;
    abi_int tv_usec;
};
#define target__kernel_sock_timeval target_timeval
#else
struct target_timeval {
    abi_long tv_sec;
    abi_long tv_usec;
};

struct target__kernel_sock_timeval {
    abi_llong tv_sec;
    abi_llong tv_usec;
};
#endif

struct target_timespec {
    abi_long tv_sec;
    abi_long tv_nsec;
};

struct target__kernel_timespec {
    abi_llong tv_sec;
    abi_llong tv_nsec;
};

struct target_timezone {
    abi_int tz_minuteswest;
    abi_int tz_dsttime;
};

struct target_itimerval {
    struct target_timeval it_interval;
    struct target_timeval it_value;
};

struct target_itimerspec {
    struct target_timespec it_interval;
    struct target_timespec it_value;
};

struct target__kernel_itimerspec {
    struct target__kernel_timespec it_interval;
    struct target__kernel_timespec it_value;
};

struct target_timex {
    abi_uint modes;              /* Mode selector */
    abi_long offset;             /* Time offset */
    abi_long freq;               /* Frequency offset */
    abi_long maxerror;           /* Maximum error (microseconds) */
    abi_long esterror;           /* Estimated error (microseconds) */
    abi_int status;              /* Clock command/status */
    abi_long constant;           /* PLL (phase-locked loop) time constant */
    abi_long precision;          /* Clock precision (microseconds, ro) */
    abi_long tolerance;          /* Clock freq. tolerance (ppm, ro) */
    struct target_timeval time;  /* Current time */
    abi_long tick;               /* Microseconds between clock ticks */
    abi_long ppsfreq;            /* PPS (pulse per second) frequency */
    abi_long jitter;             /* PPS jitter (ro); nanoseconds */
    abi_int shift;               /* PPS interval duration (seconds) */
    abi_long stabil;             /* PPS stability */
    abi_long jitcnt;             /* PPS jitter limit exceeded (ro) */
    abi_long calcnt;             /* PPS calibration intervals */
    abi_long errcnt;             /* PPS calibration errors */
    abi_long stbcnt;             /* PPS stability limit exceeded */
    abi_int tai;                 /* TAI offset */

    /* Further padding bytes to allow for future expansion */
    abi_int:32; abi_int:32; abi_int:32; abi_int:32;
    abi_int:32; abi_int:32; abi_int:32; abi_int:32;
    abi_int:32; abi_int:32; abi_int:32;
};

struct target__kernel_timex {
    abi_uint modes;               /* Mode selector */
    abi_int: 32;                  /* pad */
    abi_llong offset;             /* Time offset */
    abi_llong freq;               /* Frequency offset */
    abi_llong maxerror;           /* Maximum error (microseconds) */
    abi_llong esterror;           /* Estimated error (microseconds) */
    abi_int status;               /* Clock command/status */
    abi_int: 32;                  /* pad */
    abi_llong constant;           /* PLL (phase-locked loop) time constant */
    abi_llong precision;          /* Clock precision (microseconds, ro) */
    abi_llong tolerance;          /* Clock freq. tolerance (ppm, ro) */
    struct target__kernel_sock_timeval time;  /* Current time */
    abi_llong tick;               /* Microseconds between clock ticks */
    abi_llong ppsfreq;            /* PPS (pulse per second) frequency */
    abi_llong jitter;             /* PPS jitter (ro); nanoseconds */
    abi_int shift;                /* PPS interval duration (seconds) */
    abi_int: 32;                  /* pad */
    abi_llong stabil;             /* PPS stability */
    abi_llong jitcnt;             /* PPS jitter limit exceeded (ro) */
    abi_llong calcnt;             /* PPS calibration intervals */
    abi_llong errcnt;             /* PPS calibration errors */
    abi_llong stbcnt;             /* PPS stability limit exceeded */
    abi_int tai;                  /* TAI offset */

    /* Further padding bytes to allow for future expansion */
    abi_int:32; abi_int:32; abi_int:32; abi_int:32;
    abi_int:32; abi_int:32; abi_int:32; abi_int:32;
    abi_int:32; abi_int:32; abi_int:32;
};

typedef abi_long target_clock_t;

#define TARGET_HZ 100

struct target_tms {
    target_clock_t tms_utime;
    target_clock_t tms_stime;
    target_clock_t tms_cutime;
    target_clock_t tms_cstime;
};

struct target_utimbuf {
    abi_long actime;
    abi_long modtime;
};

struct target_sel_arg_struct {
    abi_long n;
    abi_long inp, outp, exp;
    abi_long tvp;
};

struct target_iovec {
    abi_long iov_base;   /* Starting address */
    abi_long iov_len;   /* Number of bytes */
};

struct target_msghdr {
    abi_long     msg_name;       /* Socket name                 */
    abi_int      msg_namelen;    /* Length of name              */
    abi_long     msg_iov;        /* Data blocks                 */
    abi_long     msg_iovlen;     /* Number of blocks            */
    abi_long     msg_control;    /* Per protocol magic (eg BSD file descriptor passing) */
    abi_long     msg_controllen; /* Length of cmsg list */
    abi_uint     msg_flags;
};

struct target_cmsghdr {
    abi_long     cmsg_len;
    abi_int      cmsg_level;
    abi_int      cmsg_type;
};

#define TARGET_CMSG_DATA(cmsg) ((unsigned char *) ((struct target_cmsghdr *) (cmsg) + 1))
#define TARGET_CMSG_NXTHDR(mhdr, cmsg, cmsg_start)      \
    __target_cmsg_nxthdr(mhdr, cmsg, cmsg_start)
#define TARGET_CMSG_ALIGN(len) (((len) + sizeof (abi_long) - 1)         \
                                & (size_t) ~(sizeof (abi_long) - 1))
#define TARGET_CMSG_SPACE(len) (sizeof(struct target_cmsghdr) + \
                                TARGET_CMSG_ALIGN(len))
#define TARGET_CMSG_LEN(len) (sizeof(struct target_cmsghdr) + (len))

static __inline__ struct target_cmsghdr *
__target_cmsg_nxthdr(struct target_msghdr *__mhdr,
                     struct target_cmsghdr *__cmsg,
                     struct target_cmsghdr *__cmsg_start)
{
    struct target_cmsghdr *__ptr;

    __ptr = (struct target_cmsghdr *)((unsigned char *) __cmsg
                                      + TARGET_CMSG_ALIGN (tswapal(__cmsg->cmsg_len)));
    if ((unsigned long)((char *)(__ptr+1) - (char *)__cmsg_start)
        > tswapal(__mhdr->msg_controllen)) {
        /* No more entries.  */
        return (struct target_cmsghdr *)0;
    }
    return __ptr;
}

struct target_mmsghdr {
    struct target_msghdr msg_hdr;              /* Message header */
    abi_uint             msg_len;              /* Number of bytes transmitted */
};

struct  target_rusage {
    struct target_timeval ru_utime;        /* user time used */
    struct target_timeval ru_stime;        /* system time used */
    abi_long    ru_maxrss;                 /* maximum resident set size */
    abi_long    ru_ixrss;                  /* integral shared memory size */
    abi_long    ru_idrss;                  /* integral unshared data size */
    abi_long    ru_isrss;                  /* integral unshared stack size */
    abi_long    ru_minflt;                 /* page reclaims */
    abi_long    ru_majflt;                 /* page faults */
    abi_long    ru_nswap;                  /* swaps */
    abi_long    ru_inblock;                /* block input operations */
    abi_long    ru_oublock;                /* block output operations */
    abi_long    ru_msgsnd;                 /* messages sent */
    abi_long    ru_msgrcv;                 /* messages received */
    abi_long    ru_nsignals;               /* signals received */
    abi_long    ru_nvcsw;                  /* voluntary context switches */
    abi_long    ru_nivcsw;                 /* involuntary " */
};

typedef struct {
    abi_int val[2];
} kernel_fsid_t;

struct target_dirent {
    abi_long        d_ino;
    abi_long        d_off;
    abi_ushort      d_reclen;
    char            d_name[];
};

struct target_dirent64 {
    abi_ullong      d_ino;
    abi_llong       d_off;
    abi_ushort      d_reclen;
    unsigned char   d_type;
    char            d_name[];
};


/* mostly generic signal stuff */
#define TARGET_SIG_DFL  ((abi_long)0)   /* default signal handling */
#define TARGET_SIG_IGN  ((abi_long)1)   /* ignore signal */
#define TARGET_SIG_ERR  ((abi_long)-1)  /* error return from signal */

#ifdef TARGET_MIPS
#define TARGET_NSIG        128
#else
#define TARGET_NSIG        64
#endif
#define TARGET_NSIG_BPW    TARGET_ABI_BITS
#define TARGET_NSIG_WORDS  (TARGET_NSIG / TARGET_NSIG_BPW)

typedef struct {
    abi_ulong sig[TARGET_NSIG_WORDS];
} target_sigset_t;

#ifdef BSWAP_NEEDED
static inline void tswap_sigset(target_sigset_t *d, const target_sigset_t *s)
{
    int i;
    for(i = 0;i < TARGET_NSIG_WORDS; i++)
        d->sig[i] = tswapal(s->sig[i]);
}
#else
static inline void tswap_sigset(target_sigset_t *d, const target_sigset_t *s)
{
    *d = *s;
}
#endif

static inline void target_siginitset(target_sigset_t *d, abi_ulong set)
{
    int i;
    d->sig[0] = set;
    for(i = 1;i < TARGET_NSIG_WORDS; i++)
        d->sig[i] = 0;
}

void host_to_target_sigset(target_sigset_t *d, const sigset_t *s);
void target_to_host_sigset(sigset_t *d, const target_sigset_t *s);
void host_to_target_old_sigset(abi_ulong *old_sigset,
                               const sigset_t *sigset);
void target_to_host_old_sigset(sigset_t *sigset,
                               const abi_ulong *old_sigset);
struct target_sigaction;
int do_sigaction(int sig, const struct target_sigaction *act,
                 struct target_sigaction *oact, abi_ulong ka_restorer);

#include "target_signal.h"

#ifdef TARGET_SA_RESTORER
#define TARGET_ARCH_HAS_SA_RESTORER 1
#endif

#if defined(TARGET_ALPHA)
typedef abi_int target_old_sa_flags;
#else
typedef abi_ulong target_old_sa_flags;
#endif

#if defined(TARGET_MIPS)
struct target_sigaction {
    abi_uint        sa_flags;
#if defined(TARGET_ABI_MIPSN32)
    abi_uint        _sa_handler;
#else
    abi_ulong       _sa_handler;
#endif
    target_sigset_t sa_mask;
#ifdef TARGET_ARCH_HAS_SA_RESTORER
    /* ??? This is always present, but ignored unless O32.  */
    abi_ulong sa_restorer;
#endif
};
#else
struct target_old_sigaction {
    abi_ulong _sa_handler;
    abi_ulong sa_mask;
    target_old_sa_flags sa_flags;
#ifdef TARGET_ARCH_HAS_SA_RESTORER
    abi_ulong sa_restorer;
#endif
};

struct target_sigaction {
    abi_ulong _sa_handler;
    abi_ulong sa_flags;
#ifdef TARGET_ARCH_HAS_SA_RESTORER
    abi_ulong sa_restorer;
#endif
    target_sigset_t sa_mask;
#ifdef TARGET_ARCH_HAS_KA_RESTORER
    abi_ulong ka_restorer;
#endif
};
#endif

typedef union target_sigval {
    abi_int sival_int;
    abi_ulong sival_ptr;
} target_sigval_t;

#define TARGET_SI_MAX_SIZE      128

#if TARGET_ABI_BITS == 32
#define TARGET_SI_PREAMBLE_SIZE (3 * sizeof(int))
#else
#define TARGET_SI_PREAMBLE_SIZE (4 * sizeof(int))
#endif

#define TARGET_SI_PAD_SIZE ((TARGET_SI_MAX_SIZE - TARGET_SI_PREAMBLE_SIZE) / sizeof(int))

/* Within QEMU the top 16 bits of si_code indicate which of the parts of
 * the union in target_siginfo is valid. This only applies between
 * host_to_target_siginfo_noswap() and tswap_siginfo(); it does not
 * appear either within host siginfo_t or in target_siginfo structures
 * which we get from the guest userspace program. (The Linux kernel
 * does a similar thing with using the top bits for its own internal
 * purposes but not letting them be visible to userspace.)
 */
#define QEMU_SI_KILL 0
#define QEMU_SI_TIMER 1
#define QEMU_SI_POLL 2
#define QEMU_SI_FAULT 3
#define QEMU_SI_CHLD 4
#define QEMU_SI_RT 5

typedef struct target_siginfo {
#ifdef TARGET_MIPS
    abi_int si_signo;
    abi_int si_code;
    abi_int si_errno;
#else
    abi_int si_signo;
    abi_int si_errno;
    abi_int si_code;
#endif

    union {
        abi_int _pad[TARGET_SI_PAD_SIZE];

        /* kill() */
        struct {
            pid_t _pid;             /* sender's pid */
            uid_t _uid;             /* sender's uid */
        } _kill;

        /* POSIX.1b timers */
        struct {
            abi_uint _timer1;
            abi_uint _timer2;
        } _timer;

        /* POSIX.1b signals */
        struct {
            pid_t _pid;             /* sender's pid */
            uid_t _uid;             /* sender's uid */
            target_sigval_t _sigval;
        } _rt;

        /* SIGCHLD */
        struct {
            pid_t _pid;             /* which child */
            uid_t _uid;             /* sender's uid */
            abi_int _status;        /* exit code */
            target_clock_t _utime;
            target_clock_t _stime;
        } _sigchld;

        /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
        struct {
            abi_ulong _addr; /* faulting insn/memory ref. */
        } _sigfault;

        /* SIGPOLL */
        struct {
            abi_int _band;   /* POLL_IN, POLL_OUT, POLL_MSG */
            abi_int _fd;
        } _sigpoll;
    } _sifields;
} target_siginfo_t;

/*
 * si_code values
 * Digital reserves positive values for kernel-generated signals.
 */
#define TARGET_SI_USER          0       /* sent by kill, sigsend, raise */
#define TARGET_SI_KERNEL        0x80    /* sent by the kernel from somewhere */
#define TARGET_SI_QUEUE -1              /* sent by sigqueue */
#define TARGET_SI_TIMER -2              /* sent by timer expiration */
#define TARGET_SI_MESGQ -3              /* sent by real time mesq state change */
#define TARGET_SI_ASYNCIO       -4      /* sent by AIO completion */
#define TARGET_SI_SIGIO -5              /* sent by queued SIGIO */

/*
 * SIGILL si_codes
 */
#define TARGET_ILL_ILLOPC       (1)     /* illegal opcode */
#define TARGET_ILL_ILLOPN       (2)     /* illegal operand */
#define TARGET_ILL_ILLADR       (3)     /* illegal addressing mode */
#define TARGET_ILL_ILLTRP       (4)     /* illegal trap */
#define TARGET_ILL_PRVOPC       (5)     /* privileged opcode */
#define TARGET_ILL_PRVREG       (6)     /* privileged register */
#define TARGET_ILL_COPROC       (7)     /* coprocessor error */
#define TARGET_ILL_BADSTK       (8)     /* internal stack error */

/*
 * SIGFPE si_codes
 */
#define TARGET_FPE_INTDIV      (1)  /* integer divide by zero */
#define TARGET_FPE_INTOVF      (2)  /* integer overflow */
#define TARGET_FPE_FLTDIV      (3)  /* floating point divide by zero */
#define TARGET_FPE_FLTOVF      (4)  /* floating point overflow */
#define TARGET_FPE_FLTUND      (5)  /* floating point underflow */
#define TARGET_FPE_FLTRES      (6)  /* floating point inexact result */
#define TARGET_FPE_FLTINV      (7)  /* floating point invalid operation */
#define TARGET_FPE_FLTSUB      (8)  /* subscript out of range */
#define TARGET_FPE_FLTUNK      (14) /* undiagnosed fp exception */
#define TARGET_FPE_CONDTRAP    (15) /* trap on condition */

/*
 * SIGSEGV si_codes
 */
#define TARGET_SEGV_MAPERR     (1)  /* address not mapped to object */
#define TARGET_SEGV_ACCERR     (2)  /* invalid permissions for mapped object */
#define TARGET_SEGV_BNDERR     (3)  /* failed address bound checks */

/*
 * SIGBUS si_codes
 */
#define TARGET_BUS_ADRALN       (1)     /* invalid address alignment */
#define TARGET_BUS_ADRERR       (2)     /* non-existent physical address */
#define TARGET_BUS_OBJERR       (3)     /* object specific hardware error */
/* hardware memory error consumed on a machine check: action required */
#define TARGET_BUS_MCEERR_AR    (4)
/* hardware memory error detected in process but not consumed: action optional*/
#define TARGET_BUS_MCEERR_AO    (5)

/*
 * SIGTRAP si_codes
 */
#define TARGET_TRAP_BRKPT       (1)     /* process breakpoint */
#define TARGET_TRAP_TRACE       (2)     /* process trace trap */
#define TARGET_TRAP_BRANCH      (3)     /* process taken branch trap */
#define TARGET_TRAP_HWBKPT      (4)     /* hardware breakpoint/watchpoint */
#define TARGET_TRAP_UNK         (5)     /* undiagnosed trap */

/*
 * SIGEMT si_codes
 */
#define TARGET_EMT_TAGOVF      1       /* tag overflow */

#include "target_resource.h"

struct target_pollfd {
    abi_int fd;       /* file descriptor */
    abi_short events;     /* requested events */
    abi_short revents;    /* returned events */
};

/* virtual terminal ioctls */
#define TARGET_KIOCSOUND       0x4B2F   /* start sound generation (0 for off) */
#define TARGET_KDMKTONE        0x4B30   /* generate tone */
#define TARGET_KDGKBTYPE       0x4b33
#define TARGET_KDSETMODE       0x4b3a
#define TARGET_KDGKBMODE       0x4b44
#define TARGET_KDSKBMODE       0x4b45
#define TARGET_KDGKBENT        0x4B46   /* gets one entry in translation table */
#define TARGET_KDGKBSENT       0x4B48   /* gets one function key string entry */
#define TARGET_KDGKBLED        0x4B64   /* get led flags (not lights) */
#define TARGET_KDSKBLED        0x4B65   /* set led flags (not lights) */
#define TARGET_KDGETLED        0x4B31   /* return current led state */
#define TARGET_KDSETLED        0x4B32   /* set led state [lights, not flags] */
#define TARGET_KDSIGACCEPT     0x4B4E

struct target_rtc_pll_info {
    abi_int pll_ctrl;
    abi_int pll_value;
    abi_int pll_max;
    abi_int pll_min;
    abi_int pll_posmult;
    abi_int pll_negmult;
    abi_long pll_clock;
};

/* real time clock ioctls */
#define TARGET_RTC_AIE_ON           TARGET_IO('p', 0x01)
#define TARGET_RTC_AIE_OFF          TARGET_IO('p', 0x02)
#define TARGET_RTC_UIE_ON           TARGET_IO('p', 0x03)
#define TARGET_RTC_UIE_OFF          TARGET_IO('p', 0x04)
#define TARGET_RTC_PIE_ON           TARGET_IO('p', 0x05)
#define TARGET_RTC_PIE_OFF          TARGET_IO('p', 0x06)
#define TARGET_RTC_WIE_ON           TARGET_IO('p', 0x0f)
#define TARGET_RTC_WIE_OFF          TARGET_IO('p', 0x10)
#define TARGET_RTC_ALM_READ         TARGET_IOR('p', 0x08, struct rtc_time)
#define TARGET_RTC_ALM_SET          TARGET_IOW('p', 0x07, struct rtc_time)
#define TARGET_RTC_RD_TIME          TARGET_IOR('p', 0x09, struct rtc_time)
#define TARGET_RTC_SET_TIME         TARGET_IOW('p', 0x0a, struct rtc_time)
#define TARGET_RTC_IRQP_READ        TARGET_IOR('p', 0x0b, abi_ulong)
#define TARGET_RTC_IRQP_SET         TARGET_IOW('p', 0x0c, abi_ulong)
#define TARGET_RTC_EPOCH_READ       TARGET_IOR('p', 0x0d, abi_ulong)
#define TARGET_RTC_EPOCH_SET        TARGET_IOW('p', 0x0e, abi_ulong)
#define TARGET_RTC_WKALM_RD         TARGET_IOR('p', 0x10, struct rtc_wkalrm)
#define TARGET_RTC_WKALM_SET        TARGET_IOW('p', 0x0f, struct rtc_wkalrm)
#define TARGET_RTC_PLL_GET          TARGET_IOR('p', 0x11,               \
                                               struct target_rtc_pll_info)
#define TARGET_RTC_PLL_SET          TARGET_IOW('p', 0x12,               \
                                               struct target_rtc_pll_info)
#define TARGET_RTC_VL_READ          TARGET_IOR('p', 0x13, abi_int)
#define TARGET_RTC_VL_CLR           TARGET_IO('p', 0x14)

#if defined(TARGET_ALPHA) || defined(TARGET_MIPS) || defined(TARGET_SH4) || \
    defined(TARGET_XTENSA)
#define TARGET_FIOGETOWN       TARGET_IOR('f', 123, abi_int)
#define TARGET_FIOSETOWN       TARGET_IOW('f', 124, abi_int)
#define TARGET_SIOCATMARK      TARGET_IOR('s', 7, abi_int)
#define TARGET_SIOCSPGRP       TARGET_IOW('s', 8, pid_t)
#define TARGET_SIOCGPGRP       TARGET_IOR('s', 9, pid_t)
#else
#define TARGET_FIOGETOWN       0x8903
#define TARGET_FIOSETOWN       0x8901
#define TARGET_SIOCATMARK      0x8905
#define TARGET_SIOCSPGRP       0x8902
#define TARGET_SIOCGPGRP       0x8904
#endif

#if defined(TARGET_SH4)
#define TARGET_SIOCGSTAMP_OLD   TARGET_IOR('s', 100, struct target_timeval)
#define TARGET_SIOCGSTAMPNS_OLD TARGET_IOR('s', 101, struct target_timespec)
#else
#define TARGET_SIOCGSTAMP_OLD   0x8906
#define TARGET_SIOCGSTAMPNS_OLD 0x8907
#endif

#define TARGET_SIOCGSTAMP_NEW   TARGET_IOR(0x89, 0x06, abi_llong[2])
#define TARGET_SIOCGSTAMPNS_NEW TARGET_IOR(0x89, 0x07, abi_llong[2])

/* Networking ioctls */
#define TARGET_SIOCADDRT       0x890B          /* add routing table entry */
#define TARGET_SIOCDELRT       0x890C          /* delete routing table entry */
#define TARGET_SIOCGIFNAME     0x8910          /* get iface name               */
#define TARGET_SIOCSIFLINK     0x8911          /* set iface channel            */
#define TARGET_SIOCGIFCONF     0x8912          /* get iface list               */
#define TARGET_SIOCGIFFLAGS    0x8913          /* get flags                    */
#define TARGET_SIOCSIFFLAGS    0x8914          /* set flags                    */
#define TARGET_SIOCGIFADDR     0x8915          /* get PA address               */
#define TARGET_SIOCSIFADDR     0x8916          /* set PA address               */
#define TARGET_SIOCGIFDSTADDR  0x8917          /* get remote PA address        */
#define TARGET_SIOCSIFDSTADDR  0x8918          /* set remote PA address        */
#define TARGET_SIOCGIFBRDADDR  0x8919          /* get broadcast PA address     */
#define TARGET_SIOCSIFBRDADDR  0x891a          /* set broadcast PA address     */
#define TARGET_SIOCGIFNETMASK  0x891b          /* get network PA mask          */
#define TARGET_SIOCSIFNETMASK  0x891c          /* set network PA mask          */
#define TARGET_SIOCGIFMETRIC   0x891d          /* get metric                   */
#define TARGET_SIOCSIFMETRIC   0x891e          /* set metric                   */
#define TARGET_SIOCGIFMEM      0x891f          /* get memory address (BSD)     */
#define TARGET_SIOCSIFMEM      0x8920          /* set memory address (BSD)     */
#define TARGET_SIOCGIFMTU      0x8921          /* get MTU size                 */
#define TARGET_SIOCSIFMTU      0x8922          /* set MTU size                 */
#define TARGET_SIOCSIFHWADDR   0x8924          /* set hardware address (NI)    */
#define TARGET_SIOCGIFENCAP    0x8925          /* get/set slip encapsulation   */
#define TARGET_SIOCSIFENCAP    0x8926
#define TARGET_SIOCGIFHWADDR   0x8927          /* Get hardware address         */
#define TARGET_SIOCGIFSLAVE    0x8929          /* Driver slaving support       */
#define TARGET_SIOCSIFSLAVE    0x8930
#define TARGET_SIOCADDMULTI    0x8931          /* Multicast address lists      */
#define TARGET_SIOCDELMULTI    0x8932
#define TARGET_SIOCGIFINDEX    0x8933
#define TARGET_SIOCSIFPFLAGS   0x8934          /* set extended flags          */
#define TARGET_SIOCGIFPFLAGS   0x8935          /* get extended flags          */

/* Bridging control calls */
#define TARGET_SIOCGIFBR       0x8940          /* Bridging support             */
#define TARGET_SIOCSIFBR       0x8941          /* Set bridging options         */

#define TARGET_SIOCGIFTXQLEN   0x8942          /* Get the tx queue length      */
#define TARGET_SIOCSIFTXQLEN   0x8943          /* Set the tx queue length      */

/* ARP cache control calls. */
#define TARGET_OLD_SIOCDARP    0x8950          /* old delete ARP table entry   */
#define TARGET_OLD_SIOCGARP    0x8951          /* old get ARP table entry      */
#define TARGET_OLD_SIOCSARP    0x8952          /* old set ARP table entry      */
#define TARGET_SIOCDARP        0x8953          /* delete ARP table entry       */
#define TARGET_SIOCGARP        0x8954          /* get ARP table entry          */
#define TARGET_SIOCSARP        0x8955          /* set ARP table entry          */

/* RARP cache control calls. */
#define TARGET_SIOCDRARP       0x8960          /* delete RARP table entry      */
#define TARGET_SIOCGRARP       0x8961          /* get RARP table entry         */
#define TARGET_SIOCSRARP       0x8962          /* set RARP table entry         */

/* Driver configuration calls */
#define TARGET_SIOCGIFMAP      0x8970          /* Get device parameters        */
#define TARGET_SIOCSIFMAP      0x8971          /* Set device parameters        */

/* DLCI configuration calls */
#define TARGET_SIOCADDDLCI     0x8980          /* Create new DLCI device       */
#define TARGET_SIOCDELDLCI     0x8981          /* Delete DLCI device           */

/* From <linux/wireless.h> */

#define TARGET_SIOCGIWNAME     0x8B01          /* get name == wireless protocol */

/* From <linux/if_tun.h> */

#define TARGET_TUNSETDEBUG        TARGET_IOW('T', 201, abi_int)
#define TARGET_TUNSETIFF          TARGET_IOW('T', 202, abi_int)
#define TARGET_TUNSETPERSIST      TARGET_IOW('T', 203, abi_int)
#define TARGET_TUNSETOWNER        TARGET_IOW('T', 204, abi_int)
#define TARGET_TUNSETLINK         TARGET_IOW('T', 205, abi_int)
#define TARGET_TUNSETGROUP        TARGET_IOW('T', 206, abi_int)
#define TARGET_TUNGETFEATURES     TARGET_IOR('T', 207, abi_uint)
#define TARGET_TUNSETOFFLOAD      TARGET_IOW('T', 208, abi_uint)
#define TARGET_TUNSETTXFILTER     TARGET_IOW('T', 209, abi_uint)
#define TARGET_TUNGETIFF          TARGET_IOR('T', 210, abi_uint)
#define TARGET_TUNGETSNDBUF       TARGET_IOR('T', 211, abi_int)
#define TARGET_TUNSETSNDBUF       TARGET_IOW('T', 212, abi_int)
/*
 * TUNATTACHFILTER and TUNDETACHFILTER are not supported. Linux kernel keeps a
 * user pointer in TUNATTACHFILTER, which we are not able to correctly handle.
 */
#define TARGET_TUNGETVNETHDRSZ    TARGET_IOR('T', 215, abi_int)
#define TARGET_TUNSETVNETHDRSZ    TARGET_IOW('T', 216, abi_int)
#define TARGET_TUNSETQUEUE        TARGET_IOW('T', 217, abi_int)
#define TARGET_TUNSETIFINDEX      TARGET_IOW('T', 218, abi_uint)
/* TUNGETFILTER is not supported: see TUNATTACHFILTER. */
#define TARGET_TUNSETVNETLE       TARGET_IOW('T', 220, abi_int)
#define TARGET_TUNGETVNETLE       TARGET_IOR('T', 221, abi_int)
#define TARGET_TUNSETVNETBE       TARGET_IOW('T', 222, abi_int)
#define TARGET_TUNGETVNETBE       TARGET_IOR('T', 223, abi_int)
#define TARGET_TUNSETSTEERINGEBPF TARGET_IOR('T', 224, abi_int)
#define TARGET_TUNSETFILTEREBPF   TARGET_IOR('T', 225, abi_int)
#define TARGET_TUNSETCARRIER      TARGET_IOW('T', 226, abi_int)
#define TARGET_TUNGETDEVNETNS     TARGET_IO('T', 227)

/* From <linux/random.h> */

#define TARGET_RNDGETENTCNT    TARGET_IOR('R', 0x00, abi_int)
#define TARGET_RNDADDTOENTCNT  TARGET_IOW('R', 0x01, abi_int)
#define TARGET_RNDZAPENTCNT    TARGET_IO('R', 0x04)
#define TARGET_RNDCLEARPOOL    TARGET_IO('R', 0x06)
#define TARGET_RNDRESEEDCRNG   TARGET_IO('R', 0x07)

/* From <linux/fs.h> */

#define TARGET_BLKROSET   TARGET_IO(0x12,93) /* set device read-only (0 = read-write) */
#define TARGET_BLKROGET   TARGET_IO(0x12,94) /* get read-only status (0 = read_write) */
#define TARGET_BLKRRPART  TARGET_IO(0x12,95) /* re-read partition table */
#define TARGET_BLKGETSIZE TARGET_IO(0x12,96) /* return device size /512 (long *arg) */
#define TARGET_BLKFLSBUF  TARGET_IO(0x12,97) /* flush buffer cache */
#define TARGET_BLKRASET   TARGET_IO(0x12,98) /* Set read ahead for block device */
#define TARGET_BLKRAGET   TARGET_IO(0x12,99) /* get current read ahead setting */
#define TARGET_BLKFRASET  TARGET_IO(0x12,100)/* set filesystem (mm/filemap.c) read-ahead */
#define TARGET_BLKFRAGET  TARGET_IO(0x12,101)/* get filesystem (mm/filemap.c) read-ahead */
#define TARGET_BLKSECTSET TARGET_IO(0x12,102)/* set max sectors per request (ll_rw_blk.c) */
#define TARGET_BLKSECTGET TARGET_IO(0x12,103)/* get max sectors per request (ll_rw_blk.c) */
#define TARGET_BLKSSZGET  TARGET_IO(0x12,104)/* get block device sector size */
#define TARGET_BLKPG      TARGET_IO(0x12,105)/* Partition table and disk geometry handling */
/* A jump here: 108-111 have been used for various private purposes. */
#define TARGET_BLKBSZGET  TARGET_IOR(0x12, 112, abi_ulong)
#define TARGET_BLKBSZSET  TARGET_IOW(0x12, 113, abi_ulong)
#define TARGET_BLKGETSIZE64 TARGET_IOR(0x12,114,abi_ulong)
/* return device size in bytes
   (u64 *arg) */

#define TARGET_BLKDISCARD TARGET_IO(0x12, 119)
#define TARGET_BLKIOMIN TARGET_IO(0x12, 120)
#define TARGET_BLKIOOPT TARGET_IO(0x12, 121)
#define TARGET_BLKALIGNOFF TARGET_IO(0x12, 122)
#define TARGET_BLKPBSZGET TARGET_IO(0x12, 123)
#define TARGET_BLKDISCARDZEROES TARGET_IO(0x12, 124)
#define TARGET_BLKSECDISCARD TARGET_IO(0x12, 125)
#define TARGET_BLKROTATIONAL TARGET_IO(0x12, 126)
#define TARGET_BLKZEROOUT TARGET_IO(0x12, 127)

/* From <linux/fd.h> */

#define TARGET_FDMSGON        TARGET_IO(2, 0x45)
#define TARGET_FDMSGOFF       TARGET_IO(2, 0x46)
#define TARGET_FDFMTBEG       TARGET_IO(2, 0x47)
#define TARGET_FDFMTTRK      TARGET_IOW(2, 0x48, struct format_descr)
#define TARGET_FDFMTEND       TARGET_IO(2, 0x49)
#define TARGET_FDSETEMSGTRESH TARGET_IO(2, 0x4a)
#define TARGET_FDFLUSH        TARGET_IO(2, 0x4b)
#define TARGET_FDSETMAXERRS  TARGET_IOW(2, 0x4c, struct floppy_max_errors)
#define TARGET_FDGETMAXERRS  TARGET_IOR(2, 0x0e, struct floppy_max_errors)
#define TARGET_FDRESET        TARGET_IO(2, 0x54)
#define TARGET_FDRAWCMD       TARGET_IO(2, 0x58)
#define TARGET_FDTWADDLE      TARGET_IO(2, 0x59)
#define TARGET_FDEJECT        TARGET_IO(2, 0x5a)

#define TARGET_FIBMAP     TARGET_IO(0x00,1)  /* bmap access */
#define TARGET_FIGETBSZ   TARGET_IO(0x00,2)  /* get the block size used for bmap */

#define TARGET_FICLONE    TARGET_IOW(0x94, 9, abi_int)
#define TARGET_FICLONERANGE TARGET_IOW(0x94, 13, struct file_clone_range)

#define TARGET_FIFREEZE    TARGET_IOWR('X', 119, abi_int)
#define TARGET_FITHAW    TARGET_IOWR('X', 120, abi_int)

/*
 * Note that the ioctl numbers for FS_IOC_<GET|SET><FLAGS|VERSION>
 * claim type "long" but the actual type used by the kernel is "int".
 */
#define TARGET_FS_IOC_GETFLAGS TARGET_IOR('f', 1, abi_long)
#define TARGET_FS_IOC_SETFLAGS TARGET_IOW('f', 2, abi_long)
#define TARGET_FS_IOC_GETVERSION TARGET_IOR('v', 1, abi_long)
#define TARGET_FS_IOC_SETVERSION TARGET_IOW('v', 2, abi_long)
#define TARGET_FS_IOC_FIEMAP TARGET_IOWR('f',11,struct fiemap)
#define TARGET_FS_IOC32_GETFLAGS TARGET_IOR('f', 1, abi_int)
#define TARGET_FS_IOC32_SETFLAGS TARGET_IOW('f', 2, abi_int)
#define TARGET_FS_IOC32_GETVERSION TARGET_IOR('v', 1, abi_int)
#define TARGET_FS_IOC32_SETVERSION TARGET_IOW('v', 2, abi_int)

/* btrfs ioctls */
#ifdef HAVE_BTRFS_H
#define TARGET_BTRFS_IOC_SNAP_CREATE            TARGET_IOWU(BTRFS_IOCTL_MAGIC, 1)
#define TARGET_BTRFS_IOC_SCAN_DEV               TARGET_IOWU(BTRFS_IOCTL_MAGIC, 4)
#define TARGET_BTRFS_IOC_FORGET_DEV             TARGET_IOWU(BTRFS_IOCTL_MAGIC, 5)
#define TARGET_BTRFS_IOC_ADD_DEV                TARGET_IOWU(BTRFS_IOCTL_MAGIC, 10)
#define TARGET_BTRFS_IOC_RM_DEV                 TARGET_IOWU(BTRFS_IOCTL_MAGIC, 11)
#define TARGET_BTRFS_IOC_SUBVOL_CREATE          TARGET_IOWU(BTRFS_IOCTL_MAGIC, 14)
#define TARGET_BTRFS_IOC_SNAP_DESTROY           TARGET_IOWU(BTRFS_IOCTL_MAGIC, 15)
#define TARGET_BTRFS_IOC_INO_LOOKUP             TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 18)
#define TARGET_BTRFS_IOC_DEFAULT_SUBVOL         TARGET_IOW(BTRFS_IOCTL_MAGIC, 19, \
                                                           abi_ullong)
#define TARGET_BTRFS_IOC_SUBVOL_GETFLAGS        TARGET_IOR(BTRFS_IOCTL_MAGIC, 25, \
                                                           abi_ullong)
#define TARGET_BTRFS_IOC_SUBVOL_SETFLAGS        TARGET_IOW(BTRFS_IOCTL_MAGIC, 26, \
                                                           abi_ullong)
#define TARGET_BTRFS_IOC_SCRUB                  TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 27)
#define TARGET_BTRFS_IOC_SCRUB_CANCEL           TARGET_IO(BTRFS_IOCTL_MAGIC, 28)
#define TARGET_BTRFS_IOC_SCRUB_PROGRESS         TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 29)
#define TARGET_BTRFS_IOC_DEV_INFO               TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 30)
#define TARGET_BTRFS_IOC_INO_PATHS              TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 35)
#define TARGET_BTRFS_IOC_LOGICAL_INO            TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 36)
#define TARGET_BTRFS_IOC_QUOTA_CTL              TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 40)
#define TARGET_BTRFS_IOC_QGROUP_ASSIGN          TARGET_IOWU(BTRFS_IOCTL_MAGIC, 41)
#define TARGET_BTRFS_IOC_QGROUP_CREATE          TARGET_IOWU(BTRFS_IOCTL_MAGIC, 42)
#define TARGET_BTRFS_IOC_QGROUP_LIMIT           TARGET_IORU(BTRFS_IOCTL_MAGIC, 43)
#define TARGET_BTRFS_IOC_QUOTA_RESCAN           TARGET_IOWU(BTRFS_IOCTL_MAGIC, 44)
#define TARGET_BTRFS_IOC_QUOTA_RESCAN_STATUS    TARGET_IORU(BTRFS_IOCTL_MAGIC, 45)
#define TARGET_BTRFS_IOC_QUOTA_RESCAN_WAIT      TARGET_IO(BTRFS_IOCTL_MAGIC, 46)
#define TARGET_BTRFS_IOC_GET_DEV_STATS          TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 52)
#define TARGET_BTRFS_IOC_GET_FEATURES           TARGET_IORU(BTRFS_IOCTL_MAGIC, 57)
#define TARGET_BTRFS_IOC_SET_FEATURES           TARGET_IOWU(BTRFS_IOCTL_MAGIC, 57)
#define TARGET_BTRFS_IOC_GET_SUPPORTED_FEATURES TARGET_IORU(BTRFS_IOCTL_MAGIC, 57)
#define TARGET_BTRFS_IOC_LOGICAL_INO_V2         TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 59)
#define TARGET_BTRFS_IOC_GET_SUBVOL_INFO        TARGET_IORU(BTRFS_IOCTL_MAGIC, 60)
#define TARGET_BTRFS_IOC_GET_SUBVOL_ROOTREF     TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 61)
#define TARGET_BTRFS_IOC_INO_LOOKUP_USER        TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 62)
#endif

/* usb ioctls */
#define TARGET_USBDEVFS_CONTROL TARGET_IOWRU('U', 0)
#define TARGET_USBDEVFS_BULK TARGET_IOWRU('U', 2)
#define TARGET_USBDEVFS_RESETEP TARGET_IORU('U', 3)
#define TARGET_USBDEVFS_SETINTERFACE TARGET_IORU('U', 4)
#define TARGET_USBDEVFS_SETCONFIGURATION TARGET_IORU('U',  5)
#define TARGET_USBDEVFS_GETDRIVER TARGET_IOWU('U', 8)
#define TARGET_USBDEVFS_SUBMITURB TARGET_IORU('U', 10)
#define TARGET_USBDEVFS_DISCARDURB TARGET_IO('U', 11)
#define TARGET_USBDEVFS_REAPURB TARGET_IOWU('U', 12)
#define TARGET_USBDEVFS_REAPURBNDELAY TARGET_IOWU('U', 13)
#define TARGET_USBDEVFS_DISCSIGNAL TARGET_IORU('U', 14)
#define TARGET_USBDEVFS_CLAIMINTERFACE TARGET_IORU('U', 15)
#define TARGET_USBDEVFS_RELEASEINTERFACE TARGET_IORU('U', 16)
#define TARGET_USBDEVFS_CONNECTINFO TARGET_IOWU('U', 17)
#define TARGET_USBDEVFS_IOCTL TARGET_IOWRU('U', 18)
#define TARGET_USBDEVFS_HUB_PORTINFO TARGET_IORU('U', 19)
#define TARGET_USBDEVFS_RESET TARGET_IO('U', 20)
#define TARGET_USBDEVFS_CLEAR_HALT TARGET_IORU('U', 21)
#define TARGET_USBDEVFS_DISCONNECT TARGET_IO('U', 22)
#define TARGET_USBDEVFS_CONNECT TARGET_IO('U', 23)
#define TARGET_USBDEVFS_CLAIM_PORT TARGET_IORU('U', 24)
#define TARGET_USBDEVFS_RELEASE_PORT TARGET_IORU('U', 25)
#define TARGET_USBDEVFS_GET_CAPABILITIES TARGET_IORU('U', 26)
#define TARGET_USBDEVFS_DISCONNECT_CLAIM TARGET_IORU('U', 27)
#define TARGET_USBDEVFS_DROP_PRIVILEGES TARGET_IOWU('U', 30)
#define TARGET_USBDEVFS_GET_SPEED TARGET_IO('U', 31)

/* cdrom commands */
#define TARGET_CDROMPAUSE               0x5301 /* Pause Audio Operation */
#define TARGET_CDROMRESUME              0x5302 /* Resume paused Audio Operation */
#define TARGET_CDROMPLAYMSF             0x5303 /* Play Audio MSF (struct cdrom_msf) */
#define TARGET_CDROMPLAYTRKIND          0x5304 /* Play Audio Track/index
                                                  (struct cdrom_ti) */
#define TARGET_CDROMREADTOCHDR          0x5305 /* Read TOC header
                                                  (struct cdrom_tochdr) */
#define TARGET_CDROMREADTOCENTRY        0x5306 /* Read TOC entry
                                                  (struct cdrom_tocentry) */
#define TARGET_CDROMSTOP                0x5307 /* Stop the cdrom drive */
#define TARGET_CDROMSTART               0x5308 /* Start the cdrom drive */
#define TARGET_CDROMEJECT               0x5309 /* Ejects the cdrom media */
#define TARGET_CDROMVOLCTRL             0x530a /* Control output volume
                                                  (struct cdrom_volctrl) */
#define TARGET_CDROMSUBCHNL             0x530b /* Read subchannel data
                                                  (struct cdrom_subchnl) */
#define TARGET_CDROMREADMODE2           0x530c /* Read TARGET_CDROM mode 2 data (2336 Bytes)
                                                  (struct cdrom_read) */
#define TARGET_CDROMREADMODE1           0x530d /* Read TARGET_CDROM mode 1 data (2048 Bytes)
                                                  (struct cdrom_read) */
#define TARGET_CDROMREADAUDIO           0x530e /* (struct cdrom_read_audio) */
#define TARGET_CDROMEJECT_SW            0x530f /* enable(1)/disable(0) auto-ejecting */
#define TARGET_CDROMMULTISESSION        0x5310 /* Obtain the start-of-last-session
                                                  address of multi session disks
                                                  (struct cdrom_multisession) */
#define TARGET_CDROM_GET_MCN            0x5311 /* Obtain the "Universal Product Code"
                                                  if available (struct cdrom_mcn) */
#define TARGET_CDROM_GET_UPC            TARGET_CDROM_GET_MCN  /* This one is deprecated,
                                                                 but here anyway for compatibility */
#define TARGET_CDROMRESET               0x5312 /* hard-reset the drive */
#define TARGET_CDROMVOLREAD             0x5313 /* Get the drive's volume setting
                                                  (struct cdrom_volctrl) */
#define TARGET_CDROMREADRAW             0x5314  /* read data in raw mode (2352 Bytes)
                                                   (struct cdrom_read) */
/*
 * These ioctls are used only used in aztcd.c and optcd.c
 */
#define TARGET_CDROMREADCOOKED          0x5315  /* read data in cooked mode */
#define TARGET_CDROMSEEK                0x5316  /* seek msf address */

/*
 * This ioctl is only used by the scsi-cd driver.
 It is for playing audio in logical block addressing mode.
*/
#define TARGET_CDROMPLAYBLK             0x5317  /* (struct cdrom_blk) */

/*
 * These ioctls are only used in optcd.c
 */
#define TARGET_CDROMREADALL             0x5318  /* read all 2646 bytes */

/*
 * These ioctls are (now) only in ide-cd.c for controlling
 * drive spindown time.  They should be implemented in the
 * Uniform driver, via generic packet commands, GPCMD_MODE_SELECT_10,
 * GPCMD_MODE_SENSE_10 and the GPMODE_POWER_PAGE...
 *  -Erik
 */
#define TARGET_CDROMGETSPINDOWN        0x531d
#define TARGET_CDROMSETSPINDOWN        0x531e

/*
 * These ioctls are implemented through the uniform CD-ROM driver
 * They _will_ be adopted by all CD-ROM drivers, when all the CD-ROM
 * drivers are eventually ported to the uniform CD-ROM driver interface.
 */
#define TARGET_CDROMCLOSETRAY           0x5319  /* pendant of CDROMEJECT */
#define TARGET_CDROM_SET_OPTIONS        0x5320  /* Set behavior options */
#define TARGET_CDROM_CLEAR_OPTIONS      0x5321  /* Clear behavior options */
#define TARGET_CDROM_SELECT_SPEED       0x5322  /* Set the CD-ROM speed */
#define TARGET_CDROM_SELECT_DISC        0x5323  /* Select disc (for juke-boxes) */
#define TARGET_CDROM_MEDIA_CHANGED      0x5325  /* Check is media changed  */
#define TARGET_CDROM_DRIVE_STATUS       0x5326  /* Get tray position, etc. */
#define TARGET_CDROM_DISC_STATUS        0x5327  /* Get disc type, etc. */
#define TARGET_CDROM_CHANGER_NSLOTS    0x5328  /* Get number of slots */
#define TARGET_CDROM_LOCKDOOR           0x5329  /* lock or unlock door */
#define TARGET_CDROM_DEBUG              0x5330  /* Turn debug messages on/off */
#define TARGET_CDROM_GET_CAPABILITY     0x5331  /* get capabilities */

/* Note that scsi/scsi_ioctl.h also uses 0x5382 - 0x5386.
 * Future CDROM ioctls should be kept below 0x537F
 */

/* This ioctl is only used by sbpcd at the moment */
#define TARGET_CDROMAUDIOBUFSIZ        0x5382   /* set the audio buffer size */
/* conflict with SCSI_IOCTL_GET_IDLUN */

/* DVD-ROM Specific ioctls */
#define TARGET_DVD_READ_STRUCT          0x5390  /* Read structure */
#define TARGET_DVD_WRITE_STRUCT 0x5391  /* Write structure */
#define TARGET_DVD_AUTH         0x5392  /* Authentication */

#define TARGET_CDROM_SEND_PACKET        0x5393  /* send a packet to the drive */
#define TARGET_CDROM_NEXT_WRITABLE      0x5394  /* get next writable block */
#define TARGET_CDROM_LAST_WRITTEN       0x5395  /* get last block written on disc */

/* HD commands */

/* hd/ide ctl's that pass (arg) ptrs to user space are numbered 0x030n/0x031n */
#define TARGET_HDIO_GETGEO            0x0301  /* get device geometry */
#define TARGET_HDIO_GET_UNMASKINTR    0x0302  /* get current unmask setting */
#define TARGET_HDIO_GET_MULTCOUNT     0x0304  /* get current IDE blockmode setting */
#define TARGET_HDIO_GET_KEEPSETTINGS  0x0308  /* get keep-settings-on-reset flag */
#define TARGET_HDIO_GET_32BIT         0x0309  /* get current io_32bit setting */
#define TARGET_HDIO_GET_NOWERR        0x030a  /* get ignore-write-error flag */
#define TARGET_HDIO_GET_DMA           0x030b  /* get use-dma flag */
#define TARGET_HDIO_GET_IDENTITY      0x030d  /* get IDE identification info */
#define TARGET_HDIO_DRIVE_CMD         0x031f  /* execute a special drive command */

/* hd/ide ctl's that pass (arg) non-ptr values are numbered 0x032n/0x033n */
#define TARGET_HDIO_SET_MULTCOUNT     0x0321  /* change IDE blockmode */
#define TARGET_HDIO_SET_UNMASKINTR    0x0322  /* permit other irqs during I/O */
#define TARGET_HDIO_SET_KEEPSETTINGS  0x0323  /* keep ioctl settings on reset */
#define TARGET_HDIO_SET_32BIT         0x0324  /* change io_32bit flags */
#define TARGET_HDIO_SET_NOWERR        0x0325  /* change ignore-write-error flag */
#define TARGET_HDIO_SET_DMA           0x0326  /* change use-dma flag */
#define TARGET_HDIO_SET_PIO_MODE      0x0327  /* reconfig interface to new speed */

/* loop ioctls */
#define TARGET_LOOP_SET_FD            0x4C00
#define TARGET_LOOP_CLR_FD            0x4C01
#define TARGET_LOOP_SET_STATUS        0x4C02
#define TARGET_LOOP_GET_STATUS        0x4C03
#define TARGET_LOOP_SET_STATUS64      0x4C04
#define TARGET_LOOP_GET_STATUS64      0x4C05
#define TARGET_LOOP_CHANGE_FD         0x4C06
#define TARGET_LOOP_SET_CAPACITY      0x4C07
#define TARGET_LOOP_SET_DIRECT_IO     0x4C08
#define TARGET_LOOP_SET_BLOCK_SIZE    0x4C09
#define TARGET_LOOP_CONFIGURE         0x4C0A

#define TARGET_LOOP_CTL_ADD           0x4C80
#define TARGET_LOOP_CTL_REMOVE        0x4C81
#define TARGET_LOOP_CTL_GET_FREE      0x4C82

/* fb ioctls */
#define TARGET_FBIOGET_VSCREENINFO    0x4600
#define TARGET_FBIOPUT_VSCREENINFO    0x4601
#define TARGET_FBIOGET_FSCREENINFO    0x4602
#define TARGET_FBIOGETCMAP            0x4604
#define TARGET_FBIOPUTCMAP            0x4605
#define TARGET_FBIOPAN_DISPLAY        0x4606
#define TARGET_FBIOGET_CON2FBMAP      0x460F
#define TARGET_FBIOPUT_CON2FBMAP      0x4610

/* vt ioctls */
#define TARGET_VT_OPENQRY             0x5600
#define TARGET_VT_GETSTATE            0x5603
#define TARGET_VT_ACTIVATE            0x5606
#define TARGET_VT_WAITACTIVE          0x5607
#define TARGET_VT_LOCKSWITCH          0x560b
#define TARGET_VT_UNLOCKSWITCH        0x560c
#define TARGET_VT_GETMODE             0x5601
#define TARGET_VT_SETMODE             0x5602
#define TARGET_VT_RELDISP             0x5605
#define TARGET_VT_DISALLOCATE         0x5608

/* device mapper */
#define TARGET_DM_VERSION             TARGET_IOWRU(0xfd, 0x00)
#define TARGET_DM_REMOVE_ALL          TARGET_IOWRU(0xfd, 0x01)
#define TARGET_DM_LIST_DEVICES        TARGET_IOWRU(0xfd, 0x02)
#define TARGET_DM_DEV_CREATE          TARGET_IOWRU(0xfd, 0x03)
#define TARGET_DM_DEV_REMOVE          TARGET_IOWRU(0xfd, 0x04)
#define TARGET_DM_DEV_RENAME          TARGET_IOWRU(0xfd, 0x05)
#define TARGET_DM_DEV_SUSPEND         TARGET_IOWRU(0xfd, 0x06)
#define TARGET_DM_DEV_STATUS          TARGET_IOWRU(0xfd, 0x07)
#define TARGET_DM_DEV_WAIT            TARGET_IOWRU(0xfd, 0x08)
#define TARGET_DM_TABLE_LOAD          TARGET_IOWRU(0xfd, 0x09)
#define TARGET_DM_TABLE_CLEAR         TARGET_IOWRU(0xfd, 0x0a)
#define TARGET_DM_TABLE_DEPS          TARGET_IOWRU(0xfd, 0x0b)
#define TARGET_DM_TABLE_STATUS        TARGET_IOWRU(0xfd, 0x0c)
#define TARGET_DM_LIST_VERSIONS       TARGET_IOWRU(0xfd, 0x0d)
#define TARGET_DM_TARGET_MSG          TARGET_IOWRU(0xfd, 0x0e)
#define TARGET_DM_DEV_SET_GEOMETRY    TARGET_IOWRU(0xfd, 0x0f)

/* drm ioctls */
#define TARGET_DRM_IOCTL_VERSION      TARGET_IOWRU('d', 0x00)

/* drm i915 ioctls */
#define TARGET_DRM_IOCTL_I915_GETPARAM              TARGET_IOWRU('d', 0x46)

/* from asm/termbits.h */

#define TARGET_NCC 8
struct target_termio {
    abi_ushort c_iflag;             /* input mode flags */
    abi_ushort c_oflag;             /* output mode flags */
    abi_ushort c_cflag;             /* control mode flags */
    abi_ushort c_lflag;             /* local mode flags */
    unsigned char c_line;           /* line discipline */
    unsigned char c_cc[TARGET_NCC]; /* control characters */
};

struct target_winsize {
    abi_ushort ws_row;
    abi_ushort ws_col;
    abi_ushort ws_xpixel;
    abi_ushort ws_ypixel;
};

#include "termbits.h"

#include "target_mman.h"

#if (defined(TARGET_I386) && defined(TARGET_ABI32))     \
    || (defined(TARGET_ARM) && defined(TARGET_ABI32))   \
    || defined(TARGET_CRIS)
#define TARGET_STAT_HAVE_NSEC
struct target_stat {
    abi_ushort st_dev;
    abi_ushort __pad1;
    abi_ulong st_ino;
    abi_ushort st_mode;
    abi_ushort st_nlink;
    abi_ushort st_uid;
    abi_ushort st_gid;
    abi_ushort st_rdev;
    abi_ushort __pad2;
    abi_ulong  st_size;
    abi_ulong  st_blksize;
    abi_ulong  st_blocks;
    abi_ulong  target_st_atime;
    abi_ulong  target_st_atime_nsec;
    abi_ulong  target_st_mtime;
    abi_ulong  target_st_mtime_nsec;
    abi_ulong  target_st_ctime;
    abi_ulong  target_st_ctime_nsec;
    abi_ulong  __unused4;
    abi_ulong  __unused5;
};

/* This matches struct stat64 in glibc2.1, hence the absolutely
 * insane amounts of padding around dev_t's.
 */
#define TARGET_HAS_STRUCT_STAT64
struct target_stat64 {
    abi_ushort      st_dev;
    unsigned char   __pad0[10];

#define TARGET_STAT64_HAS_BROKEN_ST_INO 1
    abi_ulong       __st_ino;

    abi_uint        st_mode;
    abi_uint        st_nlink;

    abi_ulong       st_uid;
    abi_ulong       st_gid;

    abi_ushort      st_rdev;
    unsigned char   __pad3[10];

    abi_llong       st_size;
    abi_ulong       st_blksize;

    abi_ulong       st_blocks;      /* Number 512-byte blocks allocated. */
    abi_ulong       __pad4;         /* future possible st_blocks high bits */

    abi_ulong       target_st_atime;
    abi_ulong       target_st_atime_nsec;

    abi_ulong       target_st_mtime;
    abi_ulong       target_st_mtime_nsec;

    abi_ulong       target_st_ctime;
    abi_ulong       target_st_ctime_nsec;

    abi_ullong      st_ino;
} QEMU_PACKED;

#ifdef TARGET_ARM
#define TARGET_HAS_STRUCT_STAT64
struct target_eabi_stat64 {
    abi_ullong   st_dev;
    abi_uint     __pad1;
    abi_ulong    __st_ino;
    abi_uint     st_mode;
    abi_uint     st_nlink;

    abi_ulong    st_uid;
    abi_ulong    st_gid;

    abi_ullong   st_rdev;
    abi_uint     __pad2[2];

    abi_llong       st_size;
    abi_ulong    st_blksize;
    abi_uint     __pad3;
    abi_ullong   st_blocks;

    abi_ulong    target_st_atime;
    abi_ulong    target_st_atime_nsec;

    abi_ulong    target_st_mtime;
    abi_ulong    target_st_mtime_nsec;

    abi_ulong    target_st_ctime;
    abi_ulong    target_st_ctime_nsec;

    abi_ullong   st_ino;
} QEMU_PACKED;
#endif

#elif defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
struct target_stat {
    abi_uint        st_dev;
    abi_ulong       st_ino;
    abi_uint        st_mode;
    abi_uint        st_nlink;
    abi_uint        st_uid;
    abi_uint        st_gid;
    abi_uint        st_rdev;
    abi_long        st_size;
    abi_long        target_st_atime;
    abi_long        target_st_mtime;
    abi_long        target_st_ctime;
    abi_long        st_blksize;
    abi_long        st_blocks;
    abi_ulong       __unused4[2];
};

#define TARGET_HAS_STRUCT_STAT64
struct target_stat64 {
    unsigned char   __pad0[6];
    abi_ushort      st_dev;

    abi_ullong      st_ino;
    abi_ullong      st_nlink;

    abi_uint        st_mode;

    abi_uint        st_uid;
    abi_uint        st_gid;

    unsigned char   __pad2[6];
    abi_ushort      st_rdev;

    abi_llong       st_size;
    abi_llong       st_blksize;

    unsigned char   __pad4[4];
    abi_uint        st_blocks;

    abi_ulong       target_st_atime;
    abi_ulong       target_st_atime_nsec;

    abi_ulong       target_st_mtime;
    abi_ulong       target_st_mtime_nsec;

    abi_ulong       target_st_ctime;
    abi_ulong       target_st_ctime_nsec;

    abi_ulong       __unused4[3];
};

#elif defined(TARGET_SPARC)

#define TARGET_STAT_HAVE_NSEC
struct target_stat {
    abi_ushort      st_dev;
    abi_ulong       st_ino;
    abi_ushort      st_mode;
    abi_short       st_nlink;
    abi_ushort      st_uid;
    abi_ushort      st_gid;
    abi_ushort      st_rdev;
    abi_long        st_size;
    abi_long        target_st_atime;
    abi_ulong       target_st_atime_nsec;
    abi_long        target_st_mtime;
    abi_ulong       target_st_mtime_nsec;
    abi_long        target_st_ctime;
    abi_ulong       target_st_ctime_nsec;
    abi_long        st_blksize;
    abi_long        st_blocks;
    abi_ulong       __unused1[2];
};

#define TARGET_HAS_STRUCT_STAT64
struct target_stat64 {
    unsigned char   __pad0[6];
    abi_ushort      st_dev;

    abi_ullong      st_ino;

    abi_uint        st_mode;
    abi_uint        st_nlink;

    abi_uint        st_uid;
    abi_uint        st_gid;

    unsigned char   __pad2[6];
    abi_ushort      st_rdev;

    unsigned char   __pad3[8];

    abi_llong       st_size;
    abi_uint        st_blksize;

    unsigned char   __pad4[8];
    abi_uint        st_blocks;

    abi_uint        target_st_atime;
    abi_uint        target_st_atime_nsec;

    abi_uint        target_st_mtime;
    abi_uint        target_st_mtime_nsec;

    abi_uint        target_st_ctime;
    abi_uint        target_st_ctime_nsec;

    abi_uint        __unused1;
    abi_uint        __unused2;
};

#elif defined(TARGET_PPC)

#define TARGET_STAT_HAVE_NSEC
struct target_stat {
    abi_ulong st_dev;
    abi_ulong st_ino;
#if defined(TARGET_PPC64)
    abi_ulong st_nlink;
    abi_uint  st_mode;
#else
    abi_uint  st_mode;
    abi_ushort st_nlink;
#endif
    abi_uint   st_uid;
    abi_uint   st_gid;
    abi_ulong  st_rdev;
    abi_ulong  st_size;
    abi_ulong  st_blksize;
    abi_ulong  st_blocks;
    abi_ulong  target_st_atime;
    abi_ulong  target_st_atime_nsec;
    abi_ulong  target_st_mtime;
    abi_ulong  target_st_mtime_nsec;
    abi_ulong  target_st_ctime;
    abi_ulong  target_st_ctime_nsec;
    abi_ulong  __unused4;
    abi_ulong  __unused5;
#if defined(TARGET_PPC64)
    abi_ulong  __unused6;
#endif
};

#if !defined(TARGET_PPC64)
#define TARGET_HAS_STRUCT_STAT64
struct QEMU_PACKED target_stat64 {
    abi_ullong st_dev;
    abi_ullong st_ino;
    abi_uint st_mode;
    abi_uint st_nlink;
    abi_uint st_uid;
    abi_uint st_gid;
    abi_ullong st_rdev;
    abi_ullong __pad0;
    abi_llong      st_size;
    abi_int        st_blksize;
    abi_uint       __pad1;
    abi_llong      st_blocks;       /* Number 512-byte blocks allocated. */
    abi_int        target_st_atime;
    abi_uint       target_st_atime_nsec;
    abi_int        target_st_mtime;
    abi_uint       target_st_mtime_nsec;
    abi_int        target_st_ctime;
    abi_uint       target_st_ctime_nsec;
    abi_uint       __unused4;
    abi_uint       __unused5;
};
#endif

#elif defined(TARGET_MICROBLAZE)

#define TARGET_STAT_HAVE_NSEC
struct target_stat {
    abi_ulong st_dev;
    abi_ulong st_ino;
    abi_uint st_mode;
    abi_ushort st_nlink;
    abi_uint st_uid;
    abi_uint st_gid;
    abi_ulong  st_rdev;
    abi_ulong  st_size;
    abi_ulong  st_blksize;
    abi_ulong  st_blocks;
    abi_ulong  target_st_atime;
    abi_ulong  target_st_atime_nsec;
    abi_ulong  target_st_mtime;
    abi_ulong  target_st_mtime_nsec;
    abi_ulong  target_st_ctime;
    abi_ulong  target_st_ctime_nsec;
    abi_ulong  __unused4;
    abi_ulong  __unused5;
};

/* FIXME: Microblaze no-mmu user-space has a difference stat64 layout...  */
#define TARGET_HAS_STRUCT_STAT64
struct QEMU_PACKED target_stat64 {
    abi_ullong st_dev;
#define TARGET_STAT64_HAS_BROKEN_ST_INO 1
    abi_uint pad0;
    abi_uint __st_ino;

    abi_uint st_mode;
    abi_uint st_nlink;
    abi_uint st_uid;
    abi_uint st_gid;
    abi_ullong st_rdev;
    abi_ullong __pad1;

    abi_llong st_size;
    abi_int  st_blksize;
    abi_uint __pad2;
    abi_llong st_blocks;

    abi_int    target_st_atime;
    abi_uint   target_st_atime_nsec;
    abi_int    target_st_mtime;
    abi_uint   target_st_mtime_nsec;
    abi_int    target_st_ctime;
    abi_uint   target_st_ctime_nsec;
    abi_ullong st_ino;
};

#elif defined(TARGET_M68K)

struct target_stat {
    abi_ushort st_dev;
    abi_ushort __pad1;
    abi_ulong  st_ino;
    abi_ushort st_mode;
    abi_ushort st_nlink;
    abi_ushort st_uid;
    abi_ushort st_gid;
    abi_ushort st_rdev;
    abi_ushort __pad2;
    abi_ulong  st_size;
    abi_ulong  st_blksize;
    abi_ulong  st_blocks;
    abi_ulong  target_st_atime;
    abi_ulong  __unused1;
    abi_ulong  target_st_mtime;
    abi_ulong  __unused2;
    abi_ulong  target_st_ctime;
    abi_ulong  __unused3;
    abi_ulong  __unused4;
    abi_ulong  __unused5;
};

/* This matches struct stat64 in glibc2.1, hence the absolutely
 * insane amounts of padding around dev_t's.
 */
#define TARGET_HAS_STRUCT_STAT64
struct target_stat64 {
    abi_ullong      st_dev;
    unsigned char   __pad1[2];

#define TARGET_STAT64_HAS_BROKEN_ST_INO 1
    abi_ulong       __st_ino;

    abi_uint    st_mode;
    abi_uint    st_nlink;

    abi_ulong       st_uid;
    abi_ulong       st_gid;

    abi_ullong      st_rdev;
    unsigned char   __pad3[2];

    abi_llong       st_size;
    abi_ulong       st_blksize;

    abi_ulong       __pad4;         /* future possible st_blocks high bits */
    abi_ulong       st_blocks;      /* Number 512-byte blocks allocated. */

    abi_ulong       target_st_atime;
    abi_ulong       target_st_atime_nsec;

    abi_ulong       target_st_mtime;
    abi_ulong       target_st_mtime_nsec;

    abi_ulong       target_st_ctime;
    abi_ulong       target_st_ctime_nsec;

    abi_ullong      st_ino;
} QEMU_PACKED;

#elif defined(TARGET_ABI_MIPSN64)

#define TARGET_STAT_HAVE_NSEC
/* The memory layout is the same as of struct stat64 of the 32-bit kernel.  */
struct target_stat {
    abi_uint                st_dev;
    abi_uint                st_pad0[3]; /* Reserved for st_dev expansion */

    abi_ulong               st_ino;

    abi_uint                st_mode;
    abi_uint                st_nlink;

    abi_int                 st_uid;
    abi_int                 st_gid;

    abi_uint                st_rdev;
    abi_uint                st_pad1[3]; /* Reserved for st_rdev expansion */

    abi_ulong               st_size;

    /*
     * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
     * but we don't have it under Linux.
     */
    abi_uint                target_st_atime;
    abi_uint                target_st_atime_nsec;

    abi_uint                target_st_mtime;
    abi_uint                target_st_mtime_nsec;

    abi_uint                target_st_ctime;
    abi_uint                target_st_ctime_nsec;

    abi_uint                st_blksize;
    abi_uint                st_pad2;

    abi_ulong               st_blocks;
};

#elif defined(TARGET_ABI_MIPSN32)

#define TARGET_STAT_HAVE_NSEC
struct target_stat {
    abi_ulong    st_dev;
    abi_ulong    st_pad0[3]; /* Reserved for st_dev expansion */
    abi_ullong   st_ino;
    abi_uint     st_mode;
    abi_uint     st_nlink;
    abi_int      st_uid;
    abi_int      st_gid;
    abi_ulong    st_rdev;
    abi_ulong    st_pad1[3]; /* Reserved for st_rdev expansion */
    abi_llong    st_size;
    abi_long     target_st_atime;
    abi_ulong    target_st_atime_nsec; /* Reserved for st_atime expansion */
    abi_long     target_st_mtime;
    abi_ulong    target_st_mtime_nsec; /* Reserved for st_mtime expansion */
    abi_long     target_st_ctime;
    abi_ulong    target_st_ctime_nsec; /* Reserved for st_ctime expansion */
    abi_ulong    st_blksize;
    abi_ulong    st_pad2;
    abi_llong    st_blocks;
};

#elif defined(TARGET_ABI_MIPSO32)

#define TARGET_STAT_HAVE_NSEC
struct target_stat {
    abi_uint        st_dev;
    abi_long        st_pad1[3];             /* Reserved for network id */
    abi_ulong       st_ino;
    abi_uint        st_mode;
    abi_uint        st_nlink;
    abi_int         st_uid;
    abi_int         st_gid;
    abi_uint        st_rdev;
    abi_long        st_pad2[2];
    abi_long        st_size;
    abi_long        st_pad3;
    /*
     * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
     * but we don't have it under Linux.
     */
    abi_long                target_st_atime;
    abi_long                target_st_atime_nsec;
    abi_long                target_st_mtime;
    abi_long                target_st_mtime_nsec;
    abi_long                target_st_ctime;
    abi_long                target_st_ctime_nsec;
    abi_long                st_blksize;
    abi_long                st_blocks;
    abi_long                st_pad4[14];
};

/*
 * This matches struct stat64 in glibc2.1, hence the absolutely insane
 * amounts of padding around dev_t's.  The memory layout is the same as of
 * struct stat of the 64-bit kernel.
 */

#define TARGET_HAS_STRUCT_STAT64
struct target_stat64 {
    abi_ulong       st_dev;
    abi_ulong       st_pad0[3];     /* Reserved for st_dev expansion  */

    abi_ullong      st_ino;

    abi_uint        st_mode;
    abi_uint        st_nlink;

    abi_int         st_uid;
    abi_int         st_gid;

    abi_ulong       st_rdev;
    abi_ulong       st_pad1[3];     /* Reserved for st_rdev expansion  */

    abi_llong       st_size;

    /*
     * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
     * but we don't have it under Linux.
     */
    abi_long        target_st_atime;
    abi_ulong       target_st_atime_nsec;   /* Reserved for st_atime expansion  */

    abi_long        target_st_mtime;
    abi_ulong       target_st_mtime_nsec;   /* Reserved for st_mtime expansion  */

    abi_long        target_st_ctime;
    abi_ulong       target_st_ctime_nsec;   /* Reserved for st_ctime expansion  */

    abi_ulong       st_blksize;
    abi_ulong       st_pad2;

    abi_llong       st_blocks;
};

#elif defined(TARGET_ALPHA)

struct target_stat {
    abi_uint     st_dev;
    abi_uint     st_ino;
    abi_uint     st_mode;
    abi_uint     st_nlink;
    abi_uint     st_uid;
    abi_uint     st_gid;
    abi_uint     st_rdev;
    abi_long     st_size;
    abi_ulong    target_st_atime;
    abi_ulong    target_st_mtime;
    abi_ulong    target_st_ctime;
    abi_uint     st_blksize;
    abi_uint     st_blocks;
    abi_uint     st_flags;
    abi_uint     st_gen;
};

#define TARGET_HAS_STRUCT_STAT64
struct target_stat64 {
    abi_ulong    st_dev;
    abi_ulong    st_ino;
    abi_ulong    st_rdev;
    abi_long     st_size;
    abi_ulong    st_blocks;

    abi_uint     st_mode;
    abi_uint     st_uid;
    abi_uint     st_gid;
    abi_uint     st_blksize;
    abi_uint     st_nlink;
    abi_uint     __pad0;

    abi_ulong    target_st_atime;
    abi_ulong    target_st_atime_nsec;
    abi_ulong    target_st_mtime;
    abi_ulong    target_st_mtime_nsec;
    abi_ulong    target_st_ctime;
    abi_ulong    target_st_ctime_nsec;
    abi_long     __unused[3];
};

#elif defined(TARGET_SH4)

#define TARGET_STAT_HAVE_NSEC
struct target_stat {
    abi_ulong  st_dev;
    abi_ulong  st_ino;
    abi_ushort st_mode;
    abi_ushort st_nlink;
    abi_ushort st_uid;
    abi_ushort st_gid;
    abi_ulong  st_rdev;
    abi_ulong  st_size;
    abi_ulong  st_blksize;
    abi_ulong  st_blocks;
    abi_ulong  target_st_atime;
    abi_ulong  target_st_atime_nsec;
    abi_ulong  target_st_mtime;
    abi_ulong  target_st_mtime_nsec;
    abi_ulong  target_st_ctime;
    abi_ulong  target_st_ctime_nsec;
    abi_ulong  __unused4;
    abi_ulong  __unused5;
};

/* This matches struct stat64 in glibc2.1, hence the absolutely
 * insane amounts of padding around dev_t's.
 */
#define TARGET_HAS_STRUCT_STAT64
struct QEMU_PACKED target_stat64 {
    abi_ullong      st_dev;
    unsigned char   __pad0[4];

#define TARGET_STAT64_HAS_BROKEN_ST_INO 1
    abi_ulong       __st_ino;

    abi_uint        st_mode;
    abi_uint        st_nlink;

    abi_ulong       st_uid;
    abi_ulong       st_gid;

    abi_ullong      st_rdev;
    unsigned char   __pad3[4];

    abi_llong       st_size;
    abi_ulong       st_blksize;

    abi_ullong      st_blocks;      /* Number 512-byte blocks allocated. */

    abi_ulong       target_st_atime;
    abi_ulong       target_st_atime_nsec;

    abi_ulong       target_st_mtime;
    abi_ulong       target_st_mtime_nsec;

    abi_ulong       target_st_ctime;
    abi_ulong       target_st_ctime_nsec;

    abi_ullong      st_ino;
};

#elif defined(TARGET_I386) && !defined(TARGET_ABI32)
#define TARGET_STAT_HAVE_NSEC
struct target_stat {
    abi_ulong       st_dev;
    abi_ulong       st_ino;
    abi_ulong       st_nlink;

    abi_uint        st_mode;
    abi_uint        st_uid;
    abi_uint        st_gid;
    abi_uint        __pad0;
    abi_ulong       st_rdev;
    abi_long        st_size;
    abi_long        st_blksize;
    abi_long        st_blocks;      /* Number 512-byte blocks allocated. */

    abi_ulong       target_st_atime;
    abi_ulong       target_st_atime_nsec;
    abi_ulong       target_st_mtime;
    abi_ulong       target_st_mtime_nsec;
    abi_ulong       target_st_ctime;
    abi_ulong       target_st_ctime_nsec;

    abi_long        __unused[3];
};
#elif defined(TARGET_S390X)
struct target_stat {
    abi_ulong  st_dev;
    abi_ulong  st_ino;
    abi_ulong  st_nlink;
    abi_uint   st_mode;
    abi_uint   st_uid;
    abi_uint   st_gid;
    abi_uint   __pad1;
    abi_ulong  st_rdev;
    abi_ulong  st_size;
    abi_ulong  target_st_atime;
    abi_ulong  target_st_atime_nsec;
    abi_ulong  target_st_mtime;
    abi_ulong  target_st_mtime_nsec;
    abi_ulong  target_st_ctime;
    abi_ulong  target_st_ctime_nsec;
    abi_ulong  st_blksize;
    abi_long       st_blocks;
    abi_ulong  __unused[3];
};
#elif defined(TARGET_AARCH64)
#define TARGET_STAT_HAVE_NSEC
struct target_stat {
    abi_ulong  st_dev;
    abi_ulong  st_ino;
    abi_uint   st_mode;
    abi_uint   st_nlink;
    abi_uint   st_uid;
    abi_uint   st_gid;
    abi_ulong  st_rdev;
    abi_ulong  _pad1;
    abi_long  st_size;
    abi_int    st_blksize;
    abi_int    __pad2;
    abi_long   st_blocks;
    abi_long  target_st_atime;
    abi_ulong  target_st_atime_nsec;
    abi_long  target_st_mtime;
    abi_ulong  target_st_mtime_nsec;
    abi_long  target_st_ctime;
    abi_ulong  target_st_ctime_nsec;
    abi_uint __unused[2];
};
#elif defined(TARGET_XTENSA)
#define TARGET_STAT_HAVE_NSEC
struct target_stat {
    abi_ulong       st_dev;
    abi_ulong       st_ino;
    abi_uint        st_mode;
    abi_uint        st_nlink;
    abi_uint        st_uid;
    abi_uint        st_gid;
    abi_ulong       st_rdev;
    abi_long        st_size;
    abi_ulong       st_blksize;
    abi_ulong       st_blocks;
    abi_ulong       target_st_atime;
    abi_ulong       target_st_atime_nsec;
    abi_ulong       target_st_mtime;
    abi_ulong       target_st_mtime_nsec;
    abi_ulong       target_st_ctime;
    abi_ulong       target_st_ctime_nsec;
    abi_ulong       __unused4;
    abi_ulong       __unused5;
};

#define TARGET_HAS_STRUCT_STAT64
struct target_stat64  {
    abi_ullong st_dev;          /* Device */
    abi_ullong st_ino;          /* File serial number */
    abi_uint  st_mode;          /* File mode. */
    abi_uint  st_nlink;         /* Link count. */
    abi_uint  st_uid;           /* User ID of the file's owner. */
    abi_uint  st_gid;           /* Group ID of the file's group. */
    abi_ullong st_rdev;         /* Device number, if device. */
    abi_llong st_size;          /* Size of file, in bytes. */
    abi_ulong st_blksize;       /* Optimal block size for I/O. */
    abi_ulong __unused2;
    abi_ullong st_blocks;       /* Number 512-byte blocks allocated. */
    abi_ulong target_st_atime;  /* Time of last access. */
    abi_ulong target_st_atime_nsec;
    abi_ulong target_st_mtime;  /* Time of last modification. */
    abi_ulong target_st_mtime_nsec;
    abi_ulong target_st_ctime;  /* Time of last status change. */
    abi_ulong target_st_ctime_nsec;
    abi_ulong __unused4;
    abi_ulong __unused5;
};

#elif defined(TARGET_OPENRISC) \
    || defined(TARGET_RISCV) || defined(TARGET_HEXAGON)

/* These are the asm-generic versions of the stat and stat64 structures */

#define TARGET_STAT_HAVE_NSEC
struct target_stat {
    abi_ulong st_dev;
    abi_ulong st_ino;
    abi_uint st_mode;
    abi_uint st_nlink;
    abi_uint st_uid;
    abi_uint st_gid;
    abi_ulong st_rdev;
    abi_ulong __pad1;
    abi_long st_size;
    abi_int st_blksize;
    abi_int __pad2;
    abi_long st_blocks;
    abi_long target_st_atime;
    abi_ulong target_st_atime_nsec;
    abi_long target_st_mtime;
    abi_ulong target_st_mtime_nsec;
    abi_long target_st_ctime;
    abi_ulong target_st_ctime_nsec;
    abi_uint __unused4;
    abi_uint __unused5;
};

#if !defined(TARGET_RISCV64)
#define TARGET_HAS_STRUCT_STAT64
struct target_stat64 {
    abi_ullong st_dev;
    abi_ullong st_ino;
    abi_uint st_mode;
    abi_uint st_nlink;
    abi_uint st_uid;
    abi_uint st_gid;
    abi_ullong st_rdev;
    abi_ullong __pad1;
    abi_llong st_size;
    abi_int st_blksize;
    abi_int __pad2;
    abi_llong st_blocks;
    abi_int target_st_atime;
    abi_uint target_st_atime_nsec;
    abi_int target_st_mtime;
    abi_uint target_st_mtime_nsec;
    abi_int target_st_ctime;
    abi_uint target_st_ctime_nsec;
    abi_uint __unused4;
    abi_uint __unused5;
};
#endif

#elif defined(TARGET_HPPA)

#define TARGET_STAT_HAVE_NSEC
struct target_stat {
    abi_uint   st_dev;
    abi_uint   st_ino;
    abi_ushort st_mode;
    abi_ushort st_nlink;
    abi_ushort _res1;
    abi_ushort _res2;
    abi_uint   st_rdev;
    abi_int    st_size;
    abi_int    target_st_atime;
    abi_uint   target_st_atime_nsec;
    abi_int    target_st_mtime;
    abi_uint   target_st_mtime_nsec;
    abi_int    target_st_ctime;
    abi_uint   target_st_ctime_nsec;
    abi_int    st_blksize;
    abi_int    st_blocks;
    abi_uint   _unused1;
    abi_uint   _unused2;
    abi_uint   _unused3;
    abi_uint   _unused4;
    abi_ushort _unused5;
    abi_short  st_fstype;
    abi_uint   st_realdev;
    abi_ushort st_basemode;
    abi_ushort _unused6;
    abi_uint   st_uid;
    abi_uint   st_gid;
    abi_uint   _unused7[3];
};

#define TARGET_HAS_STRUCT_STAT64
struct target_stat64 {
    abi_ullong st_dev;
    abi_uint   _pad1;
    abi_uint   _res1;
    abi_uint   st_mode;
    abi_uint   st_nlink;
    abi_uint   st_uid;
    abi_uint   st_gid;
    abi_ullong st_rdev;
    abi_uint   _pad2;
    abi_llong  st_size;
    abi_int    st_blksize;
    abi_llong  st_blocks;
    abi_int    target_st_atime;
    abi_uint   target_st_atime_nsec;
    abi_int    target_st_mtime;
    abi_uint   target_st_mtime_nsec;
    abi_int    target_st_ctime;
    abi_uint   target_st_ctime_nsec;
    abi_ullong st_ino;
};

#elif defined(TARGET_LOONGARCH64)

/* LoongArch no newfstatat/fstat syscall. */

#else
#error unsupported CPU
#endif

typedef struct {
    abi_int val[2];
} target_fsid_t;

#ifdef TARGET_MIPS
#ifdef TARGET_ABI_MIPSN32
struct target_statfs {
    abi_int                 f_type;
    abi_int                 f_bsize;
    abi_int                 f_frsize;       /* Fragment size - unsupported */
    abi_int                 f_blocks;
    abi_int                 f_bfree;
    abi_int                 f_files;
    abi_int                 f_ffree;
    abi_int                 f_bavail;

    /* Linux specials */
    target_fsid_t           f_fsid;
    abi_int                 f_namelen;
    abi_int                 f_flags;
    abi_int                 f_spare[5];
};
#else
struct target_statfs {
    abi_long                f_type;
    abi_long                f_bsize;
    abi_long                f_frsize;       /* Fragment size - unsupported */
    abi_long                f_blocks;
    abi_long                f_bfree;
    abi_long                f_files;
    abi_long                f_ffree;
    abi_long                f_bavail;

    /* Linux specials */
    target_fsid_t           f_fsid;
    abi_long                f_namelen;
    abi_long                f_flags;
    abi_long                f_spare[5];
};
#endif

struct target_statfs64 {
    abi_uint        f_type;
    abi_uint        f_bsize;
    abi_uint        f_frsize;       /* Fragment size - unsupported */
    abi_uint        __pad;
    abi_ullong      f_blocks;
    abi_ullong      f_bfree;
    abi_ullong      f_files;
    abi_ullong      f_ffree;
    abi_ullong      f_bavail;
    target_fsid_t   f_fsid;
    abi_uint        f_namelen;
    abi_uint        f_flags;
    abi_uint        f_spare[5];
};
#elif (defined(TARGET_PPC64) || defined(TARGET_X86_64) ||       \
       defined(TARGET_SPARC64) || defined(TARGET_AARCH64) ||    \
       defined(TARGET_RISCV) || defined(TARGET_LOONGARCH64)) && \
    !defined(TARGET_ABI32)
struct target_statfs {
    abi_long f_type;
    abi_long f_bsize;
    abi_long f_blocks;
    abi_long f_bfree;
    abi_long f_bavail;
    abi_long f_files;
    abi_long f_ffree;
    target_fsid_t f_fsid;
    abi_long f_namelen;
    abi_long f_frsize;
    abi_long f_flags;
    abi_long f_spare[4];
};

struct target_statfs64 {
    abi_long f_type;
    abi_long f_bsize;
    abi_long f_blocks;
    abi_long f_bfree;
    abi_long f_bavail;
    abi_long f_files;
    abi_long f_ffree;
    target_fsid_t f_fsid;
    abi_long f_namelen;
    abi_long f_frsize;
    abi_long f_flags;
    abi_long f_spare[4];
};
#elif defined(TARGET_S390X)
struct target_statfs {
    abi_int  f_type;
    abi_int  f_bsize;
    abi_long f_blocks;
    abi_long f_bfree;
    abi_long f_bavail;
    abi_long f_files;
    abi_long f_ffree;
    kernel_fsid_t f_fsid;
    abi_int  f_namelen;
    abi_int  f_frsize;
    abi_int  f_flags;
    abi_int  f_spare[4];

};

struct target_statfs64 {
    abi_int  f_type;
    abi_int  f_bsize;
    abi_long f_blocks;
    abi_long f_bfree;
    abi_long f_bavail;
    abi_long f_files;
    abi_long f_ffree;
    kernel_fsid_t f_fsid;
    abi_int  f_namelen;
    abi_int  f_frsize;
    abi_int  f_flags;
    abi_int  f_spare[4];
};
#else
struct target_statfs {
    abi_uint f_type;
    abi_uint f_bsize;
    abi_uint f_blocks;
    abi_uint f_bfree;
    abi_uint f_bavail;
    abi_uint f_files;
    abi_uint f_ffree;
    target_fsid_t f_fsid;
    abi_uint f_namelen;
    abi_uint f_frsize;
    abi_uint f_flags;
    abi_uint f_spare[4];
};

struct target_statfs64 {
    abi_uint f_type;
    abi_uint f_bsize;
    abi_ullong f_blocks;
    abi_ullong f_bfree;
    abi_ullong f_bavail;
    abi_ullong f_files;
    abi_ullong f_ffree;
    target_fsid_t f_fsid;
    abi_uint f_namelen;
    abi_uint f_frsize;
    abi_uint f_flags;
    abi_uint f_spare[4];
};
#endif

#define TARGET_F_LINUX_SPECIFIC_BASE 1024
#define TARGET_F_SETLEASE            (TARGET_F_LINUX_SPECIFIC_BASE + 0)
#define TARGET_F_GETLEASE            (TARGET_F_LINUX_SPECIFIC_BASE + 1)
#define TARGET_F_DUPFD_CLOEXEC       (TARGET_F_LINUX_SPECIFIC_BASE + 6)
#define TARGET_F_NOTIFY              (TARGET_F_LINUX_SPECIFIC_BASE + 2)
#define TARGET_F_SETPIPE_SZ          (TARGET_F_LINUX_SPECIFIC_BASE + 7)
#define TARGET_F_GETPIPE_SZ          (TARGET_F_LINUX_SPECIFIC_BASE + 8)
#define TARGET_F_ADD_SEALS           (TARGET_F_LINUX_SPECIFIC_BASE + 9)
#define TARGET_F_GET_SEALS           (TARGET_F_LINUX_SPECIFIC_BASE + 10)

#include "target_fcntl.h"

/* soundcard defines */
/* XXX: convert them all to arch independent entries */
#define TARGET_SNDCTL_COPR_HALT           TARGET_IOWR('C',  7, abi_int);
#define TARGET_SNDCTL_COPR_LOAD           0xcfb04301
#define TARGET_SNDCTL_COPR_RCODE          0xc0144303
#define TARGET_SNDCTL_COPR_RCVMSG         0x8fa44309
#define TARGET_SNDCTL_COPR_RDATA          0xc0144302
#define TARGET_SNDCTL_COPR_RESET          0x00004300
#define TARGET_SNDCTL_COPR_RUN            0xc0144306
#define TARGET_SNDCTL_COPR_SENDMSG        0xcfa44308
#define TARGET_SNDCTL_COPR_WCODE          0x40144305
#define TARGET_SNDCTL_COPR_WDATA          0x40144304
#define TARGET_SNDCTL_DSP_RESET           TARGET_IO('P', 0)
#define TARGET_SNDCTL_DSP_SYNC            TARGET_IO('P', 1)
#define TARGET_SNDCTL_DSP_SPEED           TARGET_IOWR('P', 2, abi_int)
#define TARGET_SNDCTL_DSP_STEREO          TARGET_IOWR('P', 3, abi_int)
#define TARGET_SNDCTL_DSP_GETBLKSIZE      TARGET_IOWR('P', 4, abi_int)
#define TARGET_SNDCTL_DSP_SETFMT          TARGET_IOWR('P', 5, abi_int)
#define TARGET_SNDCTL_DSP_CHANNELS        TARGET_IOWR('P', 6, abi_int)
#define TARGET_SOUND_PCM_WRITE_FILTER     TARGET_IOWR('P', 7, abi_int)
#define TARGET_SNDCTL_DSP_POST            TARGET_IO('P', 8)
#define TARGET_SNDCTL_DSP_SUBDIVIDE       TARGET_IOWR('P', 9, abi_int)
#define TARGET_SNDCTL_DSP_SETFRAGMENT     TARGET_IOWR('P',10, abi_int)
#define TARGET_SNDCTL_DSP_GETFMTS         TARGET_IOR('P', 11, abi_int)
#define TARGET_SNDCTL_DSP_GETOSPACE       TARGET_IORU('P',12)
#define TARGET_SNDCTL_DSP_GETISPACE       TARGET_IORU('P',13)
#define TARGET_SNDCTL_DSP_GETCAPS         TARGET_IOR('P', 15, abi_int)
#define TARGET_SNDCTL_DSP_GETTRIGGER      TARGET_IOR('P',16, abi_int)
#define TARGET_SNDCTL_DSP_GETIPTR         TARGET_IORU('P',17)
#define TARGET_SNDCTL_DSP_GETOPTR         TARGET_IORU('P',18)
#define TARGET_SNDCTL_DSP_MAPINBUF        TARGET_IORU('P', 19)
#define TARGET_SNDCTL_DSP_MAPOUTBUF       TARGET_IORU('P', 20)
#define TARGET_SNDCTL_DSP_NONBLOCK        0x0000500e
#define TARGET_SNDCTL_DSP_SAMPLESIZE      0xc0045005
#define TARGET_SNDCTL_DSP_SETDUPLEX       0x00005016
#define TARGET_SNDCTL_DSP_SETSYNCRO       0x00005015
#define TARGET_SNDCTL_DSP_SETTRIGGER      0x40045010
#define TARGET_SNDCTL_FM_4OP_ENABLE       0x4004510f
#define TARGET_SNDCTL_FM_LOAD_INSTR       0x40285107
#define TARGET_SNDCTL_MIDI_INFO           0xc074510c
#define TARGET_SNDCTL_MIDI_MPUCMD         0xc0216d02
#define TARGET_SNDCTL_MIDI_MPUMODE        0xc0046d01
#define TARGET_SNDCTL_MIDI_PRETIME        0xc0046d00
#define TARGET_SNDCTL_PMGR_ACCESS         0xcfb85110
#define TARGET_SNDCTL_PMGR_IFACE          0xcfb85001
#define TARGET_SNDCTL_SEQ_CTRLRATE        0xc0045103
#define TARGET_SNDCTL_SEQ_GETINCOUNT      0x80045105
#define TARGET_SNDCTL_SEQ_GETOUTCOUNT     0x80045104
#define TARGET_SNDCTL_SEQ_NRMIDIS         0x8004510b
#define TARGET_SNDCTL_SEQ_NRSYNTHS        0x8004510a
#define TARGET_SNDCTL_SEQ_OUTOFBAND       0x40085112
#define TARGET_SNDCTL_SEQ_PANIC           0x00005111
#define TARGET_SNDCTL_SEQ_PERCMODE        0x40045106
#define TARGET_SNDCTL_SEQ_RESET           0x00005100
#define TARGET_SNDCTL_SEQ_RESETSAMPLES    0x40045109
#define TARGET_SNDCTL_SEQ_SYNC            0x00005101
#define TARGET_SNDCTL_SEQ_TESTMIDI        0x40045108
#define TARGET_SNDCTL_SEQ_THRESHOLD       0x4004510d
#define TARGET_SNDCTL_SEQ_TRESHOLD        0x4004510d
#define TARGET_SNDCTL_SYNTH_INFO          0xc08c5102
#define TARGET_SNDCTL_SYNTH_MEMAVL        0xc004510e
#define TARGET_SNDCTL_TMR_CONTINUE        0x00005404
#define TARGET_SNDCTL_TMR_METRONOME       0x40045407
#define TARGET_SNDCTL_TMR_SELECT          0x40045408
#define TARGET_SNDCTL_TMR_SOURCE          0xc0045406
#define TARGET_SNDCTL_TMR_START           0x00005402
#define TARGET_SNDCTL_TMR_STOP            0x00005403
#define TARGET_SNDCTL_TMR_TEMPO           0xc0045405
#define TARGET_SNDCTL_TMR_TIMEBASE        0xc0045401
#define TARGET_SOUND_PCM_READ_RATE        0x80045002
#define TARGET_SOUND_PCM_READ_CHANNELS    0x80045006
#define TARGET_SOUND_PCM_READ_BITS        0x80045005
#define TARGET_SOUND_PCM_READ_FILTER      0x80045007
#define TARGET_SOUND_MIXER_INFO           TARGET_IOR ('M', 101, mixer_info)
#define TARGET_SOUND_MIXER_ACCESS         0xc0804d66
#define TARGET_SOUND_MIXER_PRIVATE1       TARGET_IOWR('M', 111, abi_int)
#define TARGET_SOUND_MIXER_PRIVATE2       TARGET_IOWR('M', 112, abi_int)
#define TARGET_SOUND_MIXER_PRIVATE3       TARGET_IOWR('M', 113, abi_int)
#define TARGET_SOUND_MIXER_PRIVATE4       TARGET_IOWR('M', 114, abi_int)
#define TARGET_SOUND_MIXER_PRIVATE5       TARGET_IOWR('M', 115, abi_int)

#define TARGET_MIXER_READ(dev)  TARGET_IOR('M', dev, abi_int)

#define TARGET_SOUND_MIXER_READ_VOLUME          TARGET_MIXER_READ(SOUND_MIXER_VOLUME)
#define TARGET_SOUND_MIXER_READ_BASS            TARGET_MIXER_READ(SOUND_MIXER_BASS)
#define TARGET_SOUND_MIXER_READ_TREBLE          TARGET_MIXER_READ(SOUND_MIXER_TREBLE)
#define TARGET_SOUND_MIXER_READ_SYNTH           TARGET_MIXER_READ(SOUND_MIXER_SYNTH)
#define TARGET_SOUND_MIXER_READ_PCM             TARGET_MIXER_READ(SOUND_MIXER_PCM)
#define TARGET_SOUND_MIXER_READ_SPEAKER         TARGET_MIXER_READ(SOUND_MIXER_SPEAKER)
#define TARGET_SOUND_MIXER_READ_LINE            TARGET_MIXER_READ(SOUND_MIXER_LINE)
#define TARGET_SOUND_MIXER_READ_MIC             TARGET_MIXER_READ(SOUND_MIXER_MIC)
#define TARGET_SOUND_MIXER_READ_CD              TARGET_MIXER_READ(SOUND_MIXER_CD)
#define TARGET_SOUND_MIXER_READ_IMIX            TARGET_MIXER_READ(SOUND_MIXER_IMIX)
#define TARGET_SOUND_MIXER_READ_ALTPCM          TARGET_MIXER_READ(SOUND_MIXER_ALTPCM)
#define TARGET_SOUND_MIXER_READ_RECLEV          TARGET_MIXER_READ(SOUND_MIXER_RECLEV)
#define TARGET_SOUND_MIXER_READ_IGAIN           TARGET_MIXER_READ(SOUND_MIXER_IGAIN)
#define TARGET_SOUND_MIXER_READ_OGAIN           TARGET_MIXER_READ(SOUND_MIXER_OGAIN)
#define TARGET_SOUND_MIXER_READ_LINE1           TARGET_MIXER_READ(SOUND_MIXER_LINE1)
#define TARGET_SOUND_MIXER_READ_LINE2           TARGET_MIXER_READ(SOUND_MIXER_LINE2)
#define TARGET_SOUND_MIXER_READ_LINE3           TARGET_MIXER_READ(SOUND_MIXER_LINE3)

/* Obsolete macros */
#define TARGET_SOUND_MIXER_READ_MUTE            TARGET_MIXER_READ(SOUND_MIXER_MUTE)
#define TARGET_SOUND_MIXER_READ_ENHANCE         TARGET_MIXER_READ(SOUND_MIXER_ENHANCE)
#define TARGET_SOUND_MIXER_READ_LOUD            TARGET_MIXER_READ(SOUND_MIXER_LOUD)

#define TARGET_SOUND_MIXER_READ_RECSRC          TARGET_MIXER_READ(SOUND_MIXER_RECSRC)
#define TARGET_SOUND_MIXER_READ_DEVMASK         TARGET_MIXER_READ(SOUND_MIXER_DEVMASK)
#define TARGET_SOUND_MIXER_READ_RECMASK         TARGET_MIXER_READ(SOUND_MIXER_RECMASK)
#define TARGET_SOUND_MIXER_READ_STEREODEVS      TARGET_MIXER_READ(SOUND_MIXER_STEREODEVS)
#define TARGET_SOUND_MIXER_READ_CAPS            TARGET_MIXER_READ(SOUND_MIXER_CAPS)

#define TARGET_MIXER_WRITE(dev)         TARGET_IOWR('M', dev, abi_int)

#define TARGET_SOUND_MIXER_WRITE_VOLUME TARGET_MIXER_WRITE(SOUND_MIXER_VOLUME)
#define TARGET_SOUND_MIXER_WRITE_BASS           TARGET_MIXER_WRITE(SOUND_MIXER_BASS)
#define TARGET_SOUND_MIXER_WRITE_TREBLE TARGET_MIXER_WRITE(SOUND_MIXER_TREBLE)
#define TARGET_SOUND_MIXER_WRITE_SYNTH          TARGET_MIXER_WRITE(SOUND_MIXER_SYNTH)
#define TARGET_SOUND_MIXER_WRITE_PCM            TARGET_MIXER_WRITE(SOUND_MIXER_PCM)
#define TARGET_SOUND_MIXER_WRITE_SPEAKER        TARGET_MIXER_WRITE(SOUND_MIXER_SPEAKER)
#define TARGET_SOUND_MIXER_WRITE_LINE           TARGET_MIXER_WRITE(SOUND_MIXER_LINE)
#define TARGET_SOUND_MIXER_WRITE_MIC            TARGET_MIXER_WRITE(SOUND_MIXER_MIC)
#define TARGET_SOUND_MIXER_WRITE_CD             TARGET_MIXER_WRITE(SOUND_MIXER_CD)
#define TARGET_SOUND_MIXER_WRITE_IMIX           TARGET_MIXER_WRITE(SOUND_MIXER_IMIX)
#define TARGET_SOUND_MIXER_WRITE_ALTPCM TARGET_MIXER_WRITE(SOUND_MIXER_ALTPCM)
#define TARGET_SOUND_MIXER_WRITE_RECLEV TARGET_MIXER_WRITE(SOUND_MIXER_RECLEV)
#define TARGET_SOUND_MIXER_WRITE_IGAIN          TARGET_MIXER_WRITE(SOUND_MIXER_IGAIN)
#define TARGET_SOUND_MIXER_WRITE_OGAIN          TARGET_MIXER_WRITE(SOUND_MIXER_OGAIN)
#define TARGET_SOUND_MIXER_WRITE_LINE1          TARGET_MIXER_WRITE(SOUND_MIXER_LINE1)
#define TARGET_SOUND_MIXER_WRITE_LINE2          TARGET_MIXER_WRITE(SOUND_MIXER_LINE2)
#define TARGET_SOUND_MIXER_WRITE_LINE3          TARGET_MIXER_WRITE(SOUND_MIXER_LINE3)

/* Obsolete macros */
#define TARGET_SOUND_MIXER_WRITE_MUTE           TARGET_MIXER_WRITE(SOUND_MIXER_MUTE)
#define TARGET_SOUND_MIXER_WRITE_ENHANCE        TARGET_MIXER_WRITE(SOUND_MIXER_ENHANCE)
#define TARGET_SOUND_MIXER_WRITE_LOUD           TARGET_MIXER_WRITE(SOUND_MIXER_LOUD)

#define TARGET_SOUND_MIXER_WRITE_RECSRC TARGET_MIXER_WRITE(SOUND_MIXER_RECSRC)

struct target_snd_timer_id {
    abi_int dev_class;
    abi_int dev_sclass;
    abi_int card;
    abi_int device;
    abi_int subdevice;
};

struct target_snd_timer_ginfo {
    struct target_snd_timer_id tid;
    abi_uint flags;
    abi_int card;
    unsigned char id[64];
    unsigned char name[80];
    abi_ulong reserved0;
    abi_ulong resolution;
    abi_ulong resolution_min;
    abi_ulong resolution_max;
    abi_uint clients;
    unsigned char reserved[32];
};

struct target_snd_timer_gparams {
    struct target_snd_timer_id tid;
    abi_ulong period_num;
    abi_ulong period_den;
    unsigned char reserved[32];
};

struct target_snd_timer_gstatus {
    struct target_snd_timer_id tid;
    abi_ulong resolution;
    abi_ulong resolution_num;
    abi_ulong resolution_den;
    unsigned char reserved[32];
};

struct target_snd_timer_select {
    struct target_snd_timer_id id;
    unsigned char reserved[32];
};

struct target_snd_timer_info {
    abi_uint flags;
    abi_int card;
    unsigned char id[64];
    unsigned char name[80];
    abi_ulong reserved0;
    abi_ulong resolution;
    unsigned char reserved[64];
};

struct target_snd_timer_status {
    struct target_timespec tstamp;
    abi_uint resolution;
    abi_uint lost;
    abi_uint overrun;
    abi_uint queue;
    unsigned char reserved[64];
};

/* alsa timer ioctls */
#define TARGET_SNDRV_TIMER_IOCTL_PVERSION     TARGET_IOR('T', 0x00, abi_int)
#define TARGET_SNDRV_TIMER_IOCTL_NEXT_DEVICE  TARGET_IOWR('T', 0x01,    \
                                                          struct snd_timer_id)
#define TARGET_SNDRV_TIMER_IOCTL_GINFO        TARGET_IOWR('T', 0x03,    \
                                                          struct target_snd_timer_ginfo)
#define TARGET_SNDRV_TIMER_IOCTL_GPARAMS      TARGET_IOW('T', 0x04,     \
                                                         struct target_snd_timer_gparams)
#define TARGET_SNDRV_TIMER_IOCTL_GSTATUS      TARGET_IOWR('T', 0x05,    \
                                                          struct target_snd_timer_gstatus)
#define TARGET_SNDRV_TIMER_IOCTL_SELECT       TARGET_IOW('T', 0x10,     \
                                                         struct target_snd_timer_select)
#define TARGET_SNDRV_TIMER_IOCTL_INFO         TARGET_IOR('T', 0x11,     \
                                                         struct target_snd_timer_info)
#define TARGET_SNDRV_TIMER_IOCTL_PARAMS       TARGET_IOW('T', 0x12,     \
                                                         struct snd_timer_params)
#define TARGET_SNDRV_TIMER_IOCTL_STATUS       TARGET_IOR('T', 0x14,     \
                                                         struct target_snd_timer_status)
#define TARGET_SNDRV_TIMER_IOCTL_START        TARGET_IO('T', 0xa0)
#define TARGET_SNDRV_TIMER_IOCTL_STOP         TARGET_IO('T', 0xa1)
#define TARGET_SNDRV_TIMER_IOCTL_CONTINUE     TARGET_IO('T', 0xa2)
#define TARGET_SNDRV_TIMER_IOCTL_PAUSE        TARGET_IO('T', 0xa3)

/* vfat ioctls */
#define TARGET_VFAT_IOCTL_READDIR_BOTH    TARGET_IORU('r', 1)
#define TARGET_VFAT_IOCTL_READDIR_SHORT   TARGET_IORU('r', 2)

struct target_mtop {
    abi_short mt_op;
    abi_int mt_count;
};

#if defined(TARGET_SPARC) || defined(TARGET_MIPS)
typedef abi_long target_kernel_daddr_t;
#else
typedef abi_int target_kernel_daddr_t;
#endif

struct target_mtget {
    abi_long mt_type;
    abi_long mt_resid;
    abi_long mt_dsreg;
    abi_long mt_gstat;
    abi_long mt_erreg;
    target_kernel_daddr_t mt_fileno;
    target_kernel_daddr_t mt_blkno;
};

struct target_mtpos {
    abi_long mt_blkno;
};

#define TARGET_MTIOCTOP        TARGET_IOW('m', 1, struct target_mtop)
#define TARGET_MTIOCGET        TARGET_IOR('m', 2, struct target_mtget)
#define TARGET_MTIOCPOS        TARGET_IOR('m', 3, struct target_mtpos)

/* kcov ioctls */
#define TARGET_KCOV_ENABLE     TARGET_IO('c', 100)
#define TARGET_KCOV_DISABLE    TARGET_IO('c', 101)
#define TARGET_KCOV_INIT_TRACE TARGET_IOR('c', 1, abi_ulong)

struct target_sysinfo {
    abi_long uptime;                /* Seconds since boot */
    abi_ulong loads[3];             /* 1, 5, and 15 minute load averages */
    abi_ulong totalram;             /* Total usable main memory size */
    abi_ulong freeram;              /* Available memory size */
    abi_ulong sharedram;            /* Amount of shared memory */
    abi_ulong bufferram;            /* Memory used by buffers */
    abi_ulong totalswap;            /* Total swap space size */
    abi_ulong freeswap;             /* swap space still available */
    abi_ushort procs;               /* Number of current processes */
    abi_ushort pad;                 /* explicit padding for m68k */
    abi_ulong totalhigh;            /* Total high memory size */
    abi_ulong freehigh;             /* Available high memory size */
    abi_uint mem_unit;              /* Memory unit size in bytes */
    char _f[20-2*sizeof(abi_long)-sizeof(int)]; /* Padding: libc5 uses this.. */
};

struct linux_dirent {
    long            d_ino;
    unsigned long   d_off;
    unsigned short  d_reclen;
    char            d_name[];
};

struct linux_dirent64 {
    uint64_t        d_ino;
    int64_t         d_off;
    unsigned short  d_reclen;
    unsigned char   d_type;
    char            d_name[];
};

struct target_mq_attr {
    abi_long mq_flags;
    abi_long mq_maxmsg;
    abi_long mq_msgsize;
    abi_long mq_curmsgs;
};

struct target_drm_version {
    abi_int version_major;
    abi_int version_minor;
    abi_int version_patchlevel;
    abi_ulong name_len;
    abi_ulong name;
    abi_ulong date_len;
    abi_ulong date;
    abi_ulong desc_len;
    abi_ulong desc;
};

struct target_drm_i915_getparam {
    abi_int param;
    abi_ulong value;
};

#include "socket.h"

#include "target_errno_defs.h"

#define FUTEX_WAIT              0
#define FUTEX_WAKE              1
#define FUTEX_FD                2
#define FUTEX_REQUEUE           3
#define FUTEX_CMP_REQUEUE       4
#define FUTEX_WAKE_OP           5
#define FUTEX_LOCK_PI           6
#define FUTEX_UNLOCK_PI         7
#define FUTEX_TRYLOCK_PI        8
#define FUTEX_WAIT_BITSET       9
#define FUTEX_WAKE_BITSET       10
#define FUTEX_WAIT_REQUEUE_PI   11
#define FUTEX_CMP_REQUEUE_PI    12
#define FUTEX_LOCK_PI2          13

#define FUTEX_PRIVATE_FLAG      128
#define FUTEX_CLOCK_REALTIME    256
#define FUTEX_CMD_MASK          ~(FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME)

#ifdef CONFIG_EPOLL
#if defined(TARGET_X86_64)
#define TARGET_EPOLL_PACKED QEMU_PACKED
#else
#define TARGET_EPOLL_PACKED
#endif

typedef union target_epoll_data {
    abi_ulong ptr;
    abi_int fd;
    abi_uint u32;
    abi_ullong u64;
} target_epoll_data_t;

struct target_epoll_event {
    abi_uint events;
    target_epoll_data_t data;
} TARGET_EPOLL_PACKED;

#define TARGET_EP_MAX_EVENTS (INT_MAX / sizeof(struct target_epoll_event))

#endif

struct target_ucred {
    abi_uint pid;
    abi_uint uid;
    abi_uint gid;
};

typedef abi_int target_timer_t;

#define TARGET_SIGEV_MAX_SIZE 64

/* This is architecture-specific but most architectures use the default */
#ifdef TARGET_MIPS
#define TARGET_SIGEV_PREAMBLE_SIZE (sizeof(abi_int) * 2 + sizeof(abi_long))
#else
#define TARGET_SIGEV_PREAMBLE_SIZE (sizeof(abi_int) * 2         \
                                    + sizeof(target_sigval_t))
#endif

#define TARGET_SIGEV_PAD_SIZE ((TARGET_SIGEV_MAX_SIZE           \
                                - TARGET_SIGEV_PREAMBLE_SIZE)   \
                               / sizeof(abi_int))

struct target_sigevent {
    target_sigval_t sigev_value;
    abi_int sigev_signo;
    abi_int sigev_notify;
    union {
        abi_int _pad[TARGET_SIGEV_PAD_SIZE];
        abi_int _tid;

        /* The kernel (and thus QEMU) never looks at these;
         * they're only used as part of the ABI between a
         * userspace program and libc.
         */
        struct {
            abi_ulong _function;
            abi_ulong _attribute;
        } _sigev_thread;
    } _sigev_un;
};

struct target_user_cap_header {
    abi_uint version;
    abi_int  pid;
};

struct target_user_cap_data {
    abi_uint effective;
    abi_uint permitted;
    abi_uint inheritable;
};

/* from kernel's include/linux/syslog.h */

/* Close the log.  Currently a NOP. */
#define TARGET_SYSLOG_ACTION_CLOSE          0
/* Open the log. Currently a NOP. */
#define TARGET_SYSLOG_ACTION_OPEN           1
/* Read from the log. */
#define TARGET_SYSLOG_ACTION_READ           2
/* Read all messages remaining in the ring buffer. */
#define TARGET_SYSLOG_ACTION_READ_ALL       3
/* Read and clear all messages remaining in the ring buffer */
#define TARGET_SYSLOG_ACTION_READ_CLEAR     4
/* Clear ring buffer. */
#define TARGET_SYSLOG_ACTION_CLEAR          5
/* Disable printk's to console */
#define TARGET_SYSLOG_ACTION_CONSOLE_OFF    6
/* Enable printk's to console */
#define TARGET_SYSLOG_ACTION_CONSOLE_ON     7
/* Set level of messages printed to console */
#define TARGET_SYSLOG_ACTION_CONSOLE_LEVEL  8
/* Return number of unread characters in the log buffer */
#define TARGET_SYSLOG_ACTION_SIZE_UNREAD    9
/* Return size of the log buffer */
#define TARGET_SYSLOG_ACTION_SIZE_BUFFER   10

struct target_statx_timestamp {
    abi_llong tv_sec;
    abi_uint tv_nsec;
    abi_int __reserved;
};

struct target_statx {
    /* 0x00 */
    abi_uint stx_mask;       /* What results were written [uncond] */
    abi_uint stx_blksize;    /* Preferred general I/O size [uncond] */
    abi_ullong stx_attributes; /* Flags conveying information about the file */
    /* 0x10 */
    abi_uint stx_nlink;      /* Number of hard links */
    abi_uint stx_uid;        /* User ID of owner */
    abi_uint stx_gid;        /* Group ID of owner */
    uint16_t stx_mode;       /* File mode */
    uint16_t __spare0[1];
    /* 0x20 */
    abi_ullong stx_ino;      /* Inode number */
    abi_ullong stx_size;     /* File size */
    abi_ullong stx_blocks;   /* Number of 512-byte blocks allocated */
    abi_ullong stx_attributes_mask; /* Mask to show what is supported */
    /* 0x40 */
    struct target_statx_timestamp  stx_atime;  /* Last access time */
    struct target_statx_timestamp  stx_btime;  /* File creation time */
    struct target_statx_timestamp  stx_ctime;  /* Last attribute change time */
    struct target_statx_timestamp  stx_mtime;  /* Last data modification time */
    /* 0x80 */
    abi_uint stx_rdev_major;   /* Device ID of special file [if bdev/cdev] */
    abi_uint stx_rdev_minor;
    abi_uint stx_dev_major; /* ID of device containing file [uncond] */
    abi_uint stx_dev_minor;
    /* 0x90 */
    abi_ullong __spare2[14]; /* Spare space for future expansion */
    /* 0x100 */
};

/* from kernel's include/linux/sched/types.h */
struct target_sched_attr {
    abi_uint size;
    abi_uint sched_policy;
    abi_ullong sched_flags;
    abi_int sched_nice;
    abi_uint sched_priority;
    abi_ullong sched_runtime;
    abi_ullong sched_deadline;
    abi_ullong sched_period;
    abi_uint sched_util_min;
    abi_uint sched_util_max;
};

struct target_sched_param {
    abi_int sched_priority;
};

#endif
