1 /* 2 ******************************************************************************************************************** 3 * usb host driver 4 * 5 * (c) Copyright 2007-2010, javen.China 6 * All Rights Reserved 7 * 8 * File Name : UsbBlkDev.h 9 * 10 * Author : javen 11 * 12 * Version : 2.0 13 * 14 * Date : 2010.03.02 15 * 16 * Description : 17 * 18 * History : 19 * 20 ******************************************************************************************************************** 21 */ 22 #ifndef __BLKDEV_H__ 23 #define __BLKDEV_H__ 24 25 #include "usbh_disk_info.h" 26 27 #define USB_BLK_DEV_MAGIC 0x5a13d099 28 #define USB_BULK_DISK_MAX_NAME_LEN 32 29 30 typedef struct __UsbBlkDev 31 { 32 unsigned int last_lun; //如果为1,表示是最后一个分区 33 unsigned int Magic; /* 表示设备是否合法 */ 34 __mscLun_t *Lun; /* sd和其他scsi device共有的属性 */ 35 36 /* Disk information */ 37 unsigned int used; /* 打开设备计数 */ 38 __dev_devop_t DiskOp; /* 设备操作函数 */ 39 40 /* Disk manager */ 41 void *DevParaHdle; /* open时的句柄 */ 42 void *DevRegHdle; /* reg时的句柄 */ 43 44 unsigned int DevNo; /* 此设备号, 它由host_id, target_id, lun 组成 */ 45 unsigned char ClassName[USB_BULK_DISK_MAX_NAME_LEN]; /* 设备类名, 如"disk" */ 46 unsigned char DevName[USB_BULK_DISK_MAX_NAME_LEN]; /* 此设备名, 如"SCSI_DISK_000" */ 47 48 unsigned int is_RegDisk; /* 是否注册过disk设备 */ 49 unsigned int ErrCmdNr; /* test_unit_ready期间, 未知错误的次数 */ 50 51 void *Extern; /* 扩展属性, 如cd */ 52 53 usbh_disk_device_info_t device_info; 54 } __UsbBlkDev_t; 55 56 //------------------------------------------ 57 // 58 //------------------------------------------ 59 __UsbBlkDev_t *UsbBlkDevAllocInit(__mscLun_t *mscLun); 60 int UsbBlkDevFree(__UsbBlkDev_t *BlkDev); 61 62 void GetDiskInfo(__UsbBlkDev_t *BlkDev); 63 void ShutDown(__UsbBlkDev_t *BlkDev); 64 65 int UsbBlkDevReg(__UsbBlkDev_t *BlkDev, unsigned char *ClassName, unsigned int RegDisk); 66 int UsbBlkDevUnReg(__UsbBlkDev_t *BlkDev); 67 68 69 #endif //__BLKDEV_H__ 70 71 72