1 /* common syscall defines for all architectures */ 2 3 /* Note: although the syscall numbers change between architectures, 4 most of them stay the same, so we handle it by puting ifdefs if 5 necessary */ 6 7 #include "syscall_nr.h" 8 9 #define SOCKOP_socket 1 10 #define SOCKOP_bind 2 11 #define SOCKOP_connect 3 12 #define SOCKOP_listen 4 13 #define SOCKOP_accept 5 14 #define SOCKOP_getsockname 6 15 #define SOCKOP_getpeername 7 16 #define SOCKOP_socketpair 8 17 #define SOCKOP_send 9 18 #define SOCKOP_recv 10 19 #define SOCKOP_sendto 11 20 #define SOCKOP_recvfrom 12 21 #define SOCKOP_shutdown 13 22 #define SOCKOP_setsockopt 14 23 #define SOCKOP_getsockopt 15 24 #define SOCKOP_sendmsg 16 25 #define SOCKOP_recvmsg 17 26 27 /* 28 * The following is for compatibility across the various Linux 29 * platforms. The i386 ioctl numbering scheme doesn't really enforce 30 * a type field. De facto, however, the top 8 bits of the lower 16 31 * bits are indeed used as a type field, so we might just as well make 32 * this explicit here. Please be sure to use the decoding macros 33 * below from now on. 34 */ 35 #define TARGET_IOC_NRBITS 8 36 #define TARGET_IOC_TYPEBITS 8 37 38 #if defined(TARGET_I386) || defined(TARGET_ARM) 39 40 #define TARGET_IOC_SIZEBITS 14 41 #define TARGET_IOC_DIRBITS 2 42 43 #define TARGET_IOC_NONE 0U 44 #define TARGET_IOC_WRITE 1U 45 #define TARGET_IOC_READ 2U 46 47 #elif defined(TARGET_PPC) || defined(TARGET_ALPHA) || defined(TARGET_SPARC) 48 49 #define TARGET_IOC_SIZEBITS 13 50 #define TARGET_IOC_DIRBITS 3 51 52 #define TARGET_IOC_NONE 1U 53 #define TARGET_IOC_READ 2U 54 #define TARGET_IOC_WRITE 4U 55 56 #else 57 #error unsupported CPU 58 #endif 59 60 #define TARGET_IOC_NRMASK ((1 << TARGET_IOC_NRBITS)-1) 61 #define TARGET_IOC_TYPEMASK ((1 << TARGET_IOC_TYPEBITS)-1) 62 #define TARGET_IOC_SIZEMASK ((1 << TARGET_IOC_SIZEBITS)-1) 63 #define TARGET_IOC_DIRMASK ((1 << TARGET_IOC_DIRBITS)-1) 64 65 #define TARGET_IOC_NRSHIFT 0 66 #define TARGET_IOC_TYPESHIFT (TARGET_IOC_NRSHIFT+TARGET_IOC_NRBITS) 67 #define TARGET_IOC_SIZESHIFT (TARGET_IOC_TYPESHIFT+TARGET_IOC_TYPEBITS) 68 #define TARGET_IOC_DIRSHIFT (TARGET_IOC_SIZESHIFT+TARGET_IOC_SIZEBITS) 69 70 #define TARGET_IOC(dir,type,nr,size) \ 71 (((dir) << TARGET_IOC_DIRSHIFT) | \ 72 ((type) << TARGET_IOC_TYPESHIFT) | \ 73 ((nr) << TARGET_IOC_NRSHIFT) | \ 74 ((size) << TARGET_IOC_SIZESHIFT)) 75 76 /* used to create numbers */ 77 #define TARGET_IO(type,nr) TARGET_IOC(TARGET_IOC_NONE,(type),(nr),0) 78 #define TARGET_IOR(type,nr,size) TARGET_IOC(TARGET_IOC_READ,(type),(nr),sizeof(size)) 79 #define TARGET_IOW(type,nr,size) TARGET_IOC(TARGET_IOC_WRITE,(type),(nr),sizeof(size)) 80 #define TARGET_IOWR(type,nr,size) TARGET_IOC(TARGET_IOC_READ|TARGET_IOC_WRITE,(type),(nr),sizeof(size)) 81 82 /* the size is automatically computed for these defines */ 83 #define TARGET_IORU(type,nr) TARGET_IOC(TARGET_IOC_READ,(type),(nr),TARGET_IOC_SIZEMASK) 84 #define TARGET_IOWU(type,nr) TARGET_IOC(TARGET_IOC_WRITE,(type),(nr),TARGET_IOC_SIZEMASK) 85 #define TARGET_IOWRU(type,nr) TARGET_IOC(TARGET_IOC_READ|TARGET_IOC_WRITE,(type),(nr),TARGET_IOC_SIZEMASK) 86 87 struct target_sockaddr { 88 uint16_t sa_family; 89 uint8_t sa_data[14]; 90 }; 91 92 struct target_timeval { 93 target_long tv_sec; 94 target_long tv_usec; 95 }; 96 97 struct target_timespec { 98 target_long tv_sec; 99 target_long tv_nsec; 100 }; 101 102 struct target_itimerval { 103 struct target_timeval it_interval; 104 struct target_timeval it_value; 105 }; 106 107 typedef target_long target_clock_t; 108 109 #define TARGET_HZ 100 110 111 struct target_tms { 112 target_clock_t tms_utime; 113 target_clock_t tms_stime; 114 target_clock_t tms_cutime; 115 target_clock_t tms_cstime; 116 }; 117 118 struct target_utimbuf { 119 target_long actime; 120 target_long modtime; 121 }; 122 123 struct target_sel_arg_struct { 124 target_long n; 125 target_long inp, outp, exp; 126 target_long tvp; 127 }; 128 129 struct target_iovec { 130 target_long iov_base; /* Starting address */ 131 target_long iov_len; /* Number of bytes */ 132 }; 133 134 struct target_msghdr { 135 target_long msg_name; /* Socket name */ 136 int msg_namelen; /* Length of name */ 137 target_long msg_iov; /* Data blocks */ 138 target_long msg_iovlen; /* Number of blocks */ 139 target_long msg_control; /* Per protocol magic (eg BSD file descriptor passing) */ 140 target_long msg_controllen; /* Length of cmsg list */ 141 unsigned int msg_flags; 142 }; 143 144 struct target_cmsghdr { 145 target_long cmsg_len; 146 int cmsg_level; 147 int cmsg_type; 148 }; 149 150 #define TARGET_CMSG_DATA(cmsg) ((unsigned char *) ((struct target_cmsghdr *) (cmsg) + 1)) 151 #define TARGET_CMSG_NXTHDR(mhdr, cmsg) __target_cmsg_nxthdr (mhdr, cmsg) 152 #define TARGET_CMSG_FIRSTHDR(mhdr) \ 153 ((size_t) tswapl((mhdr)->msg_controllen) >= sizeof (struct target_cmsghdr) \ 154 ? (struct target_cmsghdr *) tswapl((mhdr)->msg_control) : (struct target_cmsghdr *) NULL) 155 #define TARGET_CMSG_ALIGN(len) (((len) + sizeof (target_long) - 1) \ 156 & (size_t) ~(sizeof (target_long) - 1)) 157 #define TARGET_CMSG_SPACE(len) (TARGET_CMSG_ALIGN (len) \ 158 + TARGET_CMSG_ALIGN (sizeof (struct target_cmsghdr))) 159 #define TARGET_CMSG_LEN(len) (TARGET_CMSG_ALIGN (sizeof (struct target_cmsghdr)) + (len)) 160 161 static __inline__ struct target_cmsghdr * 162 __target_cmsg_nxthdr (struct target_msghdr *__mhdr, struct target_cmsghdr *__cmsg) 163 { 164 if (tswapl(__cmsg->cmsg_len) < sizeof (struct target_cmsghdr)) 165 /* The kernel header does this so there may be a reason. */ 166 return 0; 167 168 __cmsg = (struct target_cmsghdr *) ((unsigned char *) __cmsg 169 + TARGET_CMSG_ALIGN (tswapl(__cmsg->cmsg_len))); 170 if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) tswapl(__mhdr->msg_control) 171 + tswapl(__mhdr->msg_controllen)) 172 || ((unsigned char *) __cmsg + TARGET_CMSG_ALIGN (tswapl(__cmsg->cmsg_len)) 173 > ((unsigned char *) tswapl(__mhdr->msg_control) 174 + tswapl(__mhdr->msg_controllen)))) 175 /* No more entries. */ 176 return 0; 177 return __cmsg; 178 } 179 180 181 struct target_rusage { 182 struct target_timeval ru_utime; /* user time used */ 183 struct target_timeval ru_stime; /* system time used */ 184 target_long ru_maxrss; /* maximum resident set size */ 185 target_long ru_ixrss; /* integral shared memory size */ 186 target_long ru_idrss; /* integral unshared data size */ 187 target_long ru_isrss; /* integral unshared stack size */ 188 target_long ru_minflt; /* page reclaims */ 189 target_long ru_majflt; /* page faults */ 190 target_long ru_nswap; /* swaps */ 191 target_long ru_inblock; /* block input operations */ 192 target_long ru_oublock; /* block output operations */ 193 target_long ru_msgsnd; /* messages sent */ 194 target_long ru_msgrcv; /* messages received */ 195 target_long ru_nsignals; /* signals received */ 196 target_long ru_nvcsw; /* voluntary context switches */ 197 target_long ru_nivcsw; /* involuntary " */ 198 }; 199 200 typedef struct { 201 int val[2]; 202 } kernel_fsid_t; 203 204 struct kernel_statfs { 205 int f_type; 206 int f_bsize; 207 int f_blocks; 208 int f_bfree; 209 int f_bavail; 210 int f_files; 211 int f_ffree; 212 kernel_fsid_t f_fsid; 213 int f_namelen; 214 int f_spare[6]; 215 }; 216 217 struct target_dirent { 218 target_long d_ino; 219 target_long d_off; 220 unsigned short d_reclen; 221 char d_name[256]; /* We must not include limits.h! */ 222 }; 223 224 struct target_dirent64 { 225 uint64_t d_ino; 226 int64_t d_off; 227 unsigned short d_reclen; 228 unsigned char d_type; 229 char d_name[256]; 230 }; 231 232 233 /* mostly generic signal stuff */ 234 #define TARGET_SIG_DFL ((target_long)0) /* default signal handling */ 235 #define TARGET_SIG_IGN ((target_long)1) /* ignore signal */ 236 #define TARGET_SIG_ERR ((target_long)-1) /* error return from signal */ 237 238 #ifdef TARGET_MIPS 239 #define TARGET_NSIG 128 240 #else 241 #define TARGET_NSIG 64 242 #endif 243 #define TARGET_NSIG_BPW TARGET_LONG_BITS 244 #define TARGET_NSIG_WORDS (TARGET_NSIG / TARGET_NSIG_BPW) 245 246 typedef struct { 247 target_ulong sig[TARGET_NSIG_WORDS]; 248 } target_sigset_t; 249 250 #ifdef BSWAP_NEEDED 251 static inline void tswap_sigset(target_sigset_t *d, const target_sigset_t *s) 252 { 253 int i; 254 for(i = 0;i < TARGET_NSIG_WORDS; i++) 255 d->sig[i] = tswapl(s->sig[i]); 256 } 257 #else 258 static inline void tswap_sigset(target_sigset_t *d, const target_sigset_t *s) 259 { 260 *d = *s; 261 } 262 #endif 263 264 static inline void target_siginitset(target_sigset_t *d, target_ulong set) 265 { 266 int i; 267 d->sig[0] = set; 268 for(i = 1;i < TARGET_NSIG_WORDS; i++) 269 d->sig[i] = 0; 270 } 271 272 void host_to_target_sigset(target_sigset_t *d, const sigset_t *s); 273 void target_to_host_sigset(sigset_t *d, const target_sigset_t *s); 274 void host_to_target_old_sigset(target_ulong *old_sigset, 275 const sigset_t *sigset); 276 void target_to_host_old_sigset(sigset_t *sigset, 277 const target_ulong *old_sigset); 278 struct target_sigaction; 279 int do_sigaction(int sig, const struct target_sigaction *act, 280 struct target_sigaction *oact); 281 282 #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) || defined(TARGET_PPC) 283 284 #define TARGET_SA_NOCLDSTOP 0x00000001 285 #define TARGET_SA_NOCLDWAIT 0x00000002 /* not supported yet */ 286 #define TARGET_SA_SIGINFO 0x00000004 287 #define TARGET_SA_ONSTACK 0x08000000 288 #define TARGET_SA_RESTART 0x10000000 289 #define TARGET_SA_NODEFER 0x40000000 290 #define TARGET_SA_RESETHAND 0x80000000 291 #define TARGET_SA_RESTORER 0x04000000 292 293 #define TARGET_SIGHUP 1 294 #define TARGET_SIGINT 2 295 #define TARGET_SIGQUIT 3 296 #define TARGET_SIGILL 4 297 #define TARGET_SIGTRAP 5 298 #define TARGET_SIGABRT 6 299 #define TARGET_SIGIOT 6 300 #define TARGET_SIGBUS 7 301 #define TARGET_SIGFPE 8 302 #define TARGET_SIGKILL 9 303 #define TARGET_SIGUSR1 10 304 #define TARGET_SIGSEGV 11 305 #define TARGET_SIGUSR2 12 306 #define TARGET_SIGPIPE 13 307 #define TARGET_SIGALRM 14 308 #define TARGET_SIGTERM 15 309 #define TARGET_SIGSTKFLT 16 310 #define TARGET_SIGCHLD 17 311 #define TARGET_SIGCONT 18 312 #define TARGET_SIGSTOP 19 313 #define TARGET_SIGTSTP 20 314 #define TARGET_SIGTTIN 21 315 #define TARGET_SIGTTOU 22 316 #define TARGET_SIGURG 23 317 #define TARGET_SIGXCPU 24 318 #define TARGET_SIGXFSZ 25 319 #define TARGET_SIGVTALRM 26 320 #define TARGET_SIGPROF 27 321 #define TARGET_SIGWINCH 28 322 #define TARGET_SIGIO 29 323 #define TARGET_SIGPWR 30 324 #define TARGET_SIGSYS 31 325 #define TARGET_SIGRTMIN 32 326 327 #define TARGET_SIG_BLOCK 0 /* for blocking signals */ 328 #define TARGET_SIG_UNBLOCK 1 /* for unblocking signals */ 329 #define TARGET_SIG_SETMASK 2 /* for setting the signal mask */ 330 331 struct target_old_sigaction { 332 target_ulong _sa_handler; 333 target_ulong sa_mask; 334 target_ulong sa_flags; 335 target_ulong sa_restorer; 336 }; 337 338 struct target_sigaction { 339 target_ulong _sa_handler; 340 target_ulong sa_flags; 341 target_ulong sa_restorer; 342 target_sigset_t sa_mask; 343 }; 344 345 typedef union target_sigval { 346 int sival_int; 347 target_ulong sival_ptr; 348 } target_sigval_t; 349 350 #define TARGET_SI_MAX_SIZE 128 351 #define TARGET_SI_PAD_SIZE ((TARGET_SI_MAX_SIZE/sizeof(int)) - 3) 352 353 typedef struct target_siginfo { 354 int si_signo; 355 int si_errno; 356 int si_code; 357 358 union { 359 int _pad[TARGET_SI_PAD_SIZE]; 360 361 /* kill() */ 362 struct { 363 pid_t _pid; /* sender's pid */ 364 uid_t _uid; /* sender's uid */ 365 } _kill; 366 367 /* POSIX.1b timers */ 368 struct { 369 unsigned int _timer1; 370 unsigned int _timer2; 371 } _timer; 372 373 /* POSIX.1b signals */ 374 struct { 375 pid_t _pid; /* sender's pid */ 376 uid_t _uid; /* sender's uid */ 377 target_sigval_t _sigval; 378 } _rt; 379 380 /* SIGCHLD */ 381 struct { 382 pid_t _pid; /* which child */ 383 uid_t _uid; /* sender's uid */ 384 int _status; /* exit code */ 385 target_clock_t _utime; 386 target_clock_t _stime; 387 } _sigchld; 388 389 /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ 390 struct { 391 target_ulong _addr; /* faulting insn/memory ref. */ 392 } _sigfault; 393 394 /* SIGPOLL */ 395 struct { 396 int _band; /* POLL_IN, POLL_OUT, POLL_MSG */ 397 int _fd; 398 } _sigpoll; 399 } _sifields; 400 } target_siginfo_t; 401 402 /* 403 * si_code values 404 * Digital reserves positive values for kernel-generated signals. 405 */ 406 #define TARGET_SI_USER 0 /* sent by kill, sigsend, raise */ 407 #define TARGET_SI_KERNEL 0x80 /* sent by the kernel from somewhere */ 408 #define TARGET_SI_QUEUE -1 /* sent by sigqueue */ 409 #define TARGET_SI_TIMER -2 /* sent by timer expiration */ 410 #define TARGET_SI_MESGQ -3 /* sent by real time mesq state change */ 411 #define TARGET_SI_ASYNCIO -4 /* sent by AIO completion */ 412 #define TARGET_SI_SIGIO -5 /* sent by queued SIGIO */ 413 414 /* 415 * SIGILL si_codes 416 */ 417 #define TARGET_ILL_ILLOPN (2) /* illegal operand */ 418 419 /* 420 * SIGFPE si_codes 421 */ 422 #define TARGET_FPE_INTDIV (1) /* integer divide by zero */ 423 #define TARGET_FPE_INTOVF (2) /* integer overflow */ 424 #define TARGET_FPE_FLTDIV (3) /* floating point divide by zero */ 425 #define TARGET_FPE_FLTOVF (4) /* floating point overflow */ 426 #define TARGET_FPE_FLTUND (5) /* floating point underflow */ 427 #define TARGET_FPE_FLTRES (6) /* floating point inexact result */ 428 #define TARGET_FPE_FLTINV (7) /* floating point invalid operation */ 429 #define TARGET_FPE_FLTSUB (8) /* subscript out of range */ 430 #define TARGET_NSIGFPE 8 431 432 /* 433 * SIGSEGV si_codes 434 */ 435 #define TARGET_SEGV_MAPERR (1) /* address not mapped to object */ 436 #define TARGET_SEGV_ACCERR (2) /* invalid permissions for mapped object */ 437 438 /* 439 * SIGTRAP si_codes 440 */ 441 #define TARGET_TRAP_BRKPT (1) /* process breakpoint */ 442 #define TARGET_TRAP_TRACE (2) /* process trace trap */ 443 444 #endif /* defined(TARGET_I386) || defined(TARGET_ARM) */ 445 446 struct target_rlimit { 447 target_ulong rlim_cur; 448 target_ulong rlim_max; 449 }; 450 451 struct target_pollfd { 452 int fd; /* file descriptor */ 453 short events; /* requested events */ 454 short revents; /* returned events */ 455 }; 456 457 /* virtual terminal ioctls */ 458 #define TARGET_KIOCSOUND 0x4B2F /* start sound generation (0 for off) */ 459 #define TARGET_KDMKTONE 0x4B30 /* generate tone */ 460 #define TARGET_KDGKBTYPE 0x4b33 461 #define TARGET_KDGKBENT 0x4B46 /* gets one entry in translation table */ 462 #define TARGET_KDGKBSENT 0x4B48 /* gets one function key string entry */ 463 464 #define TARGET_SIOCATMARK 0x8905 465 466 /* Networking ioctls */ 467 #define TARGET_SIOCADDRT 0x890B /* add routing table entry */ 468 #define TARGET_SIOCDELRT 0x890C /* delete routing table entry */ 469 #define TARGET_SIOCGIFNAME 0x8910 /* get iface name */ 470 #define TARGET_SIOCSIFLINK 0x8911 /* set iface channel */ 471 #define TARGET_SIOCGIFCONF 0x8912 /* get iface list */ 472 #define TARGET_SIOCGIFFLAGS 0x8913 /* get flags */ 473 #define TARGET_SIOCSIFFLAGS 0x8914 /* set flags */ 474 #define TARGET_SIOCGIFADDR 0x8915 /* get PA address */ 475 #define TARGET_SIOCSIFADDR 0x8916 /* set PA address */ 476 #define TARGET_SIOCGIFDSTADDR 0x8917 /* get remote PA address */ 477 #define TARGET_SIOCSIFDSTADDR 0x8918 /* set remote PA address */ 478 #define TARGET_SIOCGIFBRDADDR 0x8919 /* get broadcast PA address */ 479 #define TARGET_SIOCSIFBRDADDR 0x891a /* set broadcast PA address */ 480 #define TARGET_SIOCGIFNETMASK 0x891b /* get network PA mask */ 481 #define TARGET_SIOCSIFNETMASK 0x891c /* set network PA mask */ 482 #define TARGET_SIOCGIFMETRIC 0x891d /* get metric */ 483 #define TARGET_SIOCSIFMETRIC 0x891e /* set metric */ 484 #define TARGET_SIOCGIFMEM 0x891f /* get memory address (BSD) */ 485 #define TARGET_SIOCSIFMEM 0x8920 /* set memory address (BSD) */ 486 #define TARGET_SIOCGIFMTU 0x8921 /* get MTU size */ 487 #define TARGET_SIOCSIFMTU 0x8922 /* set MTU size */ 488 #define TARGET_SIOCSIFHWADDR 0x8924 /* set hardware address (NI) */ 489 #define TARGET_SIOCGIFENCAP 0x8925 /* get/set slip encapsulation */ 490 #define TARGET_SIOCSIFENCAP 0x8926 491 #define TARGET_SIOCGIFHWADDR 0x8927 /* Get hardware address */ 492 #define TARGET_SIOCGIFSLAVE 0x8929 /* Driver slaving support */ 493 #define TARGET_SIOCSIFSLAVE 0x8930 494 #define TARGET_SIOCADDMULTI 0x8931 /* Multicast address lists */ 495 #define TARGET_SIOCDELMULTI 0x8932 496 497 /* Bridging control calls */ 498 #define TARGET_SIOCGIFBR 0x8940 /* Bridging support */ 499 #define TARGET_SIOCSIFBR 0x8941 /* Set bridging options */ 500 501 #define TARGET_SIOCGIFTXQLEN 0x8942 /* Get the tx queue length */ 502 #define TARGET_SIOCSIFTXQLEN 0x8943 /* Set the tx queue length */ 503 504 /* ARP cache control calls. */ 505 #define TARGET_OLD_SIOCDARP 0x8950 /* old delete ARP table entry */ 506 #define TARGET_OLD_SIOCGARP 0x8951 /* old get ARP table entry */ 507 #define TARGET_OLD_SIOCSARP 0x8952 /* old set ARP table entry */ 508 #define TARGET_SIOCDARP 0x8953 /* delete ARP table entry */ 509 #define TARGET_SIOCGARP 0x8954 /* get ARP table entry */ 510 #define TARGET_SIOCSARP 0x8955 /* set ARP table entry */ 511 512 /* RARP cache control calls. */ 513 #define TARGET_SIOCDRARP 0x8960 /* delete RARP table entry */ 514 #define TARGET_SIOCGRARP 0x8961 /* get RARP table entry */ 515 #define TARGET_SIOCSRARP 0x8962 /* set RARP table entry */ 516 517 /* Driver configuration calls */ 518 #define TARGET_SIOCGIFMAP 0x8970 /* Get device parameters */ 519 #define TARGET_SIOCSIFMAP 0x8971 /* Set device parameters */ 520 521 /* DLCI configuration calls */ 522 #define TARGET_SIOCADDDLCI 0x8980 /* Create new DLCI device */ 523 #define TARGET_SIOCDELDLCI 0x8981 /* Delete DLCI device */ 524 525 526 /* From <linux/fs.h> */ 527 528 #define TARGET_BLKROSET TARGET_IO(0x12,93) /* set device read-only (0 = read-write) */ 529 #define TARGET_BLKROGET TARGET_IO(0x12,94) /* get read-only status (0 = read_write) */ 530 #define TARGET_BLKRRPART TARGET_IO(0x12,95) /* re-read partition table */ 531 #define TARGET_BLKGETSIZE TARGET_IO(0x12,96) /* return device size /512 (long *arg) */ 532 #define TARGET_BLKFLSBUF TARGET_IO(0x12,97) /* flush buffer cache */ 533 #define TARGET_BLKRASET TARGET_IO(0x12,98) /* Set read ahead for block device */ 534 #define TARGET_BLKRAGET TARGET_IO(0x12,99) /* get current read ahead setting */ 535 #define TARGET_BLKFRASET TARGET_IO(0x12,100)/* set filesystem (mm/filemap.c) read-ahead */ 536 #define TARGET_BLKFRAGET TARGET_IO(0x12,101)/* get filesystem (mm/filemap.c) read-ahead */ 537 #define TARGET_BLKSECTSET TARGET_IO(0x12,102)/* set max sectors per request (ll_rw_blk.c) */ 538 #define TARGET_BLKSECTGET TARGET_IO(0x12,103)/* get max sectors per request (ll_rw_blk.c) */ 539 #define TARGET_BLKSSZGET TARGET_IO(0x12,104)/* get block device sector size */ 540 /* A jump here: 108-111 have been used for various private purposes. */ 541 #define TARGET_BLKBSZGET TARGET_IOR(0x12,112,sizeof(int)) 542 #define TARGET_BLKBSZSET TARGET_IOW(0x12,113,sizeof(int)) 543 #define TARGET_BLKGETSIZE64 TARGET_IOR(0x12,114,sizeof(uint64_t)) /* return device size in bytes (u64 *arg) */ 544 #define TARGET_FIBMAP TARGET_IO(0x00,1) /* bmap access */ 545 #define TARGET_FIGETBSZ TARGET_IO(0x00,2) /* get the block size used for bmap */ 546 547 /* cdrom commands */ 548 #define TARGET_CDROMPAUSE 0x5301 /* Pause Audio Operation */ 549 #define TARGET_CDROMRESUME 0x5302 /* Resume paused Audio Operation */ 550 #define TARGET_CDROMPLAYMSF 0x5303 /* Play Audio MSF (struct cdrom_msf) */ 551 #define TARGET_CDROMPLAYTRKIND 0x5304 /* Play Audio Track/index 552 (struct cdrom_ti) */ 553 #define TARGET_CDROMREADTOCHDR 0x5305 /* Read TOC header 554 (struct cdrom_tochdr) */ 555 #define TARGET_CDROMREADTOCENTRY 0x5306 /* Read TOC entry 556 (struct cdrom_tocentry) */ 557 #define TARGET_CDROMSTOP 0x5307 /* Stop the cdrom drive */ 558 #define TARGET_CDROMSTART 0x5308 /* Start the cdrom drive */ 559 #define TARGET_CDROMEJECT 0x5309 /* Ejects the cdrom media */ 560 #define TARGET_CDROMVOLCTRL 0x530a /* Control output volume 561 (struct cdrom_volctrl) */ 562 #define TARGET_CDROMSUBCHNL 0x530b /* Read subchannel data 563 (struct cdrom_subchnl) */ 564 #define TARGET_CDROMREADMODE2 0x530c /* Read TARGET_CDROM mode 2 data (2336 Bytes) 565 (struct cdrom_read) */ 566 #define TARGET_CDROMREADMODE1 0x530d /* Read TARGET_CDROM mode 1 data (2048 Bytes) 567 (struct cdrom_read) */ 568 #define TARGET_CDROMREADAUDIO 0x530e /* (struct cdrom_read_audio) */ 569 #define TARGET_CDROMEJECT_SW 0x530f /* enable(1)/disable(0) auto-ejecting */ 570 #define TARGET_CDROMMULTISESSION 0x5310 /* Obtain the start-of-last-session 571 address of multi session disks 572 (struct cdrom_multisession) */ 573 #define TARGET_CDROM_GET_MCN 0x5311 /* Obtain the "Universal Product Code" 574 if available (struct cdrom_mcn) */ 575 #define TARGET_CDROM_GET_UPC TARGET_CDROM_GET_MCN /* This one is depricated, 576 but here anyway for compatability */ 577 #define TARGET_CDROMRESET 0x5312 /* hard-reset the drive */ 578 #define TARGET_CDROMVOLREAD 0x5313 /* Get the drive's volume setting 579 (struct cdrom_volctrl) */ 580 #define TARGET_CDROMREADRAW 0x5314 /* read data in raw mode (2352 Bytes) 581 (struct cdrom_read) */ 582 /* 583 * These ioctls are used only used in aztcd.c and optcd.c 584 */ 585 #define TARGET_CDROMREADCOOKED 0x5315 /* read data in cooked mode */ 586 #define TARGET_CDROMSEEK 0x5316 /* seek msf address */ 587 588 /* 589 * This ioctl is only used by the scsi-cd driver. 590 It is for playing audio in logical block addressing mode. 591 */ 592 #define TARGET_CDROMPLAYBLK 0x5317 /* (struct cdrom_blk) */ 593 594 /* 595 * These ioctls are only used in optcd.c 596 */ 597 #define TARGET_CDROMREADALL 0x5318 /* read all 2646 bytes */ 598 599 /* 600 * These ioctls are (now) only in ide-cd.c for controlling 601 * drive spindown time. They should be implemented in the 602 * Uniform driver, via generic packet commands, GPCMD_MODE_SELECT_10, 603 * GPCMD_MODE_SENSE_10 and the GPMODE_POWER_PAGE... 604 * -Erik 605 */ 606 #define TARGET_CDROMGETSPINDOWN 0x531d 607 #define TARGET_CDROMSETSPINDOWN 0x531e 608 609 /* 610 * These ioctls are implemented through the uniform CD-ROM driver 611 * They _will_ be adopted by all CD-ROM drivers, when all the CD-ROM 612 * drivers are eventually ported to the uniform CD-ROM driver interface. 613 */ 614 #define TARGET_CDROMCLOSETRAY 0x5319 /* pendant of CDROMEJECT */ 615 #define TARGET_CDROM_SET_OPTIONS 0x5320 /* Set behavior options */ 616 #define TARGET_CDROM_CLEAR_OPTIONS 0x5321 /* Clear behavior options */ 617 #define TARGET_CDROM_SELECT_SPEED 0x5322 /* Set the CD-ROM speed */ 618 #define TARGET_CDROM_SELECT_DISC 0x5323 /* Select disc (for juke-boxes) */ 619 #define TARGET_CDROM_MEDIA_CHANGED 0x5325 /* Check is media changed */ 620 #define TARGET_CDROM_DRIVE_STATUS 0x5326 /* Get tray position, etc. */ 621 #define TARGET_CDROM_DISC_STATUS 0x5327 /* Get disc type, etc. */ 622 #define TARGET_CDROM_CHANGER_NSLOTS 0x5328 /* Get number of slots */ 623 #define TARGET_CDROM_LOCKDOOR 0x5329 /* lock or unlock door */ 624 #define TARGET_CDROM_DEBUG 0x5330 /* Turn debug messages on/off */ 625 #define TARGET_CDROM_GET_CAPABILITY 0x5331 /* get capabilities */ 626 627 /* Note that scsi/scsi_ioctl.h also uses 0x5382 - 0x5386. 628 * Future CDROM ioctls should be kept below 0x537F 629 */ 630 631 /* This ioctl is only used by sbpcd at the moment */ 632 #define TARGET_CDROMAUDIOBUFSIZ 0x5382 /* set the audio buffer size */ 633 /* conflict with SCSI_IOCTL_GET_IDLUN */ 634 635 /* DVD-ROM Specific ioctls */ 636 #define TARGET_DVD_READ_STRUCT 0x5390 /* Read structure */ 637 #define TARGET_DVD_WRITE_STRUCT 0x5391 /* Write structure */ 638 #define TARGET_DVD_AUTH 0x5392 /* Authentication */ 639 640 #define TARGET_CDROM_SEND_PACKET 0x5393 /* send a packet to the drive */ 641 #define TARGET_CDROM_NEXT_WRITABLE 0x5394 /* get next writable block */ 642 #define TARGET_CDROM_LAST_WRITTEN 0x5395 /* get last block written on disc */ 643 644 /* HD commands */ 645 646 /* hd/ide ctl's that pass (arg) ptrs to user space are numbered 0x030n/0x031n */ 647 #define TARGET_HDIO_GETGEO 0x0301 /* get device geometry */ 648 #define TARGET_HDIO_GET_UNMASKINTR 0x0302 /* get current unmask setting */ 649 #define TARGET_HDIO_GET_MULTCOUNT 0x0304 /* get current IDE blockmode setting */ 650 #define TARGET_HDIO_GET_KEEPSETTINGS 0x0308 /* get keep-settings-on-reset flag */ 651 #define TARGET_HDIO_GET_32BIT 0x0309 /* get current io_32bit setting */ 652 #define TARGET_HDIO_GET_NOWERR 0x030a /* get ignore-write-error flag */ 653 #define TARGET_HDIO_GET_DMA 0x030b /* get use-dma flag */ 654 #define TARGET_HDIO_GET_IDENTITY 0x030d /* get IDE identification info */ 655 #define TARGET_HDIO_DRIVE_CMD 0x031f /* execute a special drive command */ 656 657 /* hd/ide ctl's that pass (arg) non-ptr values are numbered 0x032n/0x033n */ 658 #define TARGET_HDIO_SET_MULTCOUNT 0x0321 /* change IDE blockmode */ 659 #define TARGET_HDIO_SET_UNMASKINTR 0x0322 /* permit other irqs during I/O */ 660 #define TARGET_HDIO_SET_KEEPSETTINGS 0x0323 /* keep ioctl settings on reset */ 661 #define TARGET_HDIO_SET_32BIT 0x0324 /* change io_32bit flags */ 662 #define TARGET_HDIO_SET_NOWERR 0x0325 /* change ignore-write-error flag */ 663 #define TARGET_HDIO_SET_DMA 0x0326 /* change use-dma flag */ 664 #define TARGET_HDIO_SET_PIO_MODE 0x0327 /* reconfig interface to new speed */ 665 666 667 /* from asm/termbits.h */ 668 669 #define TARGET_NCC 8 670 struct target_termio { 671 unsigned short c_iflag; /* input mode flags */ 672 unsigned short c_oflag; /* output mode flags */ 673 unsigned short c_cflag; /* control mode flags */ 674 unsigned short c_lflag; /* local mode flags */ 675 unsigned char c_line; /* line discipline */ 676 unsigned char c_cc[TARGET_NCC]; /* control characters */ 677 }; 678 679 struct target_winsize { 680 unsigned short ws_row; 681 unsigned short ws_col; 682 unsigned short ws_xpixel; 683 unsigned short ws_ypixel; 684 }; 685 686 #include "termbits.h" 687 688 #define TARGET_MAP_SHARED 0x01 /* Share changes */ 689 #define TARGET_MAP_PRIVATE 0x02 /* Changes are private */ 690 #define TARGET_MAP_TYPE 0x0f /* Mask for type of mapping */ 691 #define TARGET_MAP_FIXED 0x10 /* Interpret addr exactly */ 692 #define TARGET_MAP_ANONYMOUS 0x20 /* don't use a file */ 693 694 #define TARGET_MAP_GROWSDOWN 0x0100 /* stack-like segment */ 695 #define TARGET_MAP_DENYWRITE 0x0800 /* ETXTBSY */ 696 #define TARGET_MAP_EXECUTABLE 0x1000 /* mark it as an executable */ 697 #define TARGET_MAP_LOCKED 0x2000 /* pages are locked */ 698 #define TARGET_MAP_NORESERVE 0x4000 /* don't check for reservations */ 699 700 #if defined(TARGET_I386) || defined(TARGET_ARM) 701 struct target_stat { 702 unsigned short st_dev; 703 unsigned short __pad1; 704 target_ulong st_ino; 705 unsigned short st_mode; 706 unsigned short st_nlink; 707 unsigned short st_uid; 708 unsigned short st_gid; 709 unsigned short st_rdev; 710 unsigned short __pad2; 711 target_ulong st_size; 712 target_ulong st_blksize; 713 target_ulong st_blocks; 714 target_ulong target_st_atime; 715 target_ulong __unused1; 716 target_ulong target_st_mtime; 717 target_ulong __unused2; 718 target_ulong target_st_ctime; 719 target_ulong __unused3; 720 target_ulong __unused4; 721 target_ulong __unused5; 722 }; 723 724 /* This matches struct stat64 in glibc2.1, hence the absolutely 725 * insane amounts of padding around dev_t's. 726 */ 727 struct target_stat64 { 728 unsigned short st_dev; 729 unsigned char __pad0[10]; 730 731 #define TARGET_STAT64_HAS_BROKEN_ST_INO 1 732 target_ulong __st_ino; 733 734 unsigned int st_mode; 735 unsigned int st_nlink; 736 737 target_ulong st_uid; 738 target_ulong st_gid; 739 740 unsigned short st_rdev; 741 unsigned char __pad3[10]; 742 743 long long st_size; 744 target_ulong st_blksize; 745 746 target_ulong st_blocks; /* Number 512-byte blocks allocated. */ 747 target_ulong __pad4; /* future possible st_blocks high bits */ 748 749 target_ulong target_st_atime; 750 target_ulong __pad5; 751 752 target_ulong target_st_mtime; 753 target_ulong __pad6; 754 755 target_ulong target_st_ctime; 756 target_ulong __pad7; /* will be high 32 bits of ctime someday */ 757 758 unsigned long long st_ino; 759 } __attribute__((packed)); 760 761 #elif defined(TARGET_SPARC) 762 763 struct target_stat { 764 unsigned short st_dev; 765 target_ulong st_ino; 766 unsigned short st_mode; 767 short st_nlink; 768 unsigned short st_uid; 769 unsigned short st_gid; 770 unsigned short st_rdev; 771 target_long st_size; 772 target_long target_st_atime; 773 target_ulong __unused1; 774 target_long target_st_mtime; 775 target_ulong __unused2; 776 target_long target_st_ctime; 777 target_ulong __unused3; 778 target_long st_blksize; 779 target_long st_blocks; 780 target_ulong __unused4[2]; 781 }; 782 783 struct target_stat64 { 784 unsigned char __pad0[6]; 785 unsigned short st_dev; 786 787 uint64_t st_ino; 788 789 unsigned int st_mode; 790 unsigned int st_nlink; 791 792 unsigned int st_uid; 793 unsigned int st_gid; 794 795 unsigned char __pad2[6]; 796 unsigned short st_rdev; 797 798 unsigned char __pad3[8]; 799 800 int64_t st_size; 801 unsigned int st_blksize; 802 803 unsigned char __pad4[8]; 804 unsigned int st_blocks; 805 806 unsigned int target_st_atime; 807 unsigned int __unused1; 808 809 unsigned int target_st_mtime; 810 unsigned int __unused2; 811 812 unsigned int target_st_ctime; 813 unsigned int __unused3; 814 815 unsigned int __unused4; 816 unsigned int __unused5; 817 }; 818 819 #elif defined(TARGET_PPC) 820 821 struct target_stat { 822 unsigned short st_dev; 823 target_ulong st_ino; 824 unsigned int st_mode; 825 unsigned short st_nlink; 826 unsigned int st_uid; 827 unsigned int st_gid; 828 unsigned short st_rdev; 829 target_ulong st_size; 830 target_ulong st_blksize; 831 target_ulong st_blocks; 832 target_ulong target_st_atime; 833 target_ulong __unused1; 834 target_ulong target_st_mtime; 835 target_ulong __unused2; 836 target_ulong target_st_ctime; 837 target_ulong __unused3; 838 target_ulong __unused4; 839 target_ulong __unused5; 840 }; 841 842 struct target_stat64 { 843 unsigned long long st_dev; 844 unsigned long long st_ino; 845 unsigned int st_mode; 846 unsigned int st_nlink; 847 unsigned int st_uid; 848 unsigned int st_gid; 849 unsigned long long st_rdev; 850 long long pad0; 851 long long st_size; 852 target_ulong st_blksize; 853 target_ulong pad1; 854 long long st_blocks; /* Number 512-byte blocks allocated. */ 855 target_ulong target_st_atime; 856 target_ulong target_st_atime_nsec; 857 target_ulong target_st_mtime; 858 target_ulong target_st_mtime_nsec; 859 target_ulong target_st_ctime; 860 target_ulong target_st_ctime_nsec; 861 target_ulong __unused4; 862 target_ulong __unused5; 863 }; 864 865 #endif /* defined(TARGET_PPC) */ 866 867 #define TARGET_F_DUPFD 0 /* dup */ 868 #define TARGET_F_GETFD 1 /* get close_on_exec */ 869 #define TARGET_F_SETFD 2 /* set/clear close_on_exec */ 870 #define TARGET_F_GETFL 3 /* get file->f_flags */ 871 #define TARGET_F_SETFL 4 /* set file->f_flags */ 872 873 #if defined(TARGET_ALPHA) 874 #define TARGET_F_GETLK 7 875 #define TARGET_F_SETLK 8 876 #define TARGET_F_SETLKW 9 877 #define TARGET_F_SETOWN 5 /* for sockets. */ 878 #define TARGET_F_GETOWN 6 /* for sockets. */ 879 #else 880 #define TARGET_F_GETLK 5 881 #define TARGET_F_SETLK 6 882 #define TARGET_F_SETLKW 7 883 #define TARGET_F_SETOWN 8 /* for sockets. */ 884 #define TARGET_F_GETOWN 9 /* for sockets. */ 885 #endif 886 887 #define TARGET_F_SETSIG 10 /* for sockets. */ 888 #define TARGET_F_GETSIG 11 /* for sockets. */ 889 890 #define TARGET_F_GETLK64 12 /* using 'struct flock64' */ 891 #define TARGET_F_SETLK64 13 892 #define TARGET_F_SETLKW64 14 893 894 struct target_flock { 895 short l_type; 896 short l_whence; 897 target_ulong l_start; 898 target_ulong l_len; 899 int l_pid; 900 }; 901 902 struct target_flock64 { 903 short l_type; 904 short l_whence; 905 unsigned long long l_start; 906 unsigned long long l_len; 907 int l_pid; 908 }; 909 910 911 /* soundcard defines */ 912 /* XXX: convert them all to arch indepedent entries */ 913 #define TARGET_SNDCTL_COPR_HALT TARGET_IOWR('C', 7, int); 914 #define TARGET_SNDCTL_COPR_LOAD 0xcfb04301 915 #define TARGET_SNDCTL_COPR_RCODE 0xc0144303 916 #define TARGET_SNDCTL_COPR_RCVMSG 0x8fa44309 917 #define TARGET_SNDCTL_COPR_RDATA 0xc0144302 918 #define TARGET_SNDCTL_COPR_RESET 0x00004300 919 #define TARGET_SNDCTL_COPR_RUN 0xc0144306 920 #define TARGET_SNDCTL_COPR_SENDMSG 0xcfa44308 921 #define TARGET_SNDCTL_COPR_WCODE 0x40144305 922 #define TARGET_SNDCTL_COPR_WDATA 0x40144304 923 #define TARGET_SNDCTL_DSP_RESET TARGET_IO('P', 0) 924 #define TARGET_SNDCTL_DSP_SYNC TARGET_IO('P', 1) 925 #define TARGET_SNDCTL_DSP_SPEED TARGET_IOWR('P', 2, int) 926 #define TARGET_SNDCTL_DSP_STEREO TARGET_IOWR('P', 3, int) 927 #define TARGET_SNDCTL_DSP_GETBLKSIZE TARGET_IOWR('P', 4, int) 928 #define TARGET_SNDCTL_DSP_SETFMT TARGET_IOWR('P', 5, int) 929 #define TARGET_SNDCTL_DSP_CHANNELS TARGET_IOWR('P', 6, int) 930 #define TARGET_SOUND_PCM_WRITE_FILTER TARGET_IOWR('P', 7, int) 931 #define TARGET_SNDCTL_DSP_POST TARGET_IO('P', 8) 932 #define TARGET_SNDCTL_DSP_SUBDIVIDE TARGET_IOWR('P', 9, int) 933 #define TARGET_SNDCTL_DSP_SETFRAGMENT TARGET_IOWR('P',10, int) 934 #define TARGET_SNDCTL_DSP_GETFMTS TARGET_IOR('P', 11, int) 935 #define TARGET_SNDCTL_DSP_GETOSPACE TARGET_IORU('P',12) 936 #define TARGET_SNDCTL_DSP_GETISPACE TARGET_IORU('P',13) 937 #define TARGET_SNDCTL_DSP_GETCAPS TARGET_IOR('P', 15, int) 938 #define TARGET_SNDCTL_DSP_GETTRIGGER TARGET_IOR('P',16, int) 939 #define TARGET_SNDCTL_DSP_GETIPTR TARGET_IORU('P',17) 940 #define TARGET_SNDCTL_DSP_GETOPTR TARGET_IORU('P',18) 941 #define TARGET_SNDCTL_DSP_MAPINBUF 0x80085013 942 #define TARGET_SNDCTL_DSP_MAPOUTBUF 0x80085014 943 #define TARGET_SNDCTL_DSP_NONBLOCK 0x0000500e 944 #define TARGET_SNDCTL_DSP_SAMPLESIZE 0xc0045005 945 #define TARGET_SNDCTL_DSP_SETDUPLEX 0x00005016 946 #define TARGET_SNDCTL_DSP_SETSYNCRO 0x00005015 947 #define TARGET_SNDCTL_DSP_SETTRIGGER 0x40045010 948 #define TARGET_SNDCTL_FM_4OP_ENABLE 0x4004510f 949 #define TARGET_SNDCTL_FM_LOAD_INSTR 0x40285107 950 #define TARGET_SNDCTL_MIDI_INFO 0xc074510c 951 #define TARGET_SNDCTL_MIDI_MPUCMD 0xc0216d02 952 #define TARGET_SNDCTL_MIDI_MPUMODE 0xc0046d01 953 #define TARGET_SNDCTL_MIDI_PRETIME 0xc0046d00 954 #define TARGET_SNDCTL_PMGR_ACCESS 0xcfb85110 955 #define TARGET_SNDCTL_PMGR_IFACE 0xcfb85001 956 #define TARGET_SNDCTL_SEQ_CTRLRATE 0xc0045103 957 #define TARGET_SNDCTL_SEQ_GETINCOUNT 0x80045105 958 #define TARGET_SNDCTL_SEQ_GETOUTCOUNT 0x80045104 959 #define TARGET_SNDCTL_SEQ_NRMIDIS 0x8004510b 960 #define TARGET_SNDCTL_SEQ_NRSYNTHS 0x8004510a 961 #define TARGET_SNDCTL_SEQ_OUTOFBAND 0x40085112 962 #define TARGET_SNDCTL_SEQ_PANIC 0x00005111 963 #define TARGET_SNDCTL_SEQ_PERCMODE 0x40045106 964 #define TARGET_SNDCTL_SEQ_RESET 0x00005100 965 #define TARGET_SNDCTL_SEQ_RESETSAMPLES 0x40045109 966 #define TARGET_SNDCTL_SEQ_SYNC 0x00005101 967 #define TARGET_SNDCTL_SEQ_TESTMIDI 0x40045108 968 #define TARGET_SNDCTL_SEQ_THRESHOLD 0x4004510d 969 #define TARGET_SNDCTL_SEQ_TRESHOLD 0x4004510d 970 #define TARGET_SNDCTL_SYNTH_INFO 0xc08c5102 971 #define TARGET_SNDCTL_SYNTH_MEMAVL 0xc004510e 972 #define TARGET_SNDCTL_TMR_CONTINUE 0x00005404 973 #define TARGET_SNDCTL_TMR_METRONOME 0x40045407 974 #define TARGET_SNDCTL_TMR_SELECT 0x40045408 975 #define TARGET_SNDCTL_TMR_SOURCE 0xc0045406 976 #define TARGET_SNDCTL_TMR_START 0x00005402 977 #define TARGET_SNDCTL_TMR_STOP 0x00005403 978 #define TARGET_SNDCTL_TMR_TEMPO 0xc0045405 979 #define TARGET_SNDCTL_TMR_TIMEBASE 0xc0045401 980 #define TARGET_SOUND_PCM_READ_RATE 0x80045002 981 #define TARGET_SOUND_PCM_READ_CHANNELS 0x80045006 982 #define TARGET_SOUND_PCM_READ_BITS 0x80045005 983 #define TARGET_SOUND_PCM_READ_FILTER 0x80045007 984 #define TARGET_SOUND_MIXER_INFO TARGET_IOR ('M', 101, mixer_info) 985 #define TARGET_SOUND_MIXER_ACCESS 0xc0804d66 986 #define TARGET_SOUND_MIXER_PRIVATE1 TARGET_IOWR('M', 111, int) 987 #define TARGET_SOUND_MIXER_PRIVATE2 TARGET_IOWR('M', 112, int) 988 #define TARGET_SOUND_MIXER_PRIVATE3 TARGET_IOWR('M', 113, int) 989 #define TARGET_SOUND_MIXER_PRIVATE4 TARGET_IOWR('M', 114, int) 990 #define TARGET_SOUND_MIXER_PRIVATE5 TARGET_IOWR('M', 115, int) 991 992 #define TARGET_MIXER_READ(dev) TARGET_IOR('M', dev, int) 993 994 #define TARGET_SOUND_MIXER_READ_VOLUME TARGET_MIXER_READ(SOUND_MIXER_VOLUME) 995 #define TARGET_SOUND_MIXER_READ_BASS TARGET_MIXER_READ(SOUND_MIXER_BASS) 996 #define TARGET_SOUND_MIXER_READ_TREBLE TARGET_MIXER_READ(SOUND_MIXER_TREBLE) 997 #define TARGET_SOUND_MIXER_READ_SYNTH TARGET_MIXER_READ(SOUND_MIXER_SYNTH) 998 #define TARGET_SOUND_MIXER_READ_PCM TARGET_MIXER_READ(SOUND_MIXER_PCM) 999 #define TARGET_SOUND_MIXER_READ_SPEAKER TARGET_MIXER_READ(SOUND_MIXER_SPEAKER) 1000 #define TARGET_SOUND_MIXER_READ_LINE TARGET_MIXER_READ(SOUND_MIXER_LINE) 1001 #define TARGET_SOUND_MIXER_READ_MIC TARGET_MIXER_READ(SOUND_MIXER_MIC) 1002 #define TARGET_SOUND_MIXER_READ_CD TARGET_MIXER_READ(SOUND_MIXER_CD) 1003 #define TARGET_SOUND_MIXER_READ_IMIX TARGET_MIXER_READ(SOUND_MIXER_IMIX) 1004 #define TARGET_SOUND_MIXER_READ_ALTPCM TARGET_MIXER_READ(SOUND_MIXER_ALTPCM) 1005 #define TARGET_SOUND_MIXER_READ_RECLEV TARGET_MIXER_READ(SOUND_MIXER_RECLEV) 1006 #define TARGET_SOUND_MIXER_READ_IGAIN TARGET_MIXER_READ(SOUND_MIXER_IGAIN) 1007 #define TARGET_SOUND_MIXER_READ_OGAIN TARGET_MIXER_READ(SOUND_MIXER_OGAIN) 1008 #define TARGET_SOUND_MIXER_READ_LINE1 TARGET_MIXER_READ(SOUND_MIXER_LINE1) 1009 #define TARGET_SOUND_MIXER_READ_LINE2 TARGET_MIXER_READ(SOUND_MIXER_LINE2) 1010 #define TARGET_SOUND_MIXER_READ_LINE3 TARGET_MIXER_READ(SOUND_MIXER_LINE3) 1011 1012 /* Obsolete macros */ 1013 #define TARGET_SOUND_MIXER_READ_MUTE TARGET_MIXER_READ(SOUND_MIXER_MUTE) 1014 #define TARGET_SOUND_MIXER_READ_ENHANCE TARGET_MIXER_READ(SOUND_MIXER_ENHANCE) 1015 #define TARGET_SOUND_MIXER_READ_LOUD TARGET_MIXER_READ(SOUND_MIXER_LOUD) 1016 1017 #define TARGET_SOUND_MIXER_READ_RECSRC TARGET_MIXER_READ(SOUND_MIXER_RECSRC) 1018 #define TARGET_SOUND_MIXER_READ_DEVMASK TARGET_MIXER_READ(SOUND_MIXER_DEVMASK) 1019 #define TARGET_SOUND_MIXER_READ_RECMASK TARGET_MIXER_READ(SOUND_MIXER_RECMASK) 1020 #define TARGET_SOUND_MIXER_READ_STEREODEVS TARGET_MIXER_READ(SOUND_MIXER_STEREODEVS) 1021 #define TARGET_SOUND_MIXER_READ_CAPS TARGET_MIXER_READ(SOUND_MIXER_CAPS) 1022 1023 #define TARGET_MIXER_WRITE(dev) TARGET_IOWR('M', dev, int) 1024 1025 #define TARGET_SOUND_MIXER_WRITE_VOLUME TARGET_MIXER_WRITE(SOUND_MIXER_VOLUME) 1026 #define TARGET_SOUND_MIXER_WRITE_BASS TARGET_MIXER_WRITE(SOUND_MIXER_BASS) 1027 #define TARGET_SOUND_MIXER_WRITE_TREBLE TARGET_MIXER_WRITE(SOUND_MIXER_TREBLE) 1028 #define TARGET_SOUND_MIXER_WRITE_SYNTH TARGET_MIXER_WRITE(SOUND_MIXER_SYNTH) 1029 #define TARGET_SOUND_MIXER_WRITE_PCM TARGET_MIXER_WRITE(SOUND_MIXER_PCM) 1030 #define TARGET_SOUND_MIXER_WRITE_SPEAKER TARGET_MIXER_WRITE(SOUND_MIXER_SPEAKER) 1031 #define TARGET_SOUND_MIXER_WRITE_LINE TARGET_MIXER_WRITE(SOUND_MIXER_LINE) 1032 #define TARGET_SOUND_MIXER_WRITE_MIC TARGET_MIXER_WRITE(SOUND_MIXER_MIC) 1033 #define TARGET_SOUND_MIXER_WRITE_CD TARGET_MIXER_WRITE(SOUND_MIXER_CD) 1034 #define TARGET_SOUND_MIXER_WRITE_IMIX TARGET_MIXER_WRITE(SOUND_MIXER_IMIX) 1035 #define TARGET_SOUND_MIXER_WRITE_ALTPCM TARGET_MIXER_WRITE(SOUND_MIXER_ALTPCM) 1036 #define TARGET_SOUND_MIXER_WRITE_RECLEV TARGET_MIXER_WRITE(SOUND_MIXER_RECLEV) 1037 #define TARGET_SOUND_MIXER_WRITE_IGAIN TARGET_MIXER_WRITE(SOUND_MIXER_IGAIN) 1038 #define TARGET_SOUND_MIXER_WRITE_OGAIN TARGET_MIXER_WRITE(SOUND_MIXER_OGAIN) 1039 #define TARGET_SOUND_MIXER_WRITE_LINE1 TARGET_MIXER_WRITE(SOUND_MIXER_LINE1) 1040 #define TARGET_SOUND_MIXER_WRITE_LINE2 TARGET_MIXER_WRITE(SOUND_MIXER_LINE2) 1041 #define TARGET_SOUND_MIXER_WRITE_LINE3 TARGET_MIXER_WRITE(SOUND_MIXER_LINE3) 1042 1043 /* Obsolete macros */ 1044 #define TARGET_SOUND_MIXER_WRITE_MUTE TARGET_MIXER_WRITE(SOUND_MIXER_MUTE) 1045 #define TARGET_SOUND_MIXER_WRITE_ENHANCE TARGET_MIXER_WRITE(SOUND_MIXER_ENHANCE) 1046 #define TARGET_SOUND_MIXER_WRITE_LOUD TARGET_MIXER_WRITE(SOUND_MIXER_LOUD) 1047 1048 #define TARGET_SOUND_MIXER_WRITE_RECSRC TARGET_MIXER_WRITE(SOUND_MIXER_RECSRC) 1049 1050 /* vfat ioctls */ 1051 #define TARGET_VFAT_IOCTL_READDIR_BOTH TARGET_IORU('r', 1) 1052 #define TARGET_VFAT_IOCTL_READDIR_SHORT TARGET_IORU('r', 2) 1053