Where is the CD-ROM API documented?
If you want to write your own application, such as an audio CD player program, you will need to understand the application programming interface (API) provided by Linux. Originally the CD-ROM kernel drivers used their own ioctl() functions to support features specific to each drive. Header files such as /usr/include/linux/sbpcd.h describe these. Because many of the drivers were based on other drivers, the interfaces, while not identical, have a lot in common. More recently there has been an initiative headed by David van Leeuwen (david@tm.tno.nl) to standardize the API for CD-ROM drives, putting common code in one place and ensuring that all drivers exhibit the same behaviour. This is documented in the file /usr/src/linux/Documentation/cdrom/cdrom-standard.tex. Several kernel drivers support this. As of the 2.0 kernel all CD-ROM drivers conform to this API. My book, Linux Multimedia Guide, goes into quite a bit of detail on how to program CD-ROM drives, especially for audio functions.