.\" .\" Copyright (c) 1998 Kenneth D. Merry. .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. The name of the author may not be used to endorse or promote products .\" derived from this software without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/lib/libcam/cam_cdbparse. 3, v 1.3. 2.10 2001/12/17 10:08:28 ru Exp % .\" $FreeBSD: doc/ja_JP.eucJP/man/man3/cam_cdbparse. 3, v 1.5 2002/05/18 07:12:52 horikawa Exp $ .\" .\" This man page borrows heavily from the old scsi(3) man page, which had .\" the following copyright: .\" .\" Copyright (c) 1994 HD Associates (hd@world.std.com) .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by HD Associates .\" 4. Neither the name of the HD Associates nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY HD ASSOCIATES``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL HD ASSOCIATES OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" .Dd October 13, 1998 .Os .Dt CAM_CDBPARSE 3 .Sh ¸íĪ .Nm csio_build , .Nm csio_build_visit , .Nm csio_decode , .Nm csio_decode_visit , .Nm buff_decode , .Nm buff_decode_visit , .Nm csio_encode , .Nm csio_encode_visit , .Nm buff_encode_visit .Nd CAM À¯Àú ÇÁ·Î±×·¥ ¶óÀ̺귯¸® SCSI ¹öÆÛ ÆÄ½º routine .Sh ÇÁ·Î±×·¥ ¶óÀ̺귯¸® .Lb libcam .Sh ¼­½Ä .In stdio.h .In camlib.h .Ft int .Fo csio_build .Fa "struct ccb_scsiio *csio" .Fa "u_int8_t *data_ptr" .Fa "u_int32_t dxfer_len" .Fa "u_int32_t flags" .Fa "int retry_count" .Fa "int timeout" .Fa "char *cmd_spec" .Fa "..." .Fc .Ft int .Fo csio_build_visit .Fa "struct ccb_scsiio *csio" .Fa "u_int8_t *data_ptr" .Fa "u_int32_t dxfer_len" .Fa "u_int32_t flags" .Fa "int retry_count" .Fa "int timeout" .Fa "char *cmd_spec" .Fa "int (*arg_get)(void *hook, char *field_name)" .Fa "void *gethook" .Fc .Ft int .Fo csio_decode .Fa "struct ccb_scsiio *csio" .Fa "char *fmt" .Fa "..." .Fc .Ft int .Fo csio_decode_visit .Fa "struct ccb_scsiio *csio" .Fa "char *fmt" .Fa "void (*arg_put)(void *hook" .Fa "int letter" .Fa "void *val" .Fa "int count" .Fa "char *name)" .Fa "void *puthook" .Fc .Ft int .Fo buff_decode .Fa "u_int8_t *buff" .Fa "size_t len" .Fa "char *fmt" .Fa "..." .Fc .Ft int .Fo buff_decode_visit .Fa "u_int8_t *buff" .Fa "size_t len" .Fa "char *fmt" .Fa "void (*arg_put)(void *, int, void *, int, char *)" .Fa "void *puthook" .Fc .Ft int .Fo csio_encode .Fa "struct ccb_scsiio *csio" .Fa "char *fmt" .Fa "..." .Fc .Ft int .Fo csio_encode_visit .Fa "struct ccb_scsiio *csio" .Fa "char *fmt" .Fa "int (*arg_get)(void *hook, char *field_name)" .Fa "void *gethook" .Fc .Ft int .Fo buff_encode_visit .Fa "u_int8_t *buff" .Fa "size_t len" .Fa "char *fmt" .Fa "int (*arg_get)(void *hook, char *field_name)" .Fa "void *gethook" .Fc .Sh ÇØ¼³ CAM ¹öÆÛ /CDB encode ¹× µðÄÚµå routine´Â, ³°´Ù .Fx .Tn SCSI ·¹À̾îÀÇ, À¯»çÇÑ À̸§ÀÇ .Va scsireq_ Ns * ÇÔ¼ö·Î ¾²¿©Áø À¯Àú ·£µå .Tn SCSI ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇØ, ºñ±³Àû °£´ÜÇÏ°Ô »õ·Î¿î ÀÎÅÍÆäÀ̽º¿¡ÀÇ ÀÌÇà ÇÒ ¼ö ÀÖ´Â ÀÌÄ¡¸¦ Á¦°øÇÕ´Ï´Ù. .Pp ÀÌ·¯ÇÑ ÇÔ¼ö´Â, »õ·Î¿î ¾îÇø®ÄÉÀ̼ÇÀ¸·Î »ç¿ëÇØµµ »ó°üÇÏÁö ¾Ê½À´Ï´Ù¸¸, À¯Àú´Â, .Xr cam 3 ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¿¡ Áý¾î ³ÖÀ» ¼ö ÀÖ¾ú´ø ÇÔ¼ö¸¦ ±¸ÃàÇÏ´Â °¢Á¾ SCSI CCB ±¸Ãà ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â (ºÐ)ÆíÀÌ °£´ÜÇÏ´Ù°í ÇÏ´Â °Í¿¡ ´«Ä¡Ã¤°ÚÁö¿ä ( ¿¹¸¦ µé¾î, .Fn cam_fill_csio , .Fn scsi_start_stop , .Fn csi_read_write ÀÔ´Ï´Ù). .Pp .Fn csio_build (Àº)´Â, º¯¼ö Àμö ¸®½ºÆ®¿¡ Á¦°øµÈ Á¤º¸¸¦ ±âÃÊ·Î ÇØ .Va ccb_scsiio ±¸Á¶Ã¼¸¦ ±¸ÃàÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö´Â, ÀÌ ÇÔ¼ö¿¡°Ô °Ç³×Áö´Â NULL ÀÇ .Fa data_ptrt Àμö¸¦ Á¤¿¬ÇÏ°Ô Ã³¸®ÇÕ´Ï´Ù. .Pp .Fa dxfer_len (Àº)´Â, µ¥ÀÌÅÍ ±¹¸éÀÇ ±æÀÌÀÔ´Ï´Ù. µ¥ÀÌÅÍ Àü¼ÛÀÇ ¹æÇâÀº .Fa flags Àμö¿¡ ÀÇÇØ Á¤ÇØÁý´Ï´Ù. .Pp .Fa data_ptr (Àº)´Â, .Tn SCSI µ¥ÀÌÅÍ ±¹¸éÀÇ »çÀÌ¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅÍ ¹öÆÛÀÔ´Ï´Ù. ¹®Á¦ÀÇ .Tn SCSI ¸í·É¿¡ ´ëÇØ µ¥ÀÌÅͰ¡ Àü¼Û µÇÁö ¾Ê´Â °æ¿ì´Â, À̰ÍÀ» NULL ·Î ¼³Á¤ÇÑ´Ù Çʿ䰡 ÀÖ½À´Ï´Ù. ¸í·É¿¡ ´ëÇØ Àü¼Û ÇÏ´Â µ¥ÀÌÅͰ¡ ÀÖ´Â °æ¿ì´Â, ÀÌ ¹öÆÛ´Â Àû¾îµµ .Fa dxfer_len ÀÇ ±æÀ̰¡ ¾Æ´Ï¸é ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. .Pp .Fa flags ÇÏ .Aq Pa cam/cam_ccb.h ¿¡ Á¤ÀÇµÈ Ç÷¡±×°¡ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. .Bd -literal /* °øÅëÀÇ CCB Çì´õ */ /* CAM CCB Ç÷¡±× */ typedef enum { CAM_CDB_POINTER = 0x00000001,/* CDB Çʵå´Â Æ÷ÀÎÅÍÀÌ´Ù */ CAM_QUEUE_ENABLE = 0x00000002,/* SIM ±â´Ù¸®´Â Çà·Ä óġ´Â À¯È¿ÇÏ´Ù */ CAM_CDB_LINKED = 0x00000004,/* CCB ´Â ¸µÅ© ÇÑ CDB ¸¦ Æ÷ÇÔÇÑ´Ù */ CAM_SCATTER_VALID = 0x00000010,/* ºÐ»ê/¼öÁý ¸®½ºÆ®´Â À¯È¿ÇÏ´Ù */ CAM_DIS_AUTOSENSE = 0x00000020,/* ÀÚµ¿ ŽÁö ±â´ÉÀ» ¹«È¿·Î ÇÑ´Ù */ CAM_DIR_RESV = 0x00000000,/* µ¥ÀÌÅÍ ¹æÇâ (00:¿¹¾àÀÌ ³¡³­ »óÅÂ) */ CAM_DIR_IN = 0x00000040,/* µ¥ÀÌÅÍ ¹æÇâ (01:DATA IN) */ CAM_DIR_OUT = 0x00000080,/* µ¥ÀÌÅÍ ¹æÇâ (10:DATA OUT) */ CAM_DIR_NONE = 0x000000C0,/* µ¥ÀÌÅÍ ¹æÇâ (11:µ¥ÀÌÅÍ ¾øÀ½) */ CAM_DIR_MASK = 0x000000C0,/* µ¥ÀÌÅÍ ¹æÇâ ¸¶½ºÅ© */ CAM_SOFT_RST_OP = 0x00000100,/* ´ë½Å¿¡ ¼ÒÇÁÆ® ¸®¼ÂÆ®¸¦ »ç¿ëÇÑ´Ù */ CAM_ENG_SYNC = 0x00000200,/* ¿Ï·á½Ã¿¡ À׿© ¹ÙÀÌÆ®¸¦ Ç÷¡½Ã ÇÑ´Ù */ CAM_DEV_QFRZDIS = 0x00000400,/* DEV Q µ¿°áÀ» ¹«È¿·Î ÇÑ´Ù */ CAM_DEV_QFREEZE = 0x00000800,/* ½ÇÇà½Ã¿¡ DEV Q ¸¦ µ¿°áÇÑ´Ù */ CAM_HIGH_POWER = 0x00001000,/* ¸í·ÉÀº ´ë·®ÀÇ ´É·ÂÀ» ¾ò´Â´Ù */ CAM_SENSE_PTR = 0x00002000,/* ¼¾½º µ¥ÀÌÅÍ´Â Æ÷ÀÎÅÍÀÌ´Ù */ CAM_SENSE_PHYS = 0x00004000,/* ¼¾½º Æ÷ÀÎÅÍ´Â ¹°¸®ÀûÀÎ ÁÖ¼Ò */ CAM_TAG_ACTION_VALID = 0x00008000,/* ÀÌ ccb ³»¿¡¼­´Â ÅÂ±× Ã³Ä¡¸¦ »ç¿ëÇÑ´Ù */ CAM_PASS_ERR_RECOVER = 0x00010000,/* ¼ö¼ö µå¶óÀ̹ö ¿¡·¯. ȸº¹ */ CAM_DIS_DISCONNECT = 0x00020000,/* Àý´ÜÀ» ¹«È¿·Î ÇÑ´Ù */ CAM_SG_LIST_PHYS = 0x00040000,/* SG ¸®½ºÆ®¿¡ ¹°¸® ÁÖ¼Ò°¡ ÀÖ´Ù */ CAM_MSG_BUF_PHYS = 0x00080000,/* ¸Þ¼¼Áö ¹öÆÛ ptr °¡ ¹°¸®ÀûÀÌ´Ù */ CAM_SNS_BUF_PHYS = 0x00100000,/* ÀÚµ¿ ŽÁö µ¥ÀÌÅÍ ptr °¡ ¹°¸®ÀûÀÌ´Ù */ CAM_DATA_PHYS = 0x00200000,/* SG/¹öÆÛ µ¥ÀÌÅÍ ptr °¡ ¹°¸®ÀûÀÌ´Ù */ CAM_CDB_PHYS = 0x00400000,/* CDB Æ÷ÀÎÅͰ¡ ¹°¸®ÀûÀÌ´Ù */ CAM_ENG_SGLIST = 0x00800000,/* SG ¸®½ºÆ®´Â HBA ¿£Áø¿ëÀÌ´Ù */ /* ±¹¸é ÀÎ½Ä ¸ðµå Ç÷¡±× */ CAM_DIS_AUTOSRP = 0x01000000,/* ÀÚµ¿ º¸Á¸/º¹¿ø Æ÷ÀÎÅ͸¦ ¹«È¿·Î ÇÑ´Ù */ CAM_DIS_AUTODISC = 0x02000000,/* ÀÚµ¿ Àý´ÜÀ» ¹«È¿·Î ÇÑ´Ù */ CAM_TGT_CCB_AVAIL = 0x04000000,/* Ÿ°ÙÀÇ CCB °¡ ÀÌ¿ë °¡´É */ CAM_TGT_PHASE_MODE = 0x08000000,/* SIM °¡ ±¹¸é ¸ðµå·Î ½ÇÇàµÈ´Ù */ CAM_MSGB_VALID = 0x20000000,/* ¸Þ¼¼Áö ¹öÆÛ°¡ À¯È¿ */ CAM_STATUS_VALID = 0x40000000,/* ½ºÅ×ÀÌÅͽº ¹öÆÛ°¡ À¯È¿ */ CAM_DATAB_VALID = 0x80000000,/* µ¥ÀÌÅÍ ¹öÆÛ°¡ À¯È¿ */ /* È£½ºÆ® Ÿ°Ù ¸ðµå Ç÷¡±× */ CAM_TERM_IO = 0x20000000,/* ÀÔÃâ·Â ¸Þ¼¼Áö º¸ÃæÀ» Á¾·á */ CAM_DISCONNECT = 0x40000000,/* Àý´ÜÀº ÇʼöÀÌ´Ù */ CAM_SEND_STATUS = 0x80000000,/* µ¥ÀÌÅÍ ±¹¸éÀÇ µÚ¿¡ ½ºÅ×ÀÌÅͽº¸¦ ¼Û½Å */ } ccb_flags; .Ed .Pp º¹¼öÀÇ Ç÷¡±×¸¦ ÁöÁ¤ÇÏ´Â °æ¿ì, OR (³í¸®ÇÕ)¸¦ ÃëÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ¾î´À CCB Ç÷¡±×¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌÈÄÀÇ Áß¿äÇÑ ¸î°³ÀÇ Ç÷¡±×¿¡ ´ëÇØ¼­´Â Ưº°È÷ ¼³¸íÇØ µÎ´Â °¡Ä¡°¡ ÀÖ½À´Ï´Ù. .Pp .Bl -tag -width CAM_PASS_ERR_RECOVER .It Dv CAM_DIR_IN ¹®Á¦ÀÇ Á¶ÀÛÀÌ Àо Á¶ÀÛÀÎ °ÍÀ» ³ªÅ¸³À´Ï´Ù. Áï, µ¥ÀÌÅÍ´Â .Tn SCSI µð¹ÙÀ̽º·ÎºÎÅÍ À¯Àú ÁöÁ¤ ¹öÆÛ¿¡ ÀоÁö°í ÀÖ½À´Ï´Ù. .It Dv CAM_DIR_OUT Á¶ÀÛÀÌ ±âÀÔÇØ Á¶ÀÛÀÎ °ÍÀ» ³ªÅ¸³À´Ï´Ù. Áï, µ¥ÀÌÅÍ´Â À¯Àú ÁöÁ¤ ¹öÆÛ·ÎºÎÅÍ µð¹ÙÀ̽º¿¡ ±âÀÔÇØÁö°í ÀÖ½À´Ï´Ù. .It Dv CAM_DIR_NONE ÀÌ ¸í·É¿¡ ´ëÇØ Àü¼Û µÇ´Â µ¥ÀÌÅÍ´Â ¾ø´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù. .It Dv CAM_DEV_QFRZDIS µð¹ÙÀ̽º ±â´Ù¸®´Â Çà·ÄÀÇ, ¿¡·¯ ȸº¹ ¸ÞÄ«´ÏÁòÀ¸·Î¼­ÀÇ µ¿°áÀ» ¹«È¿·Î ÇÕ´Ï´Ù. .It Dv CAM_PASS_ERR_RECOVER .Xr pass 4 µå¶óÀ̹ö¿¡ ¿¡·¯ ȸº¹À» À¯È¿ÇÏ°Ô Çϵµ·Ï(µíÀÌ) ÅëÁöÇÕ´Ï´Ù. µðÆúÆ®¿¡¼­´Â ¿¡·¯ ȸº¹ÀÌ ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. Áï, ÀÌ Ç÷¡±× ÇÏÁö¸¸ ¾ø´Â °æ¿ì´Â Àç½ÃÇà Ä«¿îÆ®´Â Àǹ̸¦ °¡ÁöÁö ¾Ê½À´Ï´Ù. .It Dv CAM_DATA_PHYS .Fa data_ptr ¿¡ µé¾î°¡ ÀÖ´Â ÁÖ¼Ò°¡, °¡»ó ÁÖ¼Ò´Â ¾Æ´Ï°í ¹°¸® ÁÖ¼ÒÀÎ °ÍÀ» ³ªÅ¸³À´Ï´Ù. .El .Pp .Fa retry_count (Àº)´Â, ¹®Á¦ÀÇ ¸í·ÉÀ» ¸îȸÀç½ÃÇàÇұ Ä¿³Î¿¡ ÅëÁöÇÕ´Ï´Ù. .Xr pass 4 µå¶óÀ̹ö°¡ .Dv CAM_PASS_ERR_RECOVER Ç÷¡±×¿¡ ÀÇÇØ ȸº¹À» À¯È¿ÇÏ°Ô ÇÏ´Â µí Áö½Ã¹ÞÁö ¾ÊÀº ÇÑ, Àç½ÃÇà Ä«¿îÆ®´Â ¹«½ÃµË´Ï´Ù. .Pp .Fa timeout (Àº)´Â, ÁöÁ¤ÀÇ ¸í·ÉÀÌ ¿Ï·áÇÒ ¶§±îÁö ¾î´À Á¤µµ ´ë±âÇұ Ä¿³Î¿¡ ÅëÁöÇÕ´Ï´Ù. ½Ã°£ÀÌ ²÷¾îÁ® °Ô´Ù°¡ ¸í·ÉÀÌ ¿Ï·áÇϰí ÀÖÁö ¾ÊÀ¸¸é CCB (Àº)´Â, ÇØ´çÇÑ´Ù ¿¡·¯ ½ºÅ×ÀÌÅͽº·Î Ä¿³Î·ÎºÎÅÍ µ¹¾Æ°©´Ï´Ù. .Pp .Fa cmd_specis (Àº)´Â SCSI CDB ¸¦ ±¸ÃàÇϴµ¥ »ç¿ëµÇ´Â CDB Çü½Ä Áö½ÃÀÚÀÔ´Ï´Ù. ÀÌ ÅØ½ºÆ® string´Â, Çʵå Áö½ÃÀÚÀÇ ¸®½ºÆ®·Î ±¸¼ºµË´Ï´Ù. Çʵå Áö½ÃÀÚ´Â, °¢ CDB Çʵå¿ëÀÇ °ª (°ªÀ» º¯¼ö Àμö ¸®½ºÆ®³»ÀÇ ´ÙÀ½ÀÇ Àμö·ÎºÎÅÍ ÃëÇØ¾ß ÇÒ ÀÏÀ» ³ªÅ¸³»´Â Àϵµ Æ÷ÇÔÇÑ´Ù), ÇʵåÀÇ Æø (ºñÆ® ´ÜÀ§ ¶Ç´Â ¹ÙÀÌÆ® ´ÜÀ§), ¹× ¿É¼ÇÀÇ À̸§À» ÁöÁ¤ÇÕ´Ï´Ù. ½ºÆäÀ̽º´Â ¹«½ÃµÇ¾î »þÇÁ ±âÈ£ ('#')´Â, ÇöÀçÀÇ ÇàÀÇ ¸»¹Ì·Î Á¾·áÇÏ´Â ÄÚ¸àÆ®ÀÇ ¼±µÎ¸¦ ³ªÅ¸³À´Ï´Ù. .Pp ¿É¼ÇÀÇ À̸§Àº, Çʵå ÁöÁ¤ÀÚÀÇ ÃÖÃÊÀÇ ºÎºÐÀ̸ç, ¾È°ýÈ£·Î µÑ·¯½ÎÀÔ´Ï´Ù. ´ÙÀ½ÀÇ ¿¹·Î ¾È°ýÈ£·Î µÑ·¯½ÎÀÎ ÅØ½ºÆ®´Â À̸§ÀÔ´Ï´Ù. .Dl "{PS} v:b1 {Reserved} 0:b1 {Page Code} v:b6 # Mode select page" .Pp ÀÌ Çʵå ÁöÁ¤ÀÚ¿¡°Ô´Â, 3 °³ÀÇ Çʵ尡 ÀÖ½À´Ï´Ù. 1 ºñÆ®ÀÇ Çʵ尡 2 °³(»ì)°ú 6 ºñÆ®ÀÇ Çʵ尡 1 °³(»ì)ÀÔ´Ï´Ù. 2 ¹øÂ°ÀÇ 1 ºñÆ® Çʵå´Â Á¤¼öÄ¡ 0 À̸ç, ÃÖÃÊÀÇ 1 ºñÆ® Çʵå¿Í 6 ºñÆ® Çʵå´Â, º¯¼ö Àμö ¸®½ºÆ®·ÎºÎÅÍ ³õĨ´Ï´Ù. º¹¼ö ¹ÙÀÌÆ®ÀÇ Çʵå´Â SCSI ÀÇ ¾Æ¸£¹ÙÀÌÆ® ¼ø¼­·Î CDB ³»¿¡ ½º¿Ò µÇ¾î ½ºÆäÀ̽º´Â ¹«½ÃµË´Ï´Ù. .Pp Çʵ尡 16 Áø¼öÄ¡ ¶Ç´Â ij¸¯ÅÍ v ¶§ ( ¿¹¸¦ µé¾î, .Fa "1A" ¶Ç´Â .Fa "v") , 1 ¹ÙÀÌÆ®Ä¡°¡ CDB ¾ÈÀÇ ´ÙÀ½ÀÇ ¹Ì»ç¿ë ¹ÙÀÌÆ®¿¡ Ä«Çǵ˴ϴÙ. ij¸¯ÅÍ .Fa v ÇÏÁö¸¸ »ç¿ëµÇ°í ÀÖÀ» ¶§, ´ÙÀ½ÀÇ Á¤¼ö Àμö°¡ º¯¼ö Àμö ¸®½ºÆ®·ÎºÎÅÍ ³õÃÄ ±× °ªÀÌ »ç¿ëµË´Ï´Ù. .Pp Á¤¼öÀÇ 16 Áø¼öÄ¡¿¡ ÇÊµåÆøÀÇ ÁöÁ¤ÀÚ, ¶Ç´Â ij¸¯ÅÍ .Fa v ¿¡ ÇÊµåÆøÁöÁ¤ÀÚ Çʵ尡 °è¼ÓµÈ °Í ( ¿¹¸¦ µé¾î, .Fa 3:4 , .Fa 3:b4 , .Fa 3:i3 , .Fa v:i3 ) (Àº)´Â, ÁöÁ¤ÀÇ ºñÆ® ¶Ç´Â ¹ÙÀÌÆ®ÆøÀÇ Çʵ带 ÁöÁ¤ÇÕ´Ï´Ù. Á¤¼öÄ¡, ¶Ç´Â (V ÁöÁ¤ÀÚÀÇ °æ¿ì) °¡º¯ Àμö ¸®½ºÆ®ÀÇ ´ÙÀ½ÀÇ Á¤¼öÄ¡°¡, CDB ÀÇ ´ÙÀ½ÀÇ ¹Ì»ç¿ë ºñÆ® ¶Ç´Â ¹ÙÀÌÆ®¿¡ Ä«Çǵ˴ϴÙ. .Pp 10 Áø¼ö ¶Ç´Â ij¸¯ÅÍ .Fa b ¿¡ 10 Áø¼ö ÇÊµåÆøÀÌ °è¼ÓµÈ °ÍÀº, ±× ÆøÀÇ ºñÆ® Çʵ带 ³ªÅ¸³À´Ï´Ù. ºñÆ® Çʵå´Â, °¡´ÉÇÑ ÇÑ ±ä¹ÐÈ÷ ÆÑ µÇ¾î »óÀ§ ºñÆ®·Î °³½ÃÇØ (SCSI »ç¾ç°ú °°Àº °ÍÀ» ÀоÁöµµ·Ï(µíÀÌ)ÀÔ´Ï´Ù ) , 1 ¹ÙÀÌÆ®°¡ ¿ÏÀüÇÏ°Ô °¡µæÇÏ°Ô µÉ ¶§´Â ¾ðÁ¦¶óµµ, ¶Ç´Â .Fa i Çʵ尡 °ËÃâµÇ¾úÀ» ¶§´Â, CDB ÀÇ »õ·Î¿î ¹ÙÀÌÆ®°¡ °³½ÃµË´Ï´Ù. .Pp ij¸¯ÅÍ .Fa i ÀÇ ÈÄ¿¡ 1, 2, 3, ¶Ç´Â 4 °¡ °è¼ÓµÈ ÇÊµåÆøÁö½ÃÀÚ´Â, .Tn SCSI ¹ÙÀÌÆ®¼ø¼­ (MSB °¡ ¼±µÎ)¿¡ ½º¿Ò ÇØ¾ß ÇÑ´Ù 1, 2, 3, ¶Ç´Â 4 ¹ÙÀÌÆ®ÀÇ Á¤¼öÄ¡¸¦ ³ªÅ¸³À´Ï´Ù. .Pp .Fa v Çʵå Áö½ÃÀÚ¿¡ ´ëÇØ¼­´Â, ´ÙÀ½ÀÇ Á¤¼ö Àμö°¡, º¯¼ö Àμö ¸®½ºÆ®·ÎºÎÅÍ ³õÃÄ ±× °ªÀÌ SCSI ¼ø¼­¿¡ ½º¿Ò Çϴµ¥ »ç¿ëµË´Ï´Ù. .Pp .Fn csio_build_visit ÇÏ .Fn csio_build (¿Í)°ú µ¿ÀÛÀÌ À¯»çÇϰí ÀÖ½À´Ï´Ù¸¸, .Fa cmd_spec ¾ÈÀÇ º¯¼ö Àμö¿¡ ¿Å°ÜÁö´Â °ªÀÌ, .Xr stdarg 3 ¿¡ ÀÇÇØ¼­°¡ ¾Æ´Ï¶ó, .Fn csio_build_visit ¿¡ °Ç³×¹Þ´Â´Ù .Fn arg_get ÇÔ¼ö¿¡ ÀÇÇØ ²¨³»Áö´Â Á¡ÀÌ ´Ù¸¨´Ï´Ù. .Fn arg_get ÇÔ¼ö´Â ´ÙÀ½ÀÇ 2 °³ÀÇ Àμö¸¦ ÃëÇÕ´Ï´Ù. .Bl -tag -width field_name .It Fa gethook (Àº)´Â ÇÔ¼ö È£Ã⸶´Ù .Fn arg_get ÇÔ¼ö¿¡°Ô °Ç³×Áý´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, .Fn arg_get ÇÔ¼ö´Â, ±Û·Î¹ú º¯¼ö ¶Ç´Â Á¤Àû º¯¼ö¸¦ »ç¿ëÇÏÁö ¾Ê°í , »çÀÌÀÇ È£Ã⵿¾È¿¡ »óÅÂÀÇ ¾ó¸¶ÀÎÁö¸¦ º¸°ü À¯ÁöÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. .It Fa field_name (Àº)´Â, .Fa fmt (ÀÌ)°¡ ÀÖ´Â °æ¿ì´Â °Å±â¿¡ µû¶ó ÁÖ¾îÁö´Â À̸§ÀÔ´Ï´Ù. .El .Pp .Fn csio_decode (Àº)´Â, SCSI Àü¼ÛÀÇ ±¹¸éÀ¸·Î µ¥ÀÌÅÍÀÇ Á¤º¸¸¦ µðÄÚµåÇϴµ¥ »ç¿ëµË´Ï´Ù. .Pp µðÄÚµå´Â, .Fn csio_build ÀÇ ¸í·É Áö½ÃÀÚ Ã³¸®¿¡ À¯»çÇϰí ÀÖ½À´Ï´Ù¸¸, .Fa csio->data_ptr ¿¡ ÀÇÇØ °¡¸®ÄÑÁö´Â µ¥ÀÌÅͷκÎÅÍ µ¥ÀÌŸ¸¦ »Ì±â ½ÃÀÛÇÏ´Â Á¡ÀÌ ´Ù¸¨´Ï´Ù. stdarg ¸®½ºÆ®´Â, Á¤¼öÄ¡´Â ¾Æ´Ï°í Á¤¼ö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍÀÔ´Ï´Ù. ½ÃÅ© field type¿Í ¾ïÁ¦ ¼ö½ÄÀÚ°¡ Ãß°¡µË´Ï´Ù. .Fa * ¾ïÁ¦ ¼ö½ÄÀÚ ( ¿¹¸¦ µé¾î, .Fa *i3 ¶Ç´Â .Fa *b4 ) (Àº)´Â, Çʵå·ÎºÎÅÍÀÇ ÇÒ´çÀ» ¾ïÁ¦ÇØ, µ¥ÀÌÅͳ»ÀÇ ¹ÙÀÌÆ® ¶Ç´Â ºñÆ®¸¦ ½ºÅµ Çϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰Ϳ¡ ÀÇÇØ arg ¸®½ºÆ®³»ÀÇ ´õ¹Ì º¯¼ö¿¡ Ä«ÇÇÇÒ Çʿ䰡 ¾ø¾îÁý´Ï´Ù. .Pp ½ÃÅ© field type .Fa s ¿¡ ÀÇÇØ, µ¥ÀÌÅ͸¦ ½ºÅµ ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº, '+'ºÎÈ£ÀÇ Á¸ÀçÀÇ À¯¹«¿¡ ±Ù°ÅÇØ, µ¥ÀÌÅͳ»ÀÇ Àý´ë À§Ä¡ .Pq Fa s3 ¶Ç´Â »ó´ë À§Ä¡ .Pq Fa s+3 (À»)¸¦ ã½À´Ï´Ù. ½Ãũġ´Â .Fa v (À¸)·Î¼­ ÁöÁ¤ÇÒ ¼ö°¡ ÀÖ¾î Àμö ¸®½ºÆ® ÀÇ ´ÙÀ½ÀÇ Á¤¼öÄ¡°¡ ½Ãũġ·Î¼­ »ç¿ëµË´Ï´Ù. .Pp .Fn csio_decode_visit (Àº)´Â, .Fn csio_decode (¿Í)°ú °°ÀÌ µ¿ÀÛÇÕ´Ï´Ù¸¸, µðÄÚµå ÇÑ ¹öÆÛÀÇ ³»¿ëÀ» °¡º¯Àå Àμö¿¡ ¹èÄ¡ÇÏ´Â ´ë½Å¿¡, µðÄÚµåÇÑ ¹öÆÛ ÀÇ ³»¿ëÀº, °Ç³×¹Þ¾Ò´Ù .Fn arg_put ÇÔ¼ö¸¦ ÅëÇØ¼­ À¯Àú¿¡°Ô µ¹·ÁÁÖ¾îÁö´Â Á¡ÀÌ ´Ù¸¨´Ï´Ù. .Fn arg_put ÇÔ¼ö´Â, ´ÙÀ½ÀÇ ¸î°³ÀÇ Àμö¸¦ ÃëÇÕ´Ï´Ù. .Bl -tag -width letter .It Fa hook "hook" ´Â, .Fn arg_put ÇÔ¼ö°¡ È£Ã⵿¾È¿¡¼­ »óŸ¦ º¸Á¸ÇÒ ¼ö ÀÖµµ·Ï(µíÀÌ) ÇÑ´Ù ¸ÞÄ«´ÏÁòÀÔ´Ï´Ù. .It Fa letter ÇÔ¼ö¿¡°Ô °Ç³×Áö´Â ÀμöÀÇ Çü½ÄÀ» ±â¼úÇϴ ij¸¯ÅÍÀÔ´Ï´Ù. .It Fa val ÇÔ¼ö¿¡°Ô °Ç³×Áö´Â °ªÀ» °¡¸®Å°´Â void Æ÷ÀÎÅÍÀÔ´Ï´Ù. .It Fa count .Fn arg_put ÇÔ¼ö¿¡°Ô °Ç³×Áö´Â °ªÀÇ »çÀÌÁîÀÔ´Ï´Ù. ÀμöÀÇ Æ÷¸Ë¿¡ ÀÇÇØ Å©±âÀÇ ´ÜÀ§°¡ Á¤ÇØÁý´Ï´Ù. .It Fa name ÇʵåÀÇ ÅØ½ºÆ® ±â¼úÀÔ´Ï´Ù. ´Ù¸¸ .Fa fmt ¾È¿¡ ±×°ÍÀÌ ÁغñµÇ¾î ÀÖ´Ù °æ¿ìÀÔ´Ï´Ù. .El .Pp .Fn buff_decode (Àº)´Â, .Fn csio_decode ¿¡ ºÙ¾î Àü¼úÇÑ ¹æ½ÄÀ» »ç¿ëÇØ ÀÓÀÇÀÇ µ¥ÀÌÅÍ ¹öÆÛ¸¦ µðÄÚµåÇÕ´Ï´Ù. .Pp .Fn buff_decode_visit (Àº)´Â, .Fn csio_decode_visit ¿¡ ºÙ¾î Àü¼úÇÑ ¹æ½ÄÀ» »ç¿ëÇØ ÀÓÀÇÀÇ µ¥ÀÌÅÍ ¹öÆÛ¸¦ µðÄÚµåÇÕ´Ï´Ù. .Pp .Fn csio_encode (Àº)´Â, .Fn csio_build ¿¡ ºÙ¾î Àü¼úÇÑ ¹æ½ÄÀ» »ç¿ëÇØ, .Va ccb_scsiio ÀÇ ±¸Á¶ .Fa data_ptr ºÎºÐ (CDB (Àº)´Â ¾Æ´Ï´Ù ) (À»)¸¦ encode ÇÕ´Ï´Ù. .Pp .Fn csio_encode_visit (Àº)´Â, .Fn csio_build_visit ¿¡ ºÙ¾î Àü¼úÇÑ ¹æ½ÄÀ» »ç¿ëÇØ, .Va ccb_scsiio ±¸Á¶ÀÇ .Fa data_ptr ºÎºÐ (CDB (Àº)´Â ¾Æ´Ï´Ù ) (À»)¸¦ encode ÇÕ´Ï´Ù. .Pp .Fn buff_encode_visit (Àº)´Â, .Fn csio_build_visit ¿¡ ºÙ¾î Àü¼úÇÑ ¹æ½ÄÀ» »ç¿ëÇØ, ÀÓÀÇÀÇ µ¥ÀÌÅÍ Æ÷ÀÎÅ͸¦ encode ÇÕ´Ï´Ù. .Pp .Sh ¹Ýȯ°ª .Fn csio_build , .Fn csio_build_visit , .Fn csio_encode , .Fn csio_encode_visit ¹× .Fn buff_encode_visit (Àº)´Â, ó¸®ÇÊ º¸°íÀÇ ÇʵåÀÇ ¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. .Pp .Fn csio_decode , .Fn csio_decode_visit , .Fn buff_decode ¹× .Fn buff_decode_visit (Àº)´Â, ½ÇÇàµÈ ÇÒ´çÀÇ ¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. .Pp .Sh °ü·Ã Ç׸ñ .Xr cam 3 , .Xr pass 4 , .Xr camcontrol 8 .Pp .Sh ¿ª»ç ÀÌ·¯ÇÑ ÇÔ¼öÀÇ CAM ¹öÁ¯Àº, ³°´Ù .Fx ÀÇ .Tn SCSI ·¹À̾î¿ëÀ¸·Î ½ÇÇöµÈ À¯»çÇÑ ÇÔ¼ö¸¦ ±âÃÊ·Î Çϰí ÀÖ½À´Ï´Ù. .Tn SCSI ÀÇ ³°Àº Äڵ峻ÀÇ encode/µðÄÚµå ÇÔ¼ö´Â Peter Dufault °¡ ÀÛ¼ºÇÑ °ÍÀÔ´Ï´Ù. .Pp ´Ù¼öÀÇ ½Ã½ºÅÛ¿¡, À¯Àú °ø°£¿¡¼­ SCSI ¸í·ÉÀ» À¯Àú°¡ ±¸ÃàÇÒ ¼ö ÀÖ´Â, À̰Ͱú ÇÊÀûÇÏ´Â ÀÎÅÍÆäÀ̽º°¡ ÀÖ½À´Ï´Ù. .Pp ³°´Ù .Va scsireq µ¥ÀÌÅÍ ±¸Á¶´Â, SGI ÀÇ /dev/scsi µ¥ÀÌÅÍ ±¸Á¶¿Í °ÅÀÇ °°¾Ò½À´Ï´Ù. ÀúÀÚÀÇ À̸§À» ¾Ë°í ÀÖ´Â »ç¶÷Àº ¿©±â¿¡ ¿¬¶ôÇØ ÁÖ¼¼¿ä. Peter Dufault ´Â, 1989 ³âÀÇ ¡¸Sun Expert¡¹ÀâÁö·Î, ÃÖÃÊ·Î À̰Ϳ¡ ´ëÇØ Àоú½À´Ï´Ù. .Pp »õ·Î¿î CCB µ¥ÀÌÅÍ ±¸Á¶´Â, CAM-2 ¹× CAM-3 »ç¾ç¿¡ À¯·¡Çϰí ÀÖ½À´Ï´Ù. .Pp .An Peter Dufault (Àº)´Â, .Bx 386 ±×¸®°í SGI ÀÇ ÀÎÅÍÆäÀ̽ºÀÇ Å¬·ÐÀ» ½ÇÇöÇß½À´Ï´Ù. À̰ÍÀÌ ¿À¸®Áö³¯ÀÇ .Fx .Tn SCSI ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¿Í °ü·Ã Ä¿³Î ioctl ¿¡ À̸£´Â °ÍÀÌ µÇ¾ú½À´Ï´Ù. ȣȯ¼ºÀÇ Çʿ䰡 ÀÖ´Â °æ¿ì´Â, dufault@hda.com ¿¡ ¿¬¶ôÇØ ÁÖ¼¼¿ä. .Sh ÀúÀÚ Kenneth Merry °¡, ÀÌ·¯ÇÑ encode ¹× µðÄÚµåÀÇ ÇÔ¼öÀÇ CAM ¹öÁ¯À» ½ÇÇöÇß½À´Ï´Ù. ÀÌ ÇöÀçÀÇ ÀÛ¾÷Àº, Peter Dufault ¿¡ ÀÇÇϱâ ÀÌÀüÀÇ ÀÛ¾÷À» ±âÃÊ·Î Çϰí ÀÖ½À´Ï´Ù. .Sh ¹ö±× CDB ¹× .Tn SCSI CCB ÀÇ µ¥ÀÌÅÍ ¹öÆÛ ºÎºÐÀÇ ¾çÂÊ ¸ðµÎ¸¦ encode ÇÏ´Â ÇÔ¼ö´Â ¾Æ¸¶ ÇÊ¿äÇϰÚÁö¿ä. .Xr camcontrol 8 ±×¸®°í ÀÓÀÇÀÇ ¸í·É ½ÇÇà Äڵ带 ½ÇÇöÇϰí ÀÖ´Â µ¿¾È¿¡ ³ª´Â ÀÌ Çʿ伺¿¡ ´«Ä¡Ã«½À´Ï´Ù¸¸, ±×·¯ÇÑ ÇÔ¼ö¸¦ ½ÇÇöÇÏ´Â ½Ã°£ÀÌ ¾ÆÁ÷ ¾ø½À´Ï´Ù. .Pp CCB Ç÷¡±×ÀÇ ¼³¸í¿¡´Â »ç½ÇÀº ¿©±â¿¡ ¼ÓÇÏÁö ¾Ê´Â °ÍÀÌ ÀÖ½À´Ï´Ù. ±×°ÍµéÀº ÀϹÝÀÇ CCB ¸Þ´º¾ó ÆäÀÌÁö¿¡ ¼ÓÇÕ´Ï´Ù. ±× ¸Þ´º¾ó ÆäÀÌÁö´Â ¾ÆÁ÷ ¾²¿©ÁöÁö ¾Ê±â ¶§¹®¿¡, ¿©±â¼­ÀÇ ÂªÀº ¼³¸íÀ¸·Î µµ¿òÀÌ µÇ°Ô ÇÏÁö ¾ÊÀ» ¼ö ¾ø½À´Ï´Ù.