?? sscsi.h
字號:
/*--------------------------------------------------*/
/* */
/* Module SSCSI.H */
/* */
/* SCSI utility routines for Symbios 53C8XX. */
/* */
/* Adapted from Symbios Logic */
/* Software Development Kit */
/* */
/* Project: A Programmer's Guide to SCSI */
/* Copyright (C) 1997, Brian Sawert. */
/* All rights reserved. */
/* */
/*--------------------------------------------------*/
#ifndef _SSCSI_H
#define _SSCSI_H
/*---------- constant definitions ----------*/
#define DEF_TIMEOUT 5
// SCSI command definitions
#define CMD_TEST_UNIT_READY 0x00
#define CMD_REQUEST_SENSE 0x03
#define CMD_READ_6 0x08
#define CMD_INQUIRY 0x12
#define CMD_READ_CAPACITY 0x25
// SCSI status definitions
#define STAT_GOOD 0x00
#define STAT_CHECK_CONDITION 0x02
#define STAT_BUSY 0x08
// return codes
enum {ERR_SUCCESS = 0, ERR_SELECT, ERR_SENSE,
ERR_TIMEOUT, ERR_OTHER};
// SCRIPTS table entry definition
typedef struct {
DWORD count; // byte count
DWORD address; // physical address
} table_entry;
// SCSI device information
typedef struct {
BYTE targ_id; // target SCSI ID
BYTE dev_type; // device type
DWORD blocks; // number of blocks
WORD blk_size; // block size
} scsi_device;
/*---------- macro definitions ----------*/
/*---------- global variables ----------*/
extern BYTE stat_buf; // status byte
extern BYTE datain_buf[]; // data in buffer
extern BYTE block_buf[]; // block read buffer
extern BYTE sense_buf[]; // sense data buffer
extern BYTE sense_key; // sense data
extern BYTE sense_asc;
extern BYTE sense_ascq;
/*---------- function declarations ----------*/
// allocate aligned buffers
extern DWORD *alloc_buffer(WORD size);
// poll for SCRIPTS completion
extern int poll_istat(DWORD io_base, DWORD *vector,
BYTE *dstat, BYTE *istat, WORD *sist);
// set up script and data buffers
extern int init_buffers(void);
// check status and sense data
extern int check_status(pci_device *ppcidev,
scsi_device *pscsidev);
// execute Test Unit Ready command
extern int test_unit_ready(pci_device *ppcidev,
scsi_device *pscsidev);
// execute Request Sense command
extern int request_sense(pci_device *ppcidev,
scsi_device *pscsidev);
// execute Inquiry command
extern int device_inquiry(pci_device *ppcidev,
scsi_device *pscsidev);
// execute Read Capacity command
extern int read_capacity(pci_device *ppcidev,
scsi_device *pscsidev);
// execute Read 6 command
extern int read_block(pci_device *ppcidev,
scsi_device *pscsidev, DWORD blk_num, BYTE nblocks);
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -