xref: /openbmc/qemu/linux-user/syscall_defs.h (revision 32f36bcefcd5710a00bb168bc40c407ae899b630)
131e31b8aSbellard 
231e31b8aSbellard /* common syscall defines for all architectures */
331e31b8aSbellard 
431e31b8aSbellard #define SOCKOP_socket           1
531e31b8aSbellard #define SOCKOP_bind             2
631e31b8aSbellard #define SOCKOP_connect          3
731e31b8aSbellard #define SOCKOP_listen           4
831e31b8aSbellard #define SOCKOP_accept           5
931e31b8aSbellard #define SOCKOP_getsockname      6
1031e31b8aSbellard #define SOCKOP_getpeername      7
1131e31b8aSbellard #define SOCKOP_socketpair       8
1231e31b8aSbellard #define SOCKOP_send             9
1331e31b8aSbellard #define SOCKOP_recv             10
1431e31b8aSbellard #define SOCKOP_sendto           11
1531e31b8aSbellard #define SOCKOP_recvfrom         12
1631e31b8aSbellard #define SOCKOP_shutdown         13
1731e31b8aSbellard #define SOCKOP_setsockopt       14
1831e31b8aSbellard #define SOCKOP_getsockopt       15
1931e31b8aSbellard #define SOCKOP_sendmsg          16
2031e31b8aSbellard #define SOCKOP_recvmsg          17
2131e31b8aSbellard 
227854b056Sbellard struct target_sockaddr {
237854b056Sbellard     uint16_t sa_family;
247854b056Sbellard     uint8_t sa_data[14];
257854b056Sbellard };
267854b056Sbellard 
2731e31b8aSbellard struct target_timeval {
2831e31b8aSbellard     target_long tv_sec;
2931e31b8aSbellard     target_long tv_usec;
3031e31b8aSbellard };
3131e31b8aSbellard 
321b6b029eSbellard struct target_timespec {
331b6b029eSbellard     target_long tv_sec;
341b6b029eSbellard     target_long tv_nsec;
351b6b029eSbellard };
361b6b029eSbellard 
3766fb9763Sbellard struct target_itimerval {
3866fb9763Sbellard     struct target_timeval it_interval;
3966fb9763Sbellard     struct target_timeval it_value;
4066fb9763Sbellard };
4166fb9763Sbellard 
42*32f36bceSbellard typedef target_long target_clock_t;
43*32f36bceSbellard 
44*32f36bceSbellard struct target_tms {
45*32f36bceSbellard     target_clock_t tms_utime;
46*32f36bceSbellard     target_clock_t tms_stime;
47*32f36bceSbellard     target_clock_t tms_cutime;
48*32f36bceSbellard     target_clock_t tms_cstime;
49*32f36bceSbellard };
50*32f36bceSbellard 
5131e31b8aSbellard struct target_iovec {
5231e31b8aSbellard     target_long iov_base;   /* Starting address */
5331e31b8aSbellard     target_long iov_len;   /* Number of bytes */
5431e31b8aSbellard };
5531e31b8aSbellard 
561a9353d2Sbellard struct target_msghdr {
571a9353d2Sbellard     target_long	 msg_name;	/* Socket name			*/
581a9353d2Sbellard     int		 msg_namelen;	/* Length of name		*/
591a9353d2Sbellard     target_long	 msg_iov;	/* Data blocks			*/
601a9353d2Sbellard     target_long	 msg_iovlen;	/* Number of blocks		*/
611a9353d2Sbellard     target_long  msg_control;	/* Per protocol magic (eg BSD file descriptor passing) */
621a9353d2Sbellard     target_long	 msg_controllen;	/* Length of cmsg list */
631a9353d2Sbellard     unsigned int msg_flags;
641a9353d2Sbellard };
651a9353d2Sbellard 
667854b056Sbellard struct target_cmsghdr {
677854b056Sbellard     target_long  cmsg_len;
687854b056Sbellard     int          cmsg_level;
697854b056Sbellard     int          cmsg_type;
707854b056Sbellard };
717854b056Sbellard 
727854b056Sbellard #define TARGET_CMSG_DATA(cmsg) ((unsigned char *) ((struct target_cmsghdr *) (cmsg) + 1))
737854b056Sbellard #define TARGET_CMSG_NXTHDR(mhdr, cmsg) __target_cmsg_nxthdr (mhdr, cmsg)
747854b056Sbellard #define TARGET_CMSG_FIRSTHDR(mhdr) \
757854b056Sbellard   ((size_t) tswapl((mhdr)->msg_controllen) >= sizeof (struct target_cmsghdr) \
767854b056Sbellard    ? (struct target_cmsghdr *) tswapl((mhdr)->msg_control) : (struct target_cmsghdr *) NULL)
777854b056Sbellard #define TARGET_CMSG_ALIGN(len) (((len) + sizeof (target_long) - 1) \
787854b056Sbellard                                & (size_t) ~(sizeof (target_long) - 1))
797854b056Sbellard #define TARGET_CMSG_SPACE(len) (TARGET_CMSG_ALIGN (len) \
807854b056Sbellard                                + TARGET_CMSG_ALIGN (sizeof (struct target_cmsghdr)))
817854b056Sbellard #define TARGET_CMSG_LEN(len)   (TARGET_CMSG_ALIGN (sizeof (struct target_cmsghdr)) + (len))
827854b056Sbellard 
837854b056Sbellard static __inline__ struct target_cmsghdr *
847854b056Sbellard __target_cmsg_nxthdr (struct target_msghdr *__mhdr, struct target_cmsghdr *__cmsg)
857854b056Sbellard {
867854b056Sbellard   if (tswapl(__cmsg->cmsg_len) < sizeof (struct target_cmsghdr))
877854b056Sbellard     /* The kernel header does this so there may be a reason.  */
887854b056Sbellard     return 0;
897854b056Sbellard 
907854b056Sbellard   __cmsg = (struct target_cmsghdr *) ((unsigned char *) __cmsg
917854b056Sbellard                                + TARGET_CMSG_ALIGN (tswapl(__cmsg->cmsg_len)));
927854b056Sbellard   if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) tswapl(__mhdr->msg_control)
937854b056Sbellard                                         + tswapl(__mhdr->msg_controllen))
947854b056Sbellard       || ((unsigned char *) __cmsg + TARGET_CMSG_ALIGN (tswapl(__cmsg->cmsg_len))
957854b056Sbellard           > ((unsigned char *) tswapl(__mhdr->msg_control)
967854b056Sbellard              + tswapl(__mhdr->msg_controllen))))
977854b056Sbellard     /* No more entries.  */
987854b056Sbellard     return 0;
997854b056Sbellard   return __cmsg;
1007854b056Sbellard }
1017854b056Sbellard 
1027854b056Sbellard 
10331e31b8aSbellard struct  target_rusage {
10431e31b8aSbellard         struct target_timeval ru_utime;        /* user time used */
10531e31b8aSbellard         struct target_timeval ru_stime;        /* system time used */
10631e31b8aSbellard         target_long    ru_maxrss;              /* maximum resident set size */
10731e31b8aSbellard         target_long    ru_ixrss;               /* integral shared memory size */
10831e31b8aSbellard         target_long    ru_idrss;               /* integral unshared data size */
10931e31b8aSbellard         target_long    ru_isrss;               /* integral unshared stack size */
11031e31b8aSbellard         target_long    ru_minflt;              /* page reclaims */
11131e31b8aSbellard         target_long    ru_majflt;              /* page faults */
11231e31b8aSbellard         target_long    ru_nswap;               /* swaps */
11331e31b8aSbellard         target_long    ru_inblock;             /* block input operations */
11431e31b8aSbellard         target_long    ru_oublock;             /* block output operations */
11531e31b8aSbellard         target_long    ru_msgsnd;              /* messages sent */
11631e31b8aSbellard         target_long    ru_msgrcv;              /* messages received */
11731e31b8aSbellard         target_long    ru_nsignals;            /* signals received */
11831e31b8aSbellard         target_long    ru_nvcsw;               /* voluntary context switches */
11931e31b8aSbellard         target_long    ru_nivcsw;              /* involuntary " */
12031e31b8aSbellard };
12131e31b8aSbellard 
12231e31b8aSbellard typedef struct {
12331e31b8aSbellard         int     val[2];
12431e31b8aSbellard } kernel_fsid_t;
12531e31b8aSbellard 
12672f03900Sbellard struct kernel_statfs {
12731e31b8aSbellard 	int f_type;
12831e31b8aSbellard 	int f_bsize;
12931e31b8aSbellard 	int f_blocks;
13031e31b8aSbellard 	int f_bfree;
13131e31b8aSbellard 	int f_bavail;
13231e31b8aSbellard 	int f_files;
13331e31b8aSbellard 	int f_ffree;
13431e31b8aSbellard         kernel_fsid_t f_fsid;
13531e31b8aSbellard 	int f_namelen;
13631e31b8aSbellard 	int f_spare[6];
13731e31b8aSbellard };
13831e31b8aSbellard 
139dab2ed99Sbellard struct target_dirent {
140dab2ed99Sbellard 	target_long	d_ino;
141dab2ed99Sbellard 	target_long	d_off;
142dab2ed99Sbellard 	unsigned short	d_reclen;
143dab2ed99Sbellard 	char		d_name[256]; /* We must not include limits.h! */
144dab2ed99Sbellard };
145dab2ed99Sbellard 
146dab2ed99Sbellard struct target_dirent64 {
147dab2ed99Sbellard 	uint64_t	d_ino;
148dab2ed99Sbellard 	int64_t		d_off;
149dab2ed99Sbellard 	unsigned short	d_reclen;
150dab2ed99Sbellard 	unsigned char	d_type;
151dab2ed99Sbellard 	char		d_name[256];
152dab2ed99Sbellard };
153dab2ed99Sbellard 
154dab2ed99Sbellard 
15531e31b8aSbellard /* mostly generic signal stuff */
15631e31b8aSbellard #define TARGET_SIG_DFL	((target_long)0)	/* default signal handling */
15731e31b8aSbellard #define TARGET_SIG_IGN	((target_long)1)	/* ignore signal */
15831e31b8aSbellard #define TARGET_SIG_ERR	((target_long)-1)	/* error return from signal */
15931e31b8aSbellard 
16031e31b8aSbellard #ifdef TARGET_MIPS
16131e31b8aSbellard #define TARGET_NSIG	   128
16231e31b8aSbellard #else
16331e31b8aSbellard #define TARGET_NSIG	   64
16431e31b8aSbellard #endif
16531e31b8aSbellard #define TARGET_NSIG_BPW	   TARGET_LONG_BITS
16631e31b8aSbellard #define TARGET_NSIG_WORDS  (TARGET_NSIG / TARGET_NSIG_BPW)
16731e31b8aSbellard 
16831e31b8aSbellard typedef struct {
16931e31b8aSbellard     target_ulong sig[TARGET_NSIG_WORDS];
17031e31b8aSbellard } target_sigset_t;
17131e31b8aSbellard 
17266fb9763Sbellard #ifdef BSWAP_NEEDED
17366fb9763Sbellard static inline void tswap_sigset(target_sigset_t *d, const target_sigset_t *s)
17466fb9763Sbellard {
17566fb9763Sbellard     int i;
17666fb9763Sbellard     for(i = 0;i < TARGET_NSIG_WORDS; i++)
17766fb9763Sbellard         d->sig[i] = tswapl(s->sig[i]);
17866fb9763Sbellard }
17966fb9763Sbellard #else
18066fb9763Sbellard static inline void tswap_sigset(target_sigset_t *d, const target_sigset_t *s)
18166fb9763Sbellard {
18266fb9763Sbellard     *d = *s;
18366fb9763Sbellard }
18466fb9763Sbellard #endif
18566fb9763Sbellard 
18666fb9763Sbellard static inline void target_siginitset(target_sigset_t *d, target_ulong set)
18766fb9763Sbellard {
18866fb9763Sbellard     int i;
18966fb9763Sbellard     d->sig[0] = set;
19066fb9763Sbellard     for(i = 1;i < TARGET_NSIG_WORDS; i++)
19166fb9763Sbellard         d->sig[i] = 0;
19266fb9763Sbellard }
19366fb9763Sbellard 
19466fb9763Sbellard void host_to_target_sigset(target_sigset_t *d, sigset_t *s);
19566fb9763Sbellard void target_to_host_sigset(sigset_t *d, target_sigset_t *s);
19666fb9763Sbellard void host_to_target_old_sigset(target_ulong *old_sigset,
19766fb9763Sbellard                                const sigset_t *sigset);
19866fb9763Sbellard void target_to_host_old_sigset(sigset_t *sigset,
19966fb9763Sbellard                                const target_ulong *old_sigset);
20066fb9763Sbellard struct target_sigaction;
20166fb9763Sbellard int do_sigaction(int sig, const struct target_sigaction *act,
20266fb9763Sbellard                  struct target_sigaction *oact);
20366fb9763Sbellard 
2049de5e440Sbellard struct target_rlimit {
2059de5e440Sbellard         target_ulong   rlim_cur;
2069de5e440Sbellard         target_ulong   rlim_max;
2079de5e440Sbellard };
2089de5e440Sbellard 
2099de5e440Sbellard struct target_pollfd {
2109de5e440Sbellard     int fd;           /* file descriptor */
2119de5e440Sbellard     short events;     /* requested events */
2129de5e440Sbellard     short revents;    /* returned events */
2139de5e440Sbellard };
2149de5e440Sbellard 
21531e31b8aSbellard /* Networking ioctls */
21631e31b8aSbellard #define TARGET_SIOCADDRT       0x890B          /* add routing table entry */
21731e31b8aSbellard #define TARGET_SIOCDELRT       0x890C          /* delete routing table entry */
21831e31b8aSbellard #define TARGET_SIOCGIFNAME     0x8910          /* get iface name               */
21931e31b8aSbellard #define TARGET_SIOCSIFLINK     0x8911          /* set iface channel            */
22031e31b8aSbellard #define TARGET_SIOCGIFCONF     0x8912          /* get iface list               */
22131e31b8aSbellard #define TARGET_SIOCGIFFLAGS    0x8913          /* get flags                    */
22231e31b8aSbellard #define TARGET_SIOCSIFFLAGS    0x8914          /* set flags                    */
22331e31b8aSbellard #define TARGET_SIOCGIFADDR     0x8915          /* get PA address               */
22431e31b8aSbellard #define TARGET_SIOCSIFADDR     0x8916          /* set PA address               */
22531e31b8aSbellard #define TARGET_SIOCGIFDSTADDR  0x8917          /* get remote PA address        */
22631e31b8aSbellard #define TARGET_SIOCSIFDSTADDR  0x8918          /* set remote PA address        */
22731e31b8aSbellard #define TARGET_SIOCGIFBRDADDR  0x8919          /* get broadcast PA address     */
22831e31b8aSbellard #define TARGET_SIOCSIFBRDADDR  0x891a          /* set broadcast PA address     */
22931e31b8aSbellard #define TARGET_SIOCGIFNETMASK  0x891b          /* get network PA mask          */
23031e31b8aSbellard #define TARGET_SIOCSIFNETMASK  0x891c          /* set network PA mask          */
23131e31b8aSbellard #define TARGET_SIOCGIFMETRIC   0x891d          /* get metric                   */
23231e31b8aSbellard #define TARGET_SIOCSIFMETRIC   0x891e          /* set metric                   */
23331e31b8aSbellard #define TARGET_SIOCGIFMEM      0x891f          /* get memory address (BSD)     */
23431e31b8aSbellard #define TARGET_SIOCSIFMEM      0x8920          /* set memory address (BSD)     */
23531e31b8aSbellard #define TARGET_SIOCGIFMTU      0x8921          /* get MTU size                 */
23631e31b8aSbellard #define TARGET_SIOCSIFMTU      0x8922          /* set MTU size                 */
23731e31b8aSbellard #define TARGET_SIOCSIFHWADDR   0x8924          /* set hardware address (NI)    */
23831e31b8aSbellard #define TARGET_SIOCGIFENCAP    0x8925          /* get/set slip encapsulation   */
23931e31b8aSbellard #define TARGET_SIOCSIFENCAP    0x8926
24031e31b8aSbellard #define TARGET_SIOCGIFHWADDR   0x8927          /* Get hardware address         */
24131e31b8aSbellard #define TARGET_SIOCGIFSLAVE    0x8929          /* Driver slaving support       */
24231e31b8aSbellard #define TARGET_SIOCSIFSLAVE    0x8930
24331e31b8aSbellard #define TARGET_SIOCADDMULTI    0x8931          /* Multicast address lists      */
24431e31b8aSbellard #define TARGET_SIOCDELMULTI    0x8932
24531e31b8aSbellard 
24631e31b8aSbellard /* Bridging control calls */
24731e31b8aSbellard #define TARGET_SIOCGIFBR       0x8940          /* Bridging support             */
24831e31b8aSbellard #define TARGET_SIOCSIFBR       0x8941          /* Set bridging options         */
24931e31b8aSbellard 
25031e31b8aSbellard #define TARGET_SIOCGIFTXQLEN   0x8942          /* Get the tx queue length      */
25131e31b8aSbellard #define TARGET_SIOCSIFTXQLEN   0x8943          /* Set the tx queue length      */
25231e31b8aSbellard 
25331e31b8aSbellard /* ARP cache control calls. */
25431e31b8aSbellard #define TARGET_OLD_SIOCDARP    0x8950          /* old delete ARP table entry   */
25531e31b8aSbellard #define TARGET_OLD_SIOCGARP    0x8951          /* old get ARP table entry      */
25631e31b8aSbellard #define TARGET_OLD_SIOCSARP    0x8952          /* old set ARP table entry      */
25731e31b8aSbellard #define TARGET_SIOCDARP        0x8953          /* delete ARP table entry       */
25831e31b8aSbellard #define TARGET_SIOCGARP        0x8954          /* get ARP table entry          */
25931e31b8aSbellard #define TARGET_SIOCSARP        0x8955          /* set ARP table entry          */
26031e31b8aSbellard 
26131e31b8aSbellard /* RARP cache control calls. */
26231e31b8aSbellard #define TARGET_SIOCDRARP       0x8960          /* delete RARP table entry      */
26331e31b8aSbellard #define TARGET_SIOCGRARP       0x8961          /* get RARP table entry         */
26431e31b8aSbellard #define TARGET_SIOCSRARP       0x8962          /* set RARP table entry         */
26531e31b8aSbellard 
26631e31b8aSbellard /* Driver configuration calls */
26731e31b8aSbellard #define TARGET_SIOCGIFMAP      0x8970          /* Get device parameters        */
26831e31b8aSbellard #define TARGET_SIOCSIFMAP      0x8971          /* Set device parameters        */
26931e31b8aSbellard 
27031e31b8aSbellard /* DLCI configuration calls */
27131e31b8aSbellard #define TARGET_SIOCADDDLCI     0x8980          /* Create new DLCI device       */
27231e31b8aSbellard #define TARGET_SIOCDELDLCI     0x8981          /* Delete DLCI device           */
27331e31b8aSbellard 
27431e31b8aSbellard 
27531e31b8aSbellard /* From <linux/fs.h> */
27631e31b8aSbellard 
27731e31b8aSbellard #define TARGET_BLKROSET   TARGET_IO(0x12,93) /* set device read-only (0 = read-write) */
27831e31b8aSbellard #define TARGET_BLKROGET   TARGET_IO(0x12,94) /* get read-only status (0 = read_write) */
27931e31b8aSbellard #define TARGET_BLKRRPART  TARGET_IO(0x12,95) /* re-read partition table */
28031e31b8aSbellard #define TARGET_BLKGETSIZE TARGET_IO(0x12,96) /* return device size /512 (long *arg) */
28131e31b8aSbellard #define TARGET_BLKFLSBUF  TARGET_IO(0x12,97) /* flush buffer cache */
28231e31b8aSbellard #define TARGET_BLKRASET   TARGET_IO(0x12,98) /* Set read ahead for block device */
28331e31b8aSbellard #define TARGET_BLKRAGET   TARGET_IO(0x12,99) /* get current read ahead setting */
28431e31b8aSbellard #define TARGET_BLKFRASET  TARGET_IO(0x12,100)/* set filesystem (mm/filemap.c) read-ahead */
28531e31b8aSbellard #define TARGET_BLKFRAGET  TARGET_IO(0x12,101)/* get filesystem (mm/filemap.c) read-ahead */
28631e31b8aSbellard #define TARGET_BLKSECTSET TARGET_IO(0x12,102)/* set max sectors per request (ll_rw_blk.c) */
28731e31b8aSbellard #define TARGET_BLKSECTGET TARGET_IO(0x12,103)/* get max sectors per request (ll_rw_blk.c) */
28831e31b8aSbellard #define TARGET_BLKSSZGET  TARGET_IO(0x12,104)/* get block device sector size */
28931e31b8aSbellard /* A jump here: 108-111 have been used for various private purposes. */
29031e31b8aSbellard #define TARGET_BLKBSZGET  TARGET_IOR(0x12,112,sizeof(int))
29131e31b8aSbellard #define TARGET_BLKBSZSET  TARGET_IOW(0x12,113,sizeof(int))
29231e31b8aSbellard #define TARGET_BLKGETSIZE64 TARGET_IOR(0x12,114,sizeof(uint64_t)) /* return device size in bytes (u64 *arg) */
29331e31b8aSbellard #define TARGET_FIBMAP     TARGET_IO(0x00,1)  /* bmap access */
29431e31b8aSbellard #define TARGET_FIGETBSZ   TARGET_IO(0x00,2)  /* get the block size used for bmap */
29531e31b8aSbellard 
29631e31b8aSbellard /* cdrom commands */
29731e31b8aSbellard #define TARGET_CDROMPAUSE		0x5301 /* Pause Audio Operation */
29831e31b8aSbellard #define TARGET_CDROMRESUME		0x5302 /* Resume paused Audio Operation */
29931e31b8aSbellard #define TARGET_CDROMPLAYMSF		0x5303 /* Play Audio MSF (struct cdrom_msf) */
30031e31b8aSbellard #define TARGET_CDROMPLAYTRKIND		0x5304 /* Play Audio Track/index
30131e31b8aSbellard                                            (struct cdrom_ti) */
30231e31b8aSbellard #define TARGET_CDROMREADTOCHDR		0x5305 /* Read TOC header
30331e31b8aSbellard                                            (struct cdrom_tochdr) */
30431e31b8aSbellard #define TARGET_CDROMREADTOCENTRY	0x5306 /* Read TOC entry
30531e31b8aSbellard                                            (struct cdrom_tocentry) */
30631e31b8aSbellard #define TARGET_CDROMSTOP		0x5307 /* Stop the cdrom drive */
30731e31b8aSbellard #define TARGET_CDROMSTART		0x5308 /* Start the cdrom drive */
30831e31b8aSbellard #define TARGET_CDROMEJECT		0x5309 /* Ejects the cdrom media */
30931e31b8aSbellard #define TARGET_CDROMVOLCTRL		0x530a /* Control output volume
31031e31b8aSbellard                                            (struct cdrom_volctrl) */
31131e31b8aSbellard #define TARGET_CDROMSUBCHNL		0x530b /* Read subchannel data
31231e31b8aSbellard                                            (struct cdrom_subchnl) */
31331e31b8aSbellard #define TARGET_CDROMREADMODE2		0x530c /* Read TARGET_CDROM mode 2 data (2336 Bytes)
31431e31b8aSbellard                                            (struct cdrom_read) */
31531e31b8aSbellard #define TARGET_CDROMREADMODE1		0x530d /* Read TARGET_CDROM mode 1 data (2048 Bytes)
31631e31b8aSbellard                                            (struct cdrom_read) */
31731e31b8aSbellard #define TARGET_CDROMREADAUDIO		0x530e /* (struct cdrom_read_audio) */
31831e31b8aSbellard #define TARGET_CDROMEJECT_SW		0x530f /* enable(1)/disable(0) auto-ejecting */
31931e31b8aSbellard #define TARGET_CDROMMULTISESSION	0x5310 /* Obtain the start-of-last-session
32031e31b8aSbellard                                            address of multi session disks
32131e31b8aSbellard                                            (struct cdrom_multisession) */
32231e31b8aSbellard #define TARGET_CDROM_GET_MCN		0x5311 /* Obtain the "Universal Product Code"
32331e31b8aSbellard                                            if available (struct cdrom_mcn) */
32431e31b8aSbellard #define TARGET_CDROM_GET_UPC		TARGET_CDROM_GET_MCN  /* This one is depricated,
32531e31b8aSbellard                                           but here anyway for compatability */
32631e31b8aSbellard #define TARGET_CDROMRESET		0x5312 /* hard-reset the drive */
32731e31b8aSbellard #define TARGET_CDROMVOLREAD		0x5313 /* Get the drive's volume setting
32831e31b8aSbellard                                           (struct cdrom_volctrl) */
32931e31b8aSbellard #define TARGET_CDROMREADRAW		0x5314	/* read data in raw mode (2352 Bytes)
33031e31b8aSbellard                                            (struct cdrom_read) */
33131e31b8aSbellard /*
33231e31b8aSbellard  * These ioctls are used only used in aztcd.c and optcd.c
33331e31b8aSbellard  */
33431e31b8aSbellard #define TARGET_CDROMREADCOOKED		0x5315	/* read data in cooked mode */
33531e31b8aSbellard #define TARGET_CDROMSEEK		0x5316  /* seek msf address */
33631e31b8aSbellard 
33731e31b8aSbellard /*
33831e31b8aSbellard  * This ioctl is only used by the scsi-cd driver.
33931e31b8aSbellard    It is for playing audio in logical block addressing mode.
34031e31b8aSbellard  */
34131e31b8aSbellard #define TARGET_CDROMPLAYBLK		0x5317	/* (struct cdrom_blk) */
34231e31b8aSbellard 
34331e31b8aSbellard /*
34431e31b8aSbellard  * These ioctls are only used in optcd.c
34531e31b8aSbellard  */
34631e31b8aSbellard #define TARGET_CDROMREADALL		0x5318	/* read all 2646 bytes */
34731e31b8aSbellard 
34831e31b8aSbellard /*
34931e31b8aSbellard  * These ioctls are (now) only in ide-cd.c for controlling
35031e31b8aSbellard  * drive spindown time.  They should be implemented in the
35131e31b8aSbellard  * Uniform driver, via generic packet commands, GPCMD_MODE_SELECT_10,
35231e31b8aSbellard  * GPCMD_MODE_SENSE_10 and the GPMODE_POWER_PAGE...
35331e31b8aSbellard  *  -Erik
35431e31b8aSbellard  */
35531e31b8aSbellard #define TARGET_CDROMGETSPINDOWN        0x531d
35631e31b8aSbellard #define TARGET_CDROMSETSPINDOWN        0x531e
35731e31b8aSbellard 
35831e31b8aSbellard /*
35931e31b8aSbellard  * These ioctls are implemented through the uniform CD-ROM driver
36031e31b8aSbellard  * They _will_ be adopted by all CD-ROM drivers, when all the CD-ROM
36131e31b8aSbellard  * drivers are eventually ported to the uniform CD-ROM driver interface.
36231e31b8aSbellard  */
36331e31b8aSbellard #define TARGET_CDROMCLOSETRAY		0x5319	/* pendant of CDROMEJECT */
36431e31b8aSbellard #define TARGET_CDROM_SET_OPTIONS	0x5320  /* Set behavior options */
36531e31b8aSbellard #define TARGET_CDROM_CLEAR_OPTIONS	0x5321  /* Clear behavior options */
36631e31b8aSbellard #define TARGET_CDROM_SELECT_SPEED	0x5322  /* Set the CD-ROM speed */
36731e31b8aSbellard #define TARGET_CDROM_SELECT_DISC	0x5323  /* Select disc (for juke-boxes) */
36831e31b8aSbellard #define TARGET_CDROM_MEDIA_CHANGED	0x5325  /* Check is media changed  */
36931e31b8aSbellard #define TARGET_CDROM_DRIVE_STATUS	0x5326  /* Get tray position, etc. */
37031e31b8aSbellard #define TARGET_CDROM_DISC_STATUS	0x5327  /* Get disc type, etc. */
37131e31b8aSbellard #define TARGET_CDROM_CHANGER_NSLOTS    0x5328  /* Get number of slots */
37231e31b8aSbellard #define TARGET_CDROM_LOCKDOOR		0x5329  /* lock or unlock door */
37331e31b8aSbellard #define TARGET_CDROM_DEBUG		0x5330	/* Turn debug messages on/off */
37431e31b8aSbellard #define TARGET_CDROM_GET_CAPABILITY	0x5331	/* get capabilities */
37531e31b8aSbellard 
37631e31b8aSbellard /* Note that scsi/scsi_ioctl.h also uses 0x5382 - 0x5386.
37731e31b8aSbellard  * Future CDROM ioctls should be kept below 0x537F
37831e31b8aSbellard  */
37931e31b8aSbellard 
38031e31b8aSbellard /* This ioctl is only used by sbpcd at the moment */
38131e31b8aSbellard #define TARGET_CDROMAUDIOBUFSIZ        0x5382	/* set the audio buffer size */
38231e31b8aSbellard 					/* conflict with SCSI_IOCTL_GET_IDLUN */
38331e31b8aSbellard 
38431e31b8aSbellard /* DVD-ROM Specific ioctls */
38531e31b8aSbellard #define TARGET_DVD_READ_STRUCT		0x5390  /* Read structure */
38631e31b8aSbellard #define TARGET_DVD_WRITE_STRUCT	0x5391  /* Write structure */
38731e31b8aSbellard #define TARGET_DVD_AUTH		0x5392  /* Authentication */
38831e31b8aSbellard 
38931e31b8aSbellard #define TARGET_CDROM_SEND_PACKET	0x5393	/* send a packet to the drive */
39031e31b8aSbellard #define TARGET_CDROM_NEXT_WRITABLE	0x5394	/* get next writable block */
39131e31b8aSbellard #define TARGET_CDROM_LAST_WRITTEN	0x5395	/* get last block written on disc */
39231e31b8aSbellard 
39331e31b8aSbellard /* HD commands */
39431e31b8aSbellard 
39531e31b8aSbellard /* hd/ide ctl's that pass (arg) ptrs to user space are numbered 0x030n/0x031n */
39631e31b8aSbellard #define TARGET_HDIO_GETGEO            0x0301  /* get device geometry */
39731e31b8aSbellard #define TARGET_HDIO_GET_UNMASKINTR    0x0302  /* get current unmask setting */
39831e31b8aSbellard #define TARGET_HDIO_GET_MULTCOUNT     0x0304  /* get current IDE blockmode setting */
39931e31b8aSbellard #define TARGET_HDIO_GET_IDENTITY      0x0307  /* get IDE identification info */
40031e31b8aSbellard #define TARGET_HDIO_GET_KEEPSETTINGS  0x0308  /* get keep-settings-on-reset flag */
40131e31b8aSbellard #define TARGET_HDIO_GET_32BIT         0x0309  /* get current io_32bit setting */
40231e31b8aSbellard #define TARGET_HDIO_GET_NOWERR        0x030a  /* get ignore-write-error flag */
40331e31b8aSbellard #define TARGET_HDIO_GET_DMA           0x030b  /* get use-dma flag */
40431e31b8aSbellard #define TARGET_HDIO_DRIVE_CMD         0x031f  /* execute a special drive command */
40531e31b8aSbellard 
40631e31b8aSbellard /* hd/ide ctl's that pass (arg) non-ptr values are numbered 0x032n/0x033n */
40731e31b8aSbellard #define TARGET_HDIO_SET_MULTCOUNT     0x0321  /* change IDE blockmode */
40831e31b8aSbellard #define TARGET_HDIO_SET_UNMASKINTR    0x0322  /* permit other irqs during I/O */
40931e31b8aSbellard #define TARGET_HDIO_SET_KEEPSETTINGS  0x0323  /* keep ioctl settings on reset */
41031e31b8aSbellard #define TARGET_HDIO_SET_32BIT         0x0324  /* change io_32bit flags */
41131e31b8aSbellard #define TARGET_HDIO_SET_NOWERR        0x0325  /* change ignore-write-error flag */
41231e31b8aSbellard #define TARGET_HDIO_SET_DMA           0x0326  /* change use-dma flag */
41331e31b8aSbellard #define TARGET_HDIO_SET_PIO_MODE      0x0327  /* reconfig interface to new speed */
414