Based on kernel version 4.16.1. Page generated on 2018-04-09 11:53 EST.
1 Summary of CDROM ioctl calls. 2 ============================ 3 4 Edward A. Falk <efalk@google.com> 5 6 November, 2004 7 8 This document attempts to describe the ioctl(2) calls supported by 9 the CDROM layer. These are by-and-large implemented (as of Linux 2.6) 10 in drivers/cdrom/cdrom.c and drivers/block/scsi_ioctl.c 11 12 ioctl values are listed in <linux/cdrom.h>. As of this writing, they 13 are as follows: 14 15 CDROMPAUSE Pause Audio Operation 16 CDROMRESUME Resume paused Audio Operation 17 CDROMPLAYMSF Play Audio MSF (struct cdrom_msf) 18 CDROMPLAYTRKIND Play Audio Track/index (struct cdrom_ti) 19 CDROMREADTOCHDR Read TOC header (struct cdrom_tochdr) 20 CDROMREADTOCENTRY Read TOC entry (struct cdrom_tocentry) 21 CDROMSTOP Stop the cdrom drive 22 CDROMSTART Start the cdrom drive 23 CDROMEJECT Ejects the cdrom media 24 CDROMVOLCTRL Control output volume (struct cdrom_volctrl) 25 CDROMSUBCHNL Read subchannel data (struct cdrom_subchnl) 26 CDROMREADMODE2 Read CDROM mode 2 data (2336 Bytes) 27 (struct cdrom_read) 28 CDROMREADMODE1 Read CDROM mode 1 data (2048 Bytes) 29 (struct cdrom_read) 30 CDROMREADAUDIO (struct cdrom_read_audio) 31 CDROMEJECT_SW enable(1)/disable(0) auto-ejecting 32 CDROMMULTISESSION Obtain the start-of-last-session 33 address of multi session disks 34 (struct cdrom_multisession) 35 CDROM_GET_MCN Obtain the "Universal Product Code" 36 if available (struct cdrom_mcn) 37 CDROM_GET_UPC Deprecated, use CDROM_GET_MCN instead. 38 CDROMRESET hard-reset the drive 39 CDROMVOLREAD Get the drive's volume setting 40 (struct cdrom_volctrl) 41 CDROMREADRAW read data in raw mode (2352 Bytes) 42 (struct cdrom_read) 43 CDROMREADCOOKED read data in cooked mode 44 CDROMSEEK seek msf address 45 CDROMPLAYBLK scsi-cd only, (struct cdrom_blk) 46 CDROMREADALL read all 2646 bytes 47 CDROMGETSPINDOWN return 4-bit spindown value 48 CDROMSETSPINDOWN set 4-bit spindown value 49 CDROMCLOSETRAY pendant of CDROMEJECT 50 CDROM_SET_OPTIONS Set behavior options 51 CDROM_CLEAR_OPTIONS Clear behavior options 52 CDROM_SELECT_SPEED Set the CD-ROM speed 53 CDROM_SELECT_DISC Select disc (for juke-boxes) 54 CDROM_MEDIA_CHANGED Check is media changed 55 CDROM_DRIVE_STATUS Get tray position, etc. 56 CDROM_DISC_STATUS Get disc type, etc. 57 CDROM_CHANGER_NSLOTS Get number of slots 58 CDROM_LOCKDOOR lock or unlock door 59 CDROM_DEBUG Turn debug messages on/off 60 CDROM_GET_CAPABILITY get capabilities 61 CDROMAUDIOBUFSIZ set the audio buffer size 62 DVD_READ_STRUCT Read structure 63 DVD_WRITE_STRUCT Write structure 64 DVD_AUTH Authentication 65 CDROM_SEND_PACKET send a packet to the drive 66 CDROM_NEXT_WRITABLE get next writable block 67 CDROM_LAST_WRITTEN get last block written on disc 68 69 70 The information that follows was determined from reading kernel source 71 code. It is likely that some corrections will be made over time. 72 73 74 75 76 77 78 79 General: 80 81 Unless otherwise specified, all ioctl calls return 0 on success 82 and -1 with errno set to an appropriate value on error. (Some 83 ioctls return non-negative data values.) 84 85 Unless otherwise specified, all ioctl calls return -1 and set 86 errno to EFAULT on a failed attempt to copy data to or from user 87 address space. 88 89 Individual drivers may return error codes not listed here. 90 91 Unless otherwise specified, all data structures and constants 92 are defined in <linux/cdrom.h> 93 94 95 96 97 CDROMPAUSE Pause Audio Operation 98 99 usage: 100 101 ioctl(fd, CDROMPAUSE, 0); 102 103 inputs: none 104 105 outputs: none 106 107 error return: 108 ENOSYS cd drive not audio-capable. 109 110 111 CDROMRESUME Resume paused Audio Operation 112 113 usage: 114 115 ioctl(fd, CDROMRESUME, 0); 116 117 inputs: none 118 119 outputs: none 120 121 error return: 122 ENOSYS cd drive not audio-capable. 123 124 125 CDROMPLAYMSF Play Audio MSF (struct cdrom_msf) 126 127 usage: 128 129 struct cdrom_msf msf; 130 ioctl(fd, CDROMPLAYMSF, &msf); 131 132 inputs: 133 cdrom_msf structure, describing a segment of music to play 134 135 outputs: none 136 137 error return: 138 ENOSYS cd drive not audio-capable. 139 140 notes: 141 MSF stands for minutes-seconds-frames 142 LBA stands for logical block address 143 144 Segment is described as start and end times, where each time 145 is described as minutes:seconds:frames. A frame is 1/75 of 146 a second. 147 148 149 CDROMPLAYTRKIND Play Audio Track/index (struct cdrom_ti) 150 151 usage: 152 153 struct cdrom_ti ti; 154 ioctl(fd, CDROMPLAYTRKIND, &ti); 155 156 inputs: 157 cdrom_ti structure, describing a segment of music to play 158 159 outputs: none 160 161 error return: 162 ENOSYS cd drive not audio-capable. 163 164 notes: 165 Segment is described as start and end times, where each time 166 is described as a track and an index. 167 168 169 170 CDROMREADTOCHDR Read TOC header (struct cdrom_tochdr) 171 172 usage: 173 174 cdrom_tochdr header; 175 ioctl(fd, CDROMREADTOCHDR, &header); 176 177 inputs: 178 cdrom_tochdr structure 179 180 outputs: 181 cdrom_tochdr structure 182 183 error return: 184 ENOSYS cd drive not audio-capable. 185 186 187 188 CDROMREADTOCENTRY Read TOC entry (struct cdrom_tocentry) 189 190 usage: 191 192 struct cdrom_tocentry entry; 193 ioctl(fd, CDROMREADTOCENTRY, &entry); 194 195 inputs: 196 cdrom_tocentry structure 197 198 outputs: 199 cdrom_tocentry structure 200 201 error return: 202 ENOSYS cd drive not audio-capable. 203 EINVAL entry.cdte_format not CDROM_MSF or CDROM_LBA 204 EINVAL requested track out of bounds 205 EIO I/O error reading TOC 206 207 notes: 208 TOC stands for Table Of Contents 209 MSF stands for minutes-seconds-frames 210 LBA stands for logical block address 211 212 213 214 CDROMSTOP Stop the cdrom drive 215 216 usage: 217 218 ioctl(fd, CDROMSTOP, 0); 219 220 inputs: none 221 222 outputs: none 223 224 error return: 225 ENOSYS cd drive not audio-capable. 226 227 notes: 228 Exact interpretation of this ioctl depends on the device, 229 but most seem to spin the drive down. 230 231 232 CDROMSTART Start the cdrom drive 233 234 usage: 235 236 ioctl(fd, CDROMSTART, 0); 237 238 inputs: none 239 240 outputs: none 241 242 error return: 243 ENOSYS cd drive not audio-capable. 244 245 notes: 246 Exact interpretation of this ioctl depends on the device, 247 but most seem to spin the drive up and/or close the tray. 248 Other devices ignore the ioctl completely. 249 250 251 CDROMEJECT Ejects the cdrom media 252 253 usage: 254 255 ioctl(fd, CDROMEJECT, 0); 256 257 inputs: none 258 259 outputs: none 260 261 error returns: 262 ENOSYS cd drive not capable of ejecting 263 EBUSY other processes are accessing drive, or door is locked 264 265 notes: 266 See CDROM_LOCKDOOR, below. 267 268 269 270 CDROMCLOSETRAY pendant of CDROMEJECT 271 272 usage: 273 274 ioctl(fd, CDROMCLOSETRAY, 0); 275 276 inputs: none 277 278 outputs: none 279 280 error returns: 281 ENOSYS cd drive not capable of closing the tray 282 EBUSY other processes are accessing drive, or door is locked 283 284 notes: 285 See CDROM_LOCKDOOR, below. 286 287 288 289 CDROMVOLCTRL Control output volume (struct cdrom_volctrl) 290 291 usage: 292 293 struct cdrom_volctrl volume; 294 ioctl(fd, CDROMVOLCTRL, &volume); 295 296 inputs: 297 cdrom_volctrl structure containing volumes for up to 4 298 channels. 299 300 outputs: none 301 302 error return: 303 ENOSYS cd drive not audio-capable. 304 305 306 307 CDROMVOLREAD Get the drive's volume setting 308 (struct cdrom_volctrl) 309 310 usage: 311 312 struct cdrom_volctrl volume; 313 ioctl(fd, CDROMVOLREAD, &volume); 314 315 inputs: none 316 317 outputs: 318 The current volume settings. 319 320 error return: 321 ENOSYS cd drive not audio-capable. 322 323 324 325 CDROMSUBCHNL Read subchannel data (struct cdrom_subchnl) 326 327 usage: 328 329 struct cdrom_subchnl q; 330 ioctl(fd, CDROMSUBCHNL, &q); 331 332 inputs: 333 cdrom_subchnl structure 334 335 outputs: 336 cdrom_subchnl structure 337 338 error return: 339 ENOSYS cd drive not audio-capable. 340 EINVAL format not CDROM_MSF or CDROM_LBA 341 342 notes: 343 Format is converted to CDROM_MSF or CDROM_LBA 344 as per user request on return 345 346 347 348 CDROMREADRAW read data in raw mode (2352 Bytes) 349 (struct cdrom_read) 350 351 usage: 352 353 union { 354 struct cdrom_msf msf; /* input */ 355 char buffer[CD_FRAMESIZE_RAW]; /* return */ 356 } arg; 357 ioctl(fd, CDROMREADRAW, &arg); 358 359 inputs: 360 cdrom_msf structure indicating an address to read. 361 Only the start values are significant. 362 363 outputs: 364 Data written to address provided by user. 365 366 error return: 367 EINVAL address less than 0, or msf less than 0:2:0 368 ENOMEM out of memory 369 370 notes: 371 As of 2.6.8.1, comments in <linux/cdrom.h> indicate that this 372 ioctl accepts a cdrom_read structure, but actual source code 373 reads a cdrom_msf structure and writes a buffer of data to 374 the same address. 375 376 MSF values are converted to LBA values via this formula: 377 378 lba = (((m * CD_SECS) + s) * CD_FRAMES + f) - CD_MSF_OFFSET; 379 380 381 382 383 CDROMREADMODE1 Read CDROM mode 1 data (2048 Bytes) 384 (struct cdrom_read) 385 386 notes: 387 Identical to CDROMREADRAW except that block size is 388 CD_FRAMESIZE (2048) bytes 389 390 391 392 CDROMREADMODE2 Read CDROM mode 2 data (2336 Bytes) 393 (struct cdrom_read) 394 395 notes: 396 Identical to CDROMREADRAW except that block size is 397 CD_FRAMESIZE_RAW0 (2336) bytes 398 399 400 401 CDROMREADAUDIO (struct cdrom_read_audio) 402 403 usage: 404 405 struct cdrom_read_audio ra; 406 ioctl(fd, CDROMREADAUDIO, &ra); 407 408 inputs: 409 cdrom_read_audio structure containing read start 410 point and length 411 412 outputs: 413 audio data, returned to buffer indicated by ra 414 415 error return: 416 EINVAL format not CDROM_MSF or CDROM_LBA 417 EINVAL nframes not in range [1 75] 418 ENXIO drive has no queue (probably means invalid fd) 419 ENOMEM out of memory 420 421 422 CDROMEJECT_SW enable(1)/disable(0) auto-ejecting 423 424 usage: 425 426 int val; 427 ioctl(fd, CDROMEJECT_SW, val); 428 429 inputs: 430 Flag specifying auto-eject flag. 431 432 outputs: none 433 434 error return: 435 ENOSYS Drive is not capable of ejecting. 436 EBUSY Door is locked 437 438 439 440 441 CDROMMULTISESSION Obtain the start-of-last-session 442 address of multi session disks 443 (struct cdrom_multisession) 444 usage: 445 446 struct cdrom_multisession ms_info; 447 ioctl(fd, CDROMMULTISESSION, &ms_info); 448 449 inputs: 450 cdrom_multisession structure containing desired 451 format. 452 453 outputs: 454 cdrom_multisession structure is filled with last_session 455 information. 456 457 error return: 458 EINVAL format not CDROM_MSF or CDROM_LBA 459 460 461 CDROM_GET_MCN Obtain the "Universal Product Code" 462 if available (struct cdrom_mcn) 463 464 usage: 465 466 struct cdrom_mcn mcn; 467 ioctl(fd, CDROM_GET_MCN, &mcn); 468 469 inputs: none 470 471 outputs: 472 Universal Product Code 473 474 error return: 475 ENOSYS Drive is not capable of reading MCN data. 476 477 notes: 478 Source code comments state: 479 480 The following function is implemented, although very few 481 audio discs give Universal Product Code information, which 482 should just be the Medium Catalog Number on the box. Note, 483 that the way the code is written on the CD is /not/ uniform 484 across all discs! 485 486 487 488 489 CDROM_GET_UPC CDROM_GET_MCN (deprecated) 490 491 Not implemented, as of 2.6.8.1 492 493 494 495 CDROMRESET hard-reset the drive 496 497 usage: 498 499 ioctl(fd, CDROMRESET, 0); 500 501 inputs: none 502 503 outputs: none 504 505 error return: 506 EACCES Access denied: requires CAP_SYS_ADMIN 507 ENOSYS Drive is not capable of resetting. 508 509 510 511 512 CDROMREADCOOKED read data in cooked mode 513 514 usage: 515 516 u8 buffer[CD_FRAMESIZE] 517 ioctl(fd, CDROMREADCOOKED, buffer); 518 519 inputs: none 520 521 outputs: 522 2048 bytes of data, "cooked" mode. 523 524 notes: 525 Not implemented on all drives. 526 527 528 529 530 CDROMREADALL read all 2646 bytes 531 532 Same as CDROMREADCOOKED, but reads 2646 bytes. 533 534 535 536 CDROMSEEK seek msf address 537 538 usage: 539 540 struct cdrom_msf msf; 541 ioctl(fd, CDROMSEEK, &msf); 542 543 inputs: 544 MSF address to seek to. 545 546 outputs: none 547 548 549 550 CDROMPLAYBLK scsi-cd only, (struct cdrom_blk) 551 552 usage: 553 554 struct cdrom_blk blk; 555 ioctl(fd, CDROMPLAYBLK, &blk); 556 557 inputs: 558 Region to play 559 560 outputs: none 561 562 563 564 CDROMGETSPINDOWN 565 566 usage: 567 568 char spindown; 569 ioctl(fd, CDROMGETSPINDOWN, &spindown); 570 571 inputs: none 572 573 outputs: 574 The value of the current 4-bit spindown value. 575 576 577 578 579 CDROMSETSPINDOWN 580 581 usage: 582 583 char spindown 584 ioctl(fd, CDROMSETSPINDOWN, &spindown); 585 586 inputs: 587 4-bit value used to control spindown (TODO: more detail here) 588 589 outputs: none 590 591 592 593 594 595 CDROM_SET_OPTIONS Set behavior options 596 597 usage: 598 599 int options; 600 ioctl(fd, CDROM_SET_OPTIONS, options); 601 602 inputs: 603 New values for drive options. The logical 'or' of: 604 CDO_AUTO_CLOSE close tray on first open(2) 605 CDO_AUTO_EJECT open tray on last release 606 CDO_USE_FFLAGS use O_NONBLOCK information on open 607 CDO_LOCK lock tray on open files 608 CDO_CHECK_TYPE check type on open for data 609 610 outputs: 611 Returns the resulting options settings in the 612 ioctl return value. Returns -1 on error. 613 614 error return: 615 ENOSYS selected option(s) not supported by drive. 616 617 618 619 620 CDROM_CLEAR_OPTIONS Clear behavior options 621 622 Same as CDROM_SET_OPTIONS, except that selected options are 623 turned off. 624 625 626 627 CDROM_SELECT_SPEED Set the CD-ROM speed 628 629 usage: 630 631 int speed; 632 ioctl(fd, CDROM_SELECT_SPEED, speed); 633 634 inputs: 635 New drive speed. 636 637 outputs: none 638 639 error return: 640 ENOSYS speed selection not supported by drive. 641 642 643 644 CDROM_SELECT_DISC Select disc (for juke-boxes) 645 646 usage: 647 648 int disk; 649 ioctl(fd, CDROM_SELECT_DISC, disk); 650 651 inputs: 652 Disk to load into drive. 653 654 outputs: none 655 656 error return: 657 EINVAL Disk number beyond capacity of drive 658 659 660 661 CDROM_MEDIA_CHANGED Check is media changed 662 663 usage: 664 665 int slot; 666 ioctl(fd, CDROM_MEDIA_CHANGED, slot); 667 668 inputs: 669 Slot number to be tested, always zero except for jukeboxes. 670 May also be special values CDSL_NONE or CDSL_CURRENT 671 672 outputs: 673 Ioctl return value is 0 or 1 depending on whether the media 674 has been changed, or -1 on error. 675 676 error returns: 677 ENOSYS Drive can't detect media change 678 EINVAL Slot number beyond capacity of drive 679 ENOMEM Out of memory 680 681 682 683 CDROM_DRIVE_STATUS Get tray position, etc. 684 685 usage: 686 687 int slot; 688 ioctl(fd, CDROM_DRIVE_STATUS, slot); 689 690 inputs: 691 Slot number to be tested, always zero except for jukeboxes. 692 May also be special values CDSL_NONE or CDSL_CURRENT 693 694 outputs: 695 Ioctl return value will be one of the following values 696 from <linux/cdrom.h>: 697 698 CDS_NO_INFO Information not available. 699 CDS_NO_DISC 700 CDS_TRAY_OPEN 701 CDS_DRIVE_NOT_READY 702 CDS_DISC_OK 703 -1 error 704 705 error returns: 706 ENOSYS Drive can't detect drive status 707 EINVAL Slot number beyond capacity of drive 708 ENOMEM Out of memory 709 710 711 712 713 CDROM_DISC_STATUS Get disc type, etc. 714 715 usage: 716 717 ioctl(fd, CDROM_DISC_STATUS, 0); 718 719 inputs: none 720 721 outputs: 722 Ioctl return value will be one of the following values 723 from <linux/cdrom.h>: 724 CDS_NO_INFO 725 CDS_AUDIO 726 CDS_MIXED 727 CDS_XA_2_2 728 CDS_XA_2_1 729 CDS_DATA_1 730 731 error returns: none at present 732 733 notes: 734 Source code comments state: 735 736 Ok, this is where problems start. The current interface for 737 the CDROM_DISC_STATUS ioctl is flawed. It makes the false 738 assumption that CDs are all CDS_DATA_1 or all CDS_AUDIO, etc. 739 Unfortunately, while this is often the case, it is also 740 very common for CDs to have some tracks with data, and some 741 tracks with audio. Just because I feel like it, I declare 742 the following to be the best way to cope. If the CD has 743 ANY data tracks on it, it will be returned as a data CD. 744 If it has any XA tracks, I will return it as that. Now I 745 could simplify this interface by combining these returns with 746 the above, but this more clearly demonstrates the problem 747 with the current interface. Too bad this wasn't designed 748 to use bitmasks... -Erik 749 750 Well, now we have the option CDS_MIXED: a mixed-type CD. 751 User level programmers might feel the ioctl is not very 752 useful. 753 ---david 754 755 756 757 758 CDROM_CHANGER_NSLOTS Get number of slots 759 760 usage: 761 762 ioctl(fd, CDROM_CHANGER_NSLOTS, 0); 763 764 inputs: none 765 766 outputs: 767 The ioctl return value will be the number of slots in a 768 CD changer. Typically 1 for non-multi-disk devices. 769 770 error returns: none 771 772 773 774 CDROM_LOCKDOOR lock or unlock door 775 776 usage: 777 778 int lock; 779 ioctl(fd, CDROM_LOCKDOOR, lock); 780 781 inputs: 782 Door lock flag, 1=lock, 0=unlock 783 784 outputs: none 785 786 error returns: 787 EDRIVE_CANT_DO_THIS Door lock function not supported. 788 EBUSY Attempt to unlock when multiple users 789 have the drive open and not CAP_SYS_ADMIN 790 791 notes: 792 As of 2.6.8.1, the lock flag is a global lock, meaning that 793 all CD drives will be locked or unlocked together. This is 794 probably a bug. 795 796 The EDRIVE_CANT_DO_THIS value is defined in <linux/cdrom.h> 797 and is currently (2.6.8.1) the same as EOPNOTSUPP 798 799 800 801 CDROM_DEBUG Turn debug messages on/off 802 803 usage: 804 805 int debug; 806 ioctl(fd, CDROM_DEBUG, debug); 807 808 inputs: 809 Cdrom debug flag, 0=disable, 1=enable 810 811 outputs: 812 The ioctl return value will be the new debug flag. 813 814 error return: 815 EACCES Access denied: requires CAP_SYS_ADMIN 816 817 818 819 CDROM_GET_CAPABILITY get capabilities 820 821 usage: 822 823 ioctl(fd, CDROM_GET_CAPABILITY, 0); 824 825 inputs: none 826 827 outputs: 828 The ioctl return value is the current device capability 829 flags. See CDC_CLOSE_TRAY, CDC_OPEN_TRAY, etc. 830 831 832 833 CDROMAUDIOBUFSIZ set the audio buffer size 834 835 usage: 836 837 int arg; 838 ioctl(fd, CDROMAUDIOBUFSIZ, val); 839 840 inputs: 841 New audio buffer size 842 843 outputs: 844 The ioctl return value is the new audio buffer size, or -1 845 on error. 846 847 error return: 848 ENOSYS Not supported by this driver. 849 850 notes: 851 Not supported by all drivers. 852 853 854 855 DVD_READ_STRUCT Read structure 856 857 usage: 858 859 dvd_struct s; 860 ioctl(fd, DVD_READ_STRUCT, &s); 861 862 inputs: 863 dvd_struct structure, containing: 864 type specifies the information desired, one of 865 DVD_STRUCT_PHYSICAL, DVD_STRUCT_COPYRIGHT, 866 DVD_STRUCT_DISCKEY, DVD_STRUCT_BCA, 867 DVD_STRUCT_MANUFACT 868 physical.layer_num desired layer, indexed from 0 869 copyright.layer_num desired layer, indexed from 0 870 disckey.agid 871 872 outputs: 873 dvd_struct structure, containing: 874 physical for type == DVD_STRUCT_PHYSICAL 875 copyright for type == DVD_STRUCT_COPYRIGHT 876 disckey.value for type == DVD_STRUCT_DISCKEY 877 bca.{len,value} for type == DVD_STRUCT_BCA 878 manufact.{len,valu} for type == DVD_STRUCT_MANUFACT 879 880 error returns: 881 EINVAL physical.layer_num exceeds number of layers 882 EIO Received invalid response from drive 883 884 885 886 DVD_WRITE_STRUCT Write structure 887 888 Not implemented, as of 2.6.8.1 889 890 891 892 DVD_AUTH Authentication 893 894 usage: 895 896 dvd_authinfo ai; 897 ioctl(fd, DVD_AUTH, &ai); 898 899 inputs: 900 dvd_authinfo structure. See <linux/cdrom.h> 901 902 outputs: 903 dvd_authinfo structure. 904 905 error return: 906 ENOTTY ai.type not recognized. 907 908 909 910 CDROM_SEND_PACKET send a packet to the drive 911 912 usage: 913 914 struct cdrom_generic_command cgc; 915 ioctl(fd, CDROM_SEND_PACKET, &cgc); 916 917 inputs: 918 cdrom_generic_command structure containing the packet to send. 919 920 outputs: none 921 cdrom_generic_command structure containing results. 922 923 error return: 924 EIO command failed. 925 EPERM Operation not permitted, either because a 926 write command was attempted on a drive which 927 is opened read-only, or because the command 928 requires CAP_SYS_RAWIO 929 EINVAL cgc.data_direction not set 930 931 932 933 CDROM_NEXT_WRITABLE get next writable block 934 935 usage: 936 937 long next; 938 ioctl(fd, CDROM_NEXT_WRITABLE, &next); 939 940 inputs: none 941 942 outputs: 943 The next writable block. 944 945 notes: 946 If the device does not support this ioctl directly, the 947 ioctl will return CDROM_LAST_WRITTEN + 7. 948 949 950 951 CDROM_LAST_WRITTEN get last block written on disc 952 953 usage: 954 955 long last; 956 ioctl(fd, CDROM_LAST_WRITTEN, &last); 957 958 inputs: none 959 960 outputs: 961 The last block written on disc 962 963 notes: 964 If the device does not support this ioctl directly, the 965 result is derived from the disc's table of contents. If the 966 table of contents can't be read, this ioctl returns an 967 error.