̾??
ch
— SCSI
???ǥ????????? (???塼???ܥå???)
?ɥ饤??
device ch
device ch1
target 4 lun 0
ch
?ɥ饤?Фϡ? SCSI
???ǥ??????????ݡ??Ȥ??ޤ??????Υɥ饤?Фϡ?¿???Υ????åȤ?
¸?ߤ??????ǥ?????ʣ???Υɥ饤?֤δ֤?¿?Ų????????ѤǤ????褦?ˤ??ޤ???
???????ǥХ????ˤϡ????ץ??????Ȥ??ƥС??????ɥ?????????դ??뤳??
???Ǥ??ޤ??????Υ?????Ȥ??????ǥ??????տ魯?????????ɤ߹??ߤޤ???
SCSI
?????????ƥ????Ȥ߹??????ˡ?SCSI
?????ץ????????Ȥ߹?????
????ɬ?פ??????ޤ???
?֡??Ȼ??? SCSI
?????ץ????ץ????֤??Ƥ????Ȥ??ˡ?
SCSI
?Х??????????ǥХ?????õ???ޤ???`Changer'
?????פǤ????ȱ????????ǥХ?????
???Ĥ????ȡ????????? ch
?ɥ饤?Фˡ֥????å??פ????ޤ???
2.1 ???????Υ?????? FreeBSD
?Ǥϡ??ǽ??˸??Ĥ??ä??ǥХ?????
ch0
?˥????å????졢?ʸ師?Ĥ??ä??ǥХ????Ͻ缡??
ch1
?ʤɤ˥????å??????ޤ??? 2.1
???顢?????ǥХ??????ɤ? ch
???˥åȤȤ?????³???٤?????????
?Ǥ????褦?ˤʤ??ޤ????????Τ????Υ????ͥ??????ˤĤ??Ƥϡ?
scsi(4)
?Ȥ??Ʋ???????
?????κݤˡ????ץ??????Ȥ???
count ?????ꤷ?????硢???ο???????
SCSI ???ǥ????????㤬???ꤵ???ޤ???
?ɥ饤?Фε????ΰ??ΤۤȤ??ɤϡ??ǥХ????????Ĥ??ä????ˤΤ?
???????Ƥ??????Τǡ??????????ΥǥХ????????ꤷ?Ƥ?
?⤯?ϤĤ??ޤ???
(?ҤȤ??Ӻǽ??ΥǥХ??????ɥ饤?Ф??Ȥ߹?????????)??
?桼???⡼?ɥץ????????ϡ????˼???
ioctl ???Ȥäƥ??????ɥ饤?Ф?
?ǡ????Τ????Ȥ????Ԥʤ??ޤ????????ͥ??ȥ??????ǥХ????Ȥδ֤?
?ǡ????Τ????Ȥ??ǻ??Ѥ????롢?????㥨???????ȤΥ??ɥ쥹?ϡ?
0
?????Ϥޤ????????ɥ쥹?˳??????Ƥ????ޤ????????????ȤΥ????פ?
???Τ褦?˻??ꤷ?ޤ???
CHET_MT
- ???ǥ?????ư?????????? (?ԥå?)
CHET_ST
- ???ȥ졼???????????? (?????å?)
CHET_IE
- ????????/?????Ф??????????? (?ݡ?????)
CHET_DT
- ?ǡ???ž???????????? (?ɥ饤??)
???˼???
ioctl(2)
?ƤӽФ???????????Ŭ?Ѥ????ޤ??????????ϥإå??ե?????
⟨sys/chio.h⟩
???????????ޤ???
CHIOMOVE
- (
struct changer_move
)
?????ϡ????ߤΥԥå????Ѥ??ơ????ǥ????륨???????Ȥ????̤?
?????????Ȥ˰?ư?????ޤ? (MOVE
MEDIUM)????ư???Ȱ?ư????
?????????Ȥϡ?changer_move
??¤?Τ????ǻ??ꤷ?ޤ??????ι?¤?Τϡ?
???ʤ??Ȥ⼡?˼????ե??????ɤ??????ޤ???
u_int cm_fromtype; /* ??ư???????????ȤΥ????? */
u_int cm_fromunit; /* ??ư???????????Ȥ????????˥å? */
u_int cm_totype; /* ??ư?襨???????ȤΥ????? */
u_int cm_tounit; /* ??ư?襨???????Ȥ????????˥å? */
u_int cm_flags; /* ????¾?ե饰 */
cm_flags ?ե??????ɤ? CM_INVERT
?????ꤵ???Ƥ??????硢
???ǥ??????????ϰ?ư???˥??ǥ?????ȿž???????褦?˻ؼ??????ޤ???
CHIOEXCHANGE
- (
struct changer_exchange
)
?????ϡ???ư???????????Ȥˤ??????ǥ??????ǽ??ΰ?ư?襨???????Ȥ˰?ư??????
?ǽ??ΰ?ư?襨???????Ȥˤ??ä????ǥ?????
2 ???ܤΰ?ư?襨???????Ȥ?
??ư?????ޤ???ñ???ʸξ??硢??ư????
2 ???ܤΰ?ư???Ȥ?Ʊ???Ǥ???
ɬ?פ??????ޤ????????????ο??Ԥ˺ݤ????ߤΥԥå????Ѥ??????ޤ????ƶ???
?????륨???????ȤΥ??ɥ쥹?ϡ?changer_exchange
??¤?Τ˴ޤ??? ioctl
???Ф??ƻ??ꤷ?ޤ??????ι?¤?ΤϾ??ʤ??Ȥ⼡?????Ǥ??????ޤ???
u_int ce_srctype; /* ??ư???????????ȤΥ????? */
u_int ce_srcunit; /* ??ư???????????˥å? */
u_int ce_fdsttype; /* ?ǽ??ΰ?ư?襨???????ȤΥ????? */
u_int ce_fdstunit; /* ?ǽ??ΰ?ư???????????˥å? */
u_int ce_sdsttype; /* 2???ܤΰ?ư?襨???????ȤΥ????? */
u_int ce_sdstunit; /* 2???ܤΰ?ư???????????˥å? */
u_int ce_flags; /* ????¾?ե饰 */
ce_flags ?????ǡ?CM_INVERT1 ?? CM_INVERT2 ??????
?Ǥ??????????Ϥ??줾?졢?ǽ??Υ??ǥ?????
2 ???ܤΥ??ǥ???????ư????
ȿž?????ޤ???
???ε?ǽ?ϥƥ??Ȥ??Ƥ??ޤ?????
CHIOPOSITION
- (
struct changer_position
)
?????ϡ????ߤΥԥå?????ư???????ꤷ???????????Ȥ??????֤??ޤ???
?????????Ȥ? changer_position
??¤?Τǻ??ꤷ?ޤ????????Ͼ??ʤ??Ȥ?
???????Ǥ??????ޤ???
u_int cp_type; /* ?????????ȤΥ????? */
u_int cp_unit; /* ?????????Ȥ????????˥å? */
u_int cp_flags; /* ????¾?ե饰 */
cp_flags ?ե??????ɤ? CP_INVERT
???????Ǥ?????????
??ư???˥ԥå???ȿž?????ޤ???
CHIOGPICKER
- (
int
)
?????ϡ????ߤΥԥå??????????ɥ쥹???֤??ޤ???
CHIOSPICKER
- (
int
)
?????ϡ?Ϳ???????????ɥ쥹???ؤ??ԥå??????ޤ???
CHIOGPARAMS
- (
struct changer_params
)
?????ϡ????ǥ????????????????ѥ???????֤??ޤ???????
ioctl ?ϡ? ?桼?????Ϥ??? changer_params
??¤?ΤΡ?
???ʤ??Ȥ??ʲ??Υե??????ɤ??????ޤ???
u_int cp_npickers; /* ?ԥå??ο? */
u_int cp_nslots; /* ?????åȤο? */
u_int cp_nportals; /* ????????/?????Ф??ݡ??????ο? */
u_int cp_ndrives; /* ?ɥ饤?֤ο? */
???ץꥱ?????????? CHIGSTATUS ioctl
???Ѥ??ƥ??塼???ܥå?????
???֤?Ĵ?٤????????äơ????塼???ܥå????ν??????䤤???碌???ݤˡ?????
?ƤӽФ??????ѤǤ??ޤ???
CHIOIELEM
- ?????ϡ????ǥ??????????ǥХ??????Ф???INITIALIZE
ELEMENT STATUS
?ƤӽФ????Ԥʤ??ޤ????????ˤ??ꡢ???ǥ??????????ϡ??????ɤ??Ƥ???
???ǥ????˴ؤ??????????־??????????????ޤ????????㤬???٥??????
???ľ??硢?С??????ɥ??٥????????⤢?碌?ƹԤʤ??ޤ??????θƤӽФ??Ǥϡ?
ch
?ɥ饤?Фξ??֤ϱƶ????????ޤ?????
CHIOGSTATUS
- (
struct changer_element_status_request
)
?????ϡ????ǥ??????????ǥХ??????Ф???READ
ELEMENT STATUS
?ƤӽФ????Ԥʤ??ޤ??????θƤӽФ??ϥ??ǥ???????????
?????????Ⱦ??־??????ɤ߹??ߡ???????
changer_element_status
??¤?Τ????????Ѵ????ޤ???
CHIOGSTATUS
?θƤӽФ????Ȥˡ????륿???פ?
1 ?İʾ??Υ????????Ȥξ??֤?
?䤤???蘆???ޤ???
???ץꥱ?????????? changer_element_status_request
??¤?Τ? ch
?ɥ饤?Ф??Ϥ??ޤ??????ι?¤?Τϼ??˼????ե??????ɤ??????ޤ???
u_int cesr_element_type;
u_int cesr_element_base;
u_int cesr_element_count;
u_int cesr_flags;
struct changer_element_status *cesr_element_status;
?ɥ饤?ФϤ??ι?¤?Τ??ɤ߹??ߡ??????ס??????١??????ɥ쥹???????????ȿ?
?????ꤷ??cesr_element_status ?ե??????ɤ??ؤ?
changer_element_status
??¤?Τ??????ˤɤξ??????֤??????Τ??ޤ??????ץꥱ?????????ϡ?
cesr_element_count ?Ĥξ??ֹ?¤??
(???Ʋ?????) ???ݻ??????Τ?
??ʬ???礭???Υ??????????????Ƥ?ɬ?פ??????ޤ???cesr_flags
?˥??ץ??????? CESR_VOLTAGS
?????ꤷ???ܥ??塼?ॿ?? (?С???????)
?????塼???ܥå???????
?ɤ߹??????֤?ɬ?פ????뤳?Ȥ????ΤǤ??ޤ???
cesr_element_base ?ե??????ɤ? cesr_element_count
?ե??????ɤϡ?
????????ʪ??Ū?????˾Ȥ餷?????????ͤǤʤ????Фʤ??ޤ??⤷
???????ͤǤʤ????硢
CHIOGSTATUS
ioctl ??
EINVAL
???顼?????ɤ??֤??ޤ???
?????????ȤˤĤ??Ƥξ????ϡ?changer_element_status
??¤?Τ???????????
?֤????ޤ??????ι?¤?ΤϾ??ʤ??Ȥ⼡?˼????ե??????ɤ??????ޤ???
u_int ces_addr; /* ???ǥ??????????Υ????????ȥ??ɥ쥹 */
u_char ces_flags; /* ?ʲ??? CESTATUS ???????? */
u_char ces_sensecode; /* ?????????Ȥ??ɲå??????? */
u_char ces_sensequal; /* ?ɲå??????ɽ????? */
u_char ces_invert; /* ȿž?ӥå? */
u_char ces_svalid; /* ??ư?????ɥ쥹 (ces_source) ??ͭ?? */
u_short ces_source; /* ???ǥ????ΰ?ư?????ɥ쥹 */
changer_voltag_t ces_pvoltag; /* ?ץ饤?ޥ??ܥ??塼?ॿ?? */
changer_voltag_t ces_avoltag; /* ???إܥ??塼?ॿ?? */
u_char ces_idvalid; /* ces_scsi_id ??ͭ?? */
u_char ces_scsi_id; /* ?????????Ȥ? SCSI id (ces_idvalid ???? 0 ?ξ???) */
u_char ces_lunvalid; /* ces_scsi_lun ??ͭ?? */
u_char ces_scsi_lun; /* ?????????Ȥ? SCSI lun (ces_lunvalid ???? 0 ?ξ???) */
ces_addr
?ե??????ɤϡ????ǥ??????????κ?ɸ?Ϥ?ɽ????
?????????ȤΥ??ɥ쥹???ݻ????ޤ????ɥ饤?ФϤ????????Ѥ??ޤ?????
??????Ū?Τߤǻ??Ѥ??Ʋ???????
ces_flags
?ե??????ɤ??Ф??????˼????ե饰???????????ޤ???
CESTATUS_FULL
- ???ǥ?????¸?ߤ??ޤ???
CESTATUS_IMPEXP
- ???ǥ??????֤????Τϥ??ڥ졼???Ǥ?
(?ԥå????֤??????ΤǤϤ????ޤ???)??
CESTATUS_EXCEPT
- ???Υ????????Ȥ??㳰Ū????
(?㤨?С??С??????ɥ??٥뤬???????͡?
?С??????ɤ??ޤ??????????Ƥ??ʤ?)
?ˤ????ޤ???
CESTATUS_ACCESS
- ???Υ????????Ȥϥԥå??ˤ??äƥ?????????ǽ?ʾ??֤Ǥ???
CESTATUS_EXENAB
- ???Υ????????Ȥϥ??ǥ????????Ф??ݡ??Ȥ??Ƥ??ޤ???
CESTATUS_INENAB
- ???Υ????????Ȥϥ??ǥ??????????ߤݡ??Ȥ??Ƥ??ޤ???
???٤ƤΥ????????ȥ????פ??Ф????٤ƤΥե饰??ͭ???Ȥϸ¤??ʤ????Ȥ?
???դ??Ʋ???????
???ΥС????????? ch
?ɥ饤?Фϡ?DEC TZ875 (5 ?????åȡ?1 DLT
?ɥ饤??) ?? Breece Hill Q47 (60 ?????åȡ?4 DLT
?ɥ饤?֡??С??????ɥ???դ?)
???Ѥ??ƥƥ??Ȥ??? ?????ޤ???
?ƥ??Ȥ????ѤǤ????ǥХ?????ɬ?פʥ??ޥ??ɤݡ??Ȥ??Ƥ??ʤ??Ȥ???
???¤ˤ??ꡢ ch
?ɥ饤?Ф????ݡ??Ȥ??뵡ǽ??¿???ϡ??????˥ƥ??ȤǤ??Ƥ??ޤ??????ϡ?
???إܥ??塼?ॿ???????ǥ???ȿž???????????Ȥλ???????/?????Ф????
ʣ???ԥå????????¾?ε?ǽ???????ޤ???
ch
?ϡ? And Communications,
http://www.and.com/ ?? Jason R. Thorpe
⟨thorpej@and.com⟩
?????Ҥ??ޤ????????????μ??ΥǥХ????????äƤ???
Stefan Grefen
⟨grefen@goofy.zdv.uni-mainz.de⟩
???????ƥ????դ??ä??ޤ????? ?????? CAM
?˰ܿ??????Τϡ? Kenneth
Merry ⟨ken@FreeBSD.ORG⟩ ?Ǥ???
?????????ƥܥ??塼?ॿ???ݡ??Ȥ????褦?ˤ????Τϡ?
Hans Huebner ⟨hans@artcom.de⟩
?Ǥ???
??Ϣ?ե?????
- /dev/ch[0-9]
- ?ǥХ????????ȥ?
???ǥ????????㤬 ch
?ɥ饤?Ф??᤹?뵡ǽ?ݡ??Ȥ??Ƥ??ʤ????硢?????ǵ??Ҥ???
ioctl ??
?Ф????????륨?顼???å??????ȥ??顼??????ɤ????????ޤ???
ch
?ϡ?386BSD 0.1
?Ǹ????ޤ?????