Ciprico Rimfire 3880 ユーザーズマニュアル

ページ / 230
21020285 D
User’s Guide
 Chapter 4   Command Operation
Page 4 - 24 
Example ‘C’ Routines for Command List 
BYTE  cdb[12];
/* cdb - Command Descriptor Block/
} parameter_block;
/* status_block - a structure used to hold the status information that is returned from
* the adapter.
*/
typedef struct
{
DWORD
sb_ident;
/* sb_ident - status block identifier. */
BYTE
sb_res;
/* sb_res - reserved field. */
BYTE
sb_status;
/* sb_status - command SCSI status type. */
BYTE
sb_error;
/* sb_error - error code number. */
BYTE
sb_flag;
/* sb_flag - command completion flag. */
/* possible values for sb_flag */
#define
ST_CDONE
0x80
/*command complete. */
#define
ST_ERROR
0x40
/*command error. */
#define
ST_RETRY
0x20
/*retry required. */
#define
ST_TRUNCATED
0x10
/* data transfer truncated. */
#define
ST_CONTINUED
0x04
/* block continued from previous. */
BYTE
sb_info[8]
/* sb_info[8] SCSI request sense info. */
} status_block;
/* clist - a Command List structure
*/
typedef struct
{
DWORD
pbin;
/* parameter block IN pointer. */
DWORD
pbout;
/* parameter block OUT pointer. */
DWORD
sbin;
/* status block IN pointer. */
DWORD
sbout;
/* status block OUT pointer. */
DWORD
number_pbs;
/* number of parameter blocks. */
DWORD
number_sbs;
/* number of status blocks. */
DWORD
reserved[2];
/* two RESERVED fields. */
parameter_blockpblist[NPB];/*Parameter Block area. */
status_block
sblist[NSB};/* Status Block area. */
} command_list;
/* Functions: */
/*_______________________________________________________________
* put_parameter_block - A function to add a command to the Command List
*______________________________________________________________*/
void put_parameter_block(pb,clist)
parameter_block pb;
command_list *clist;