̾??
cd
— SCSI CD-ROM
?ɥ饤??
device cd
device cd1 at
scbus0 target 4 lun 0
options "CHANGER_MIN_BUSY_SECONDS=3"
options "CHANGER_MAX_BUSY_SECONDS=11"
cd
?ɥ饤?Фϡ?
SCSI CD-ROM
(?????ѥ??ȥǥ?????-?ɤ߽Ф????ѥ?????)
?ɥ饤?֤ݡ??Ȥ??ޤ???
?̾??ǥ???????Ʊ???褦?˸????뤿???ˡ?
cd
?ɥ饤?Фϡ? CD-ROM
???ΤС????? 1
?ĤΥѡ??ƥ????????ʤ?
?ѡ??ƥ????????ơ??֥??????????ޤ???
???Υѡ??ƥ????????ơ??֥???
disklabel(8)
???Ѥ??ƽ??????뤳?Ȥϲ?ǽ?Ǥ?????
???ν????? CD-ROM
???ޥ????Ȥ????ޤǤδ֤Τ?ͭ???Ǥ???
????Ū?ˡ????Υ??ե???????
wd(4) ??
da(4)
?ǽҤ٤????Ƥ??????Τ?Ʊ?ͤǤ???
SCSI
?????ץ????֡??????˥ץ????֤??????ݡ?
SCSI ?Х????ΥǥХ??????????????ޤ???
???Ĥ??ä??ǥХ????Τ????? ?????? CDROM
(?????? 5) ???뤤?? WORM (?????? 4) ?ȱ??????????Τ?
cd
?ɥ饤?Ф˥????å??????ޤ???
FreeBSD 2.1
?????ΥС????????Ǥϡ?
?ǽ??˸??Ĥ??ä??ǥХ?????
cd0
?Ȥ??ƥ????å????졢???μ???
cd1
?Τ褦?ˤʤäƤ??ޤ?????
FreeBSD 2.1
?????ϡ??ǥХ????????֤? cd
???˥åȤȤʤ??٤????????Ǥ??ޤ???
?????ͥ??????ξܺ٤ˤĤ??Ƥ?
scsi(4)
?Ȥ??Ʋ???????
?????ƥ??桼?ƥ????ƥ?
disklabel(8)
???Ѥ??ơ????????줿?ǥ????????٥빽¤?Τ??ɤ߽Ф??ޤ???
???ι?¤?Τˤϡ?ɬ?פȤʤ?
CD-ROM
?Υ??????˴ؤ??????????ͤ??ޤޤ??ޤ???
?????ƥ??????˴ؤ??餺??Ǥ?դο???
CD-ROM
?ǥХ??????ƥ??˥????å??Ǥ??ޤ???
???ƤΥ??????ưŪ?˥????????Ȥ????ޤ???
SCSI CD-ROM
?ɥ饤?֤?Ŭ?Ѥ??????ʲ???
ioctl(2)
?ƤӽФ??????إå??ե?????
⟨sys/cdio.h⟩ ??
⟨sys/disklabel.h⟩
???????????Ƥ??ޤ???
DIOCGDINFO
-
DIOCSDINFO
- (
struct disklabel
)
?????ɥ饤?֤??Ф????ǥ????????٥??Υ????ͥ??⥳?ԡ????ɤ߽??ޤ???
?ǥ????????٥??? scsi inquiry
???ޥ??ɤ????ɤ??ä??????ǽ??????????ޤ???
?????ͤϥ֡??Ȼ???ɽ?????줿???Τ?Ʊ???ΤϤ??Ǥ???
???ι?¤?Τ?
disklabel(5)
???????????Ƥ??ޤ???
CDIOCCAPABILITY
- (
struct ioc_capability
)
?????ɥ饤?֤????ݡ??Ȥ??Ƥ??뵡ǽ?˴ؤ??????????????Ф??ޤ???
?????ϰʲ??ι?¤?Τ??֤????ޤ???
struct ioc_capability {
u_long play_function;
#define CDDOPLAYTRK 0x00000001
/* tracks/index ?????Ǻ?????ǽ */
#define CDDOPLAYMSF 0x00000002
/* msf (ʬ?åե졼??) ?????Ǻ?????ǽ */
#define CDDOPLAYBLOCKS 0x00000004
/* ?֥??å??????Ǻ?????ǽ */
#define CDDOPAUSE 0x00000100
/* ???Ϥ????????߲?ǽ */
#define CDDORESUME 0x00000200
/* ???Ϥ??Ƴ???ǽ */
#define CDDORESET 0x00000400
/* ?ɥ饤?֤??????˥ꥻ?åȲ?ǽ */
#define CDDOSTART 0x00000800
/* ?????ǥ??????ϲ?ǽ */
#define CDDOSTOP 0x00001000
/* ?????ǥ??????߲?ǽ */
#define CDDOPITCH 0x00002000
/* ?????ǥ????ԥå?Ĵ????ǽ */
u_long routing_function;
#define CDREADVOLUME 0x00000001
/* ?ܥ??塼?????????ɤ߽Ф???ǽ */
#define CDSETVOLUME 0x00000002
/* ?ܥ??塼??????????ǽ */
#define CDSETMONO 0x00000100
/* ???Ϥ????Υ???????????ǽ */
#define CDSETSTEREO 0x00000200
/* ???Ϥƥ쥪????????ǽ (?ǥե?????) */
#define CDSETLEFT 0x00000400
/* ???ϤΤߤ???????ǽ */
#define CDSETRIGHT 0x00000800
/* ???ϤΤߤ???????ǽ */
#define CDSETMUTE 0x00001000
/* ???ϤΥߥ塼?Ȳ?ǽ */
#define CDSETPATCH 0x00008000
/* ?????쥯?ȥ롼?ƥ???????????ǽ */
u_long special_function;
#define CDDOEJECT 0x00000001
/* ?ȥ졼?Υ????ץ???ǽ */
#define CDDOCLOSE 0x00000002
/* ?ȥ졼?Υ?????????ǽ */
#define CDDOLOCK 0x00000004
/* ?ȥ졼?Υ??å???ǽ */
#define CDREADHEADER 0x00000100
/* ?ܼ????ɤ߽Ф???ǽ */
#define CDREADENTRIES 0x00000200
/* ?ܼ??????ȥ????ɤ߽Ф???ǽ */
#define CDREADSUBQ 0x00000200
/* ???֥????ͥ????????ɤ߽Ф???ǽ */
#define CDREADRW 0x00000400
/* ???֥????? R-W ???ɤ߽Ф???ǽ */
#define CDHASDEBUG 0x00004000
/* ?ȥ졼???????ʥߥå??ǥХå???ǽ?????? */
};
CDIOCPLAYTRACKS
- (
struct ioc_play_track
)
???ꤵ?줿?ȥ??å????ɥ쥹??????Ĺ???˴??Ť??ƥ????ǥ????κ????Ϥ??ޤ???
???ι?¤?Τϰʲ??Τ褦???????????ޤ?:
struct ioc_play_track
{
u_char start_track;
u_char start_index;
u_char end_track;
u_char end_index;
};
CDIOCPLAYBLOCKS
- (
struct ioc_play_blocks
)
???ꤵ?줿?֥??å????ɥ쥹??????Ĺ???˴??Ť??ƥ????ǥ????κ????Ϥ??ޤ???
???ι?¤?Τϰʲ??Τ褦???????????ޤ?:
struct ioc_play_blocks
{
int blk;
int len;
};
CDIOCPLAYMSF
- (
struct ioc_play_msf
)
???ꤵ?줿??ʬ-??-?ե졼???פ?Ĺ???˴??Ť??ƥ????ǥ????κ????Ϥ??ޤ???
???ι?¤?Τϰʲ??Τ褦???????????ޤ?:
struct ioc_play_msf
{
u_char start_m;
u_char start_s;
u_char start_f;
u_char end_m;
u_char end_s;
u_char end_f;
};
CDIOCREADSUBCHANNEL
- (
struct ioc_read_subchannel
)
???ι?¤?Τǻ??ꤵ?줿?????????????Υ??֥????ͥ뤫?????????ɤ߽Ф??ޤ???
struct ioc_read_subchannel {
u_char address_format;
#define CD_LBA_FORMAT 1
#define CD_MSF_FORMAT 2
u_char data_format;
#define CD_SUBQ_DATA 0
#define CD_CURRENT_POSITION 1
#define CD_MEDIA_CATALOG 2
#define CD_TRACK_INFO 3
u_char track;
int data_len;
struct cd_sub_channel_info *data;
};
- (
struct ioc_toc_header
)
?ޥ????Ȥ??줿 CD-ROM
???ܼ??˴ؤ????????Υ??ޥ????֤??ޤ???
???ξ????ϰʲ??ι?¤?Τ˳?Ǽ?????֤????ޤ???
struct ioc_toc_header {
u_short len;
u_char starting_track;
u_char ending_track;
};
CDIOREADTOCENTRYS
- (
struct ioc_read_toc_entry
)
???ꤵ?줿?ܼ??????ȥ꤫???ξ??????֤??ޤ???
(?????????Υ??ޥ???̾?Υ??ڥ??ϴְ??äƤ??ޤ???)
?????ι?¤?Τϰʲ??Τ褦?ˤʤ??ޤ?:
struct ioc_read_toc_entry {
u_char address_format;
u_char starting_track;
u_short data_len;
struct cd_toc_entry *data;
};
???ǡ????ϡ? data
???ؤ??礭?? data_len
???ΰ??˳?Ǽ?????ޤ???
CDIOCSETPATCH
- (
struct ioc_patch
)
?͡??ʥ????ǥ????????ͥ????͡??ʽ??ϥ????ͥ??˳??????Ƥޤ???
?????ι?¤?Τϼ??Τ褦???????????ޤ?:
struct ioc_patch {
u_char patch[4];
/* ?ƥ????ͥ????Ф? 1 ???Ǥ??б? */
};
CDIOCGETVOL
-
CDIOCSETVOL
- (
struct ioc_vol
)
???ϥ????ͥ??Υܥ??塼???????˴ؤ?????????????
(???뤤??????) ???ޤ???
?????ι?¤?Τϼ??ΤȤ????Ǥ?:
struct ioc_vol
{
u_char vol[4];
/* ?ƥ????ͥ????Ф? 1 ???Ǥ??б? */
};
CDIOCSETMONO
- ???Ƥν??ϥ????ͥ??????Ƥ????ϥ????ͥ??˳??????Ƥޤ???
CDIOCSETSTEREO
- ?????ϥ????ͥ????ϥ????ͥ??ˡ??????ϥ????ͥ????ϥ????ͥ??ˡ?
???줾?????????Ƥޤ???
CDIOCSETMUTE
- ?ܥ??塼?????????ѹ??????˽??Ϥ??ߥ塼?Ȥ??ޤ???
CDIOCSETLEFT
-
CDIOCSETRIGHT
- ξ???ν??ϥ????ͥ????? (?ޤ??ϱ?)
???ϥ????ͥ??˳??????Ƥޤ???
CDIOCSETDEBUG
-
CDIOCCLRDEBUG
- ?б??????ǥХ??????Ф????ǥХå???ǽ??
(?ޤ??ϥ???) ?ˤ??ޤ???
CDIOCPAUSE
-
CDIOCRESUME
- ?????ǥ????????????????? (?ޤ??ϺƳ?)
???ޤ???
?ɤ߽Ф??إåɤΰ??֤ϥꥻ?åȤ??ޤ?????
CDIOCRESET
- ?ɥ饤?֤??ꥻ?åȤ??ޤ???
CDIOCSTART
-
CDIOCSTOP
- ?ɥ饤?֤??Ф??? CD-ROM ?β?ž????
(?ޤ???????) ???ؼ????ޤ???
CDIOCALLOW
-
CDIOCPREVENT
- ?ɥ饤?֤??Ф??? CD-ROM
?ǥ??????μ?ư?ˤ????????Ф???????
(?ޤ??϶ػ?) ???ޤ???
???ε?ǽ?ݡ??Ȥ??ʤ??ɥ饤?֤??????ޤ???
CDIOCEJECT
- CD-ROM ???????Ф??ޤ???
CDIOCCLOSE
- ?ɥ饤?֤??Ф????ɥ????Ĥ????ǥ??????????ɤ????褦?ؼ????ޤ???
???ε?ǽ?ݡ??Ȥ??ʤ??ɥ饤?֤??????ޤ???
CDIOCPITCH
- (
struct ioc_pitch
)
???ε?ǽ?ݡ??Ȥ????ɥ饤?֤??Ф???
?????ǥ??????̾??????ᤤ®?٤ʤ????٤?®?٤Ǻ????????褦?ؼ????ޤ???
speed
???ͤ? -32767 ???? -1
?ޤǤδ֤ʤ??٤?®?٤Ǻ??????ޤ???
?ͤ? 0 ?ʤ??̾?®?٤Ǥ????ͤ? 1
???? 32767
?ξ??????ᤤ®?٤Ǻ??????ޤ???
ʬ??ǽ?? 16
?ӥå?̤???Υɥ饤?֤ξ??硢???顼???Ф?????
ñ?˲??̥ӥåȤ?̵?뤵???ޤ???
???ι?¤?Τϼ??Τ褦???????????ޤ?:
struct ioc_pitch
{
short speed;
};
cd
?ɥ饤?Ф????椵???Ƥ????ɥ饤??????
CD-ROM ?????촹?????줿???硢
???ǥ????????????ˤ??äƥ????ͥ????Υǥ????????٥??ȴ?Ϣ??????
̵?????????ޤ???
?ǡ?????»???뤿?ᡢ?????ǥХ????Ȥ??륪???ץ??ե?????
?ǥ??????ץ????ʤ??ʤ??ޤǡ??????ǥХ??????Ф??륢?????????????˴??????ޤ???
???δ֡??????ʥ????ץ??????????Ƶ??ݤ????ޤ???
?????ǥХ????Ȥ??륪???ץ??ե??????ǥ??????ץ????ʤ??ʤ??ȡ?
??³?κǽ??Υ????ץ??????ˤ??ꡢ?????ɥ饤?֤??Ф??뿷????
?ѥ?????켰 (?ǥ????????٥????ޤ?)
???????ɤ????ޤ???
cd
?ɥ饤?????Υ????ǥ????????ɤ? SCSI-2
ɸ???Υ????ǥ??????ޥ??ɤΤߥ??ݡ??Ȥ??ޤ???
¿???? CD-ROM
??¤?ȼԤϤ???ɸ?൬?ʤ˽??äƤ??ʤ????ᡢ
?????ǥ?????ư??ʤ? CD-ROM
?ɥ饤?֤???¿??¸?ߤ??ޤ???
????????Ū?ʡ֥????ʡ? CD-ROM
?ɥ饤?֤ݡ??Ȥ??????Ȥ??ײ褵???Ƥ??ޤ?????
?ޤ??¹Ԥ˰ܤ????Ƥ??ޤ?????
???Υɥ饤?Ф? LUN ?١????? CD
???????Υ??ݡ??Ȥ???¢???Ƥ??ޤ???
LUN ?١????? CD ???????Ȥϡ?2
?İʾ??? CD ???ݻ??Ǥ??뤬?? CD
?????????????Ȥ????????ʤ??ɥ饤?֤Ǥ???
???Υɥ饤?????γ? CD ?ϡ? SCSI
?Х??????̡??????????˥åȤȤ??Ƹ????ޤ???
???? cd
?ɥ饤?Фϼ?ưŪ?? LUN
?١????Υ???????ǧ??????
?????Υ??????塼?????̤??ƥ????????Ф??륳?ޥ??ɤ??????Ф??ޤ???
???Υ??????塼???ϡ??????????ΰۤʤ?
LUN ??Ʊ???˥??ޥ??ɤ????뤳?Ȥ?
?????????????롢???????Ρ֥????å??פ??ɤ??ޤ???
???????塼???ϡ??ɥ饤?Ф??????? LUN
?Ǿ??륿???९??????
?Ǿ??ͤȺ????ͤ????????ޤ???
?Ǿ??ͤȤϡ????Ȥ????? LUN ?˽???????
I/O ???ʤ??????Ǥ⡢ ???? LUN
?????Ȥ??ݾڤ????Ƥ????Ǿ??????̤Ǥ???
?????ͤȤϡ?¾?? LUN ?˽??????? I/O
???????????ˡ? ???? LUN
?ǥ????㤬?????????̤Ǥ???
¾?? LUN ?˽??????? I/O ???ʤ??????ϡ?
?ɥ饤?ФϤ??? LUN
???Ф??륢???????˾??¤??ߤ??ޤ?????
?Ǿ??????Ӻ??祿???९?????ϥ????ͥ륪?ץ???????
sysctl ?ѿ???
?̤????ѹ??Ǥ??ޤ????????ͥ륪?ץ??????ϰʲ????̤?:
options CHANGER_MIN_BUSY_SECONDS=3
-
options CHANGER_MAX_BUSY_SECONDS=11
-
sysctl ?ѿ??ϰʲ????̤?:
kern.cam.cd.changer.min_busy_seconds
-
kern.cam.cd.changer.max_busy_seconds
-
?桼???ϡ?sysctl
?ѿ????̤??ƺǾ??????Ӻ??祿???ॢ???Ȥ????
??ʬ?Υ??????˺?Ŭ???ͤĤ????Ȥ褤?Ǥ??礦??
??ö????ʬ?Υ????????Ф?????Ŭ?????ॢ???Ȥ????ޤ??С?
???????ͥ??????ե??????˵??ҤǤ??ޤ???
??ʬ?Υ????ƥ??? LUN
?١????Υ????㤬¸?ߤ????С?
?֡??ȥץ????????ʤ??˽??äơ????Υ????????͡???
LUN ???Ф???
?ץ????֥??å???????ɽ???????뤳?Ȥ˵??Ť??Ǥ??礦??
???????????Ǥ??ꡢ???????Υ??????塼???????ɤˤ??äư????????????ޤ???
- /dev/cd[0-9][a-h]
- ?֥??å??⡼?? CD-ROM ?ǥХ???
- /dev/rcd[0-9][a-h]
- raw ?⡼?? CD-ROM ?ǥХ???
ioctl
()
???Ф??? 3
???ܤΰ??????Ѥ??????빽¤?Τ?̾????Ŭ???ǤϤ????ޤ?????
?ޤ??? ioctl
()
???ޥ??ɤ????ˤϥ??ڥ??ߥ????????Ĥ??ĤäƤ??ޤ???
???ߤΤȤ??????ۤʤ? CD
?????????Ф??ưۤʤ??Ǿ??????Ӻ???
?????ॢ?????ͤ????ꤹ?뵡???Ϥ????ޤ?????
?????ͥ륪?ץ????뤤?? sysctl
?ѿ??????ꤷ???????ॢ?????ͤ?
?????ƥ??ˤ??? LUN ?١????? CD
?????????Ƥ?Ŭ?Ѥ????ޤ???
???Τ褦?ʥ??ݡ??Ȥ????????뤳?Ȥϲ?ǽ?Ǥ?????
???ʤ??Ȥ? sysctl
?ˤ????????Ϥ??ޤꥨ?쥬???ȤǤϤ????ޤ?????
?Ȥ????Τϡ????ߤ? sysctl
?????ɤǤϥ????ѥ??????ΥΡ????ɲä?
???갷?????Ȥ??Ǥ??ʤ??????Ǥ???
?????椨??ưŪ???礭???????ꤹ?? sysctl
?ѿ????Ѱդ???
?桼?????٥??Υ桼?ƥ????ƥ????Ѥ??ƥ????ॢ?????ͤ??????ʤ??????ꤹ??
???Ȥˤʤ??Ǥ??礦??
?????ͥ??????ե????????ǡ??ۤʤ? CD
?ǥХ??????Ф???
?̡??Υ????ॢ???Ȥ??????Ǥ????褦?ˤ????ˤϡ?
config(8)
?????????? ????Ū?˵??Ҥ??? cd
?ǥХ????? 2
?ĤΥ????ॢ?????ͤݡ??Ȥ????褦?ˤ??ʤ?????
?ʤ??ʤ????⤷???ޤ?????
?? cd
?ɥ饤?Фϡ?Julian Ellischer ?????Ҥ? 386BSD
0.1 ???о줷?? cd
?ɥ饤?Ф??١????ˤ??Ƥ??ޤ???
cd
?ɥ饤?Ф? CAM
?С????????? Kenneth Merry ?????Ҥ??? FreeBSD
3.0 ?Ǻǽ????о줷?ޤ?????