亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qla2x00.h

?? QL2000卡的驅動程序,可以學習驅動的編程. 對于UNIX的I/O操作有幫助!
?? H
?? 第 1 頁 / 共 5 頁
字號:
/**************************************************************************** * QLogic qla2x00 device driver for Linux 2.2.x (redhat 6.X). * Copyright (C) 2000 Qlogic Corporation  * (www.qlogic.com) * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2, or (at your option) any * later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * General Public License for more details. ****************************************************************************/#ifndef _IO_HBA_QLA2100_H          /* wrapper symbol for kernel use */#define _IO_HBA_QLA2100_H          /* subject to change without notice */#ifndef LINUX_VERSION_CODE #include <linux/version.h>#endif  /* LINUX_VERSION_CODE not defined */#if defined(__cplusplus)extern "C" {#endif#ifndef ISP2200 #define ISP2200#endif/* * Driver debug definitions. *//* #define QL_DEBUG_LEVEL_1 */      /* Output register accesses to COM2. *//* #define QL_DEBUG_LEVEL_2 */         /* Output error msgs to COM2. *//* #define QL_DEBUG_LEVEL_3 */       /* Output function trace msgs to COM2. *//* #define QL_DEBUG_LEVEL_4 */      /* Output NVRAM trace msgs to COM2. *//* #define QL_DEBUG_LEVEL_5 */      /* Output ring trace msgs to COM2. *//* #define QL_DEBUG_LEVEL_6 */      /* Output WATCHDOG timer trace to COM2. *//* #define QL_DEBUG_LEVEL_7 */      /* Output RISC load trace msgs to COM2. *//* #define QL_DEBUG_LEVEL_8 */      /* Output ring saturation msgs to COM2. */#define QL_DEBUG_CONSOLE              /* Output to console instead of COM2. *//* * Data bit definitions. */#define BIT_0   0x1#define BIT_1   0x2#define BIT_2   0x4#define BIT_3   0x8#define BIT_4   0x10#define BIT_5   0x20#define BIT_6   0x40#define BIT_7   0x80#define BIT_8   0x100#define BIT_9   0x200#define BIT_10  0x400#define BIT_11  0x800#define BIT_12  0x1000#define BIT_13  0x2000#define BIT_14  0x4000#define BIT_15  0x8000#define BIT_16  0x10000#define BIT_17  0x20000#define BIT_18  0x40000#define BIT_19  0x80000#define BIT_20  0x100000#define BIT_21  0x200000#define BIT_22  0x400000#define BIT_23  0x800000#define BIT_24  0x1000000#define BIT_25  0x2000000#define BIT_26  0x4000000#define BIT_27  0x8000000#define BIT_28  0x10000000#define BIT_29  0x20000000#define BIT_30  0x40000000#define BIT_31  0x80000000/* * Common size type definitions */#if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0)typedef unsigned char  uint8_t; typedef unsigned short uint16_t; typedef unsigned long  uint32_t; typedef char  int8_t; typedef short int16_t; typedef long  int32_t; #endif/* *  Local Macro Definitions. */#if defined(QL_DEBUG_LEVEL_1) || defined(QL_DEBUG_LEVEL_2) || \    defined(QL_DEBUG_LEVEL_3) || defined(QL_DEBUG_LEVEL_4) || \    defined(QL_DEBUG_LEVEL_5) || defined(QL_DEBUG_LEVEL_6) || \    defined(QL_DEBUG_LEVEL_7) || defined(QL_DEBUG_LEVEL_8)    #define QL_DEBUG_ROUTINES#endif#ifndef TRUE    #define TRUE  1#endif#ifndef FALSE    #define FALSE 0#endif#ifndef KERNEL_VERSION#  define KERNEL_VERSION(x,y,z) (((x)<<16)+((y)<<8)+(z))#endif#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,1,92)#  if defined(__sparc_v9__) || defined(__powerpc__)#    error "PPC and Sparc platforms are only support under 2.1.92 and above"#  endif#endif/*  * Locking */#if LINUX_VERSION_CODE > KERNEL_VERSION(2,1,0)#  include <asm/spinlock.h>#  include <linux/smp.h>#  define cpuid smp_processor_id()#  if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,95)#    define DRIVER_LOCK_INIT \       spin_lock_init(&ha->spin_lock);#    define DRIVER_LOCK \       if(!ha->cpu_lock_count[cpuid]) { \         spin_lock_irqsave(&ha->spin_lock, cpu_flags); \         ha->cpu_lock_count[cpuid]++; \       } else { \         ha->cpu_lock_count[cpuid]++; \       }#    define DRIVER_UNLOCK \       if(--ha->cpu_lock_count[cpuid] == 0) \         spin_unlock_irqrestore(&ha->spin_lock, cpu_flags);#  else#    define DRIVER_LOCK_INIT#    define DRIVER_LOCK#    define DRIVER_UNLOCK#  endif #else#  define cpuid 0#  define DRIVER_LOCK_INIT#  define DRIVER_LOCK \       save_flags(cpu_flags); \       cli();#  define DRIVER_UNLOCK \       restore_flags(cpu_flags);#  define le32_to_cpu(x) (x)#  define cpu_to_le32(x) (x)#endif/* * I/O register*//* #define MEMORY_MAPPED_IO  */           /* Enable memory mapped I/O */#undef MEMORY_MAPPED_IO            /* Disable memory mapped I/O */#define LINUX_IOPORTS                     /* Linux in/out routines are define*/                                          /* differently from other OSs      */#ifdef QL_DEBUG_LEVEL_1    #define RD_REG_BYTE(addr)         qla2100_getbyte((uint8_t *)addr)    #define RD_REG_WORD(addr)         qla2100_getword((uint16_t *)addr)    #define RD_REG_DWORD(addr)        qla2100_getdword((uint32_t *)addr)    #define WRT_REG_BYTE(addr, data)  qla2100_putbyte((uint8_t *)addr, data)    #define WRT_REG_WORD(addr, data)  qla2100_putword((uint16_t *)addr, data)    #define WRT_REG_DWORD(addr, data) qla2100_putdword((uint32_t *)addr, data)#else  /* QL_DEBUG_LEVEL_1 */#ifdef MEMORY_MAPPED_IO#define RD_REG_BYTE(addr)         (*((volatile uint8_t *)addr))#define RD_REG_WORD(addr)         (*((volatile uint16_t *)addr))#define RD_REG_DWORD(addr)        (*((volatile uint32_t *)addr))#define WRT_REG_BYTE(addr, data)  (*((volatile uint8_t *)addr) = data)#define WRT_REG_WORD(addr, data)  (*((volatile uint16_t *)addr) = data)#define WRT_REG_DWORD(addr, data) (*((volatile uint32_t *)addr) = data)#else   /* MEMORY_MAPPED_IO */#define RD_REG_BYTE(addr)         (inb((int)addr))#define RD_REG_WORD(addr)         (inw((int)addr))#define RD_REG_DWORD(addr)        (inl((int)addr))#define WRT_REG_BYTE(addr, data)  (outb(data,(int)addr))#define WRT_REG_WORD(addr, data)  (outw(data,(int)addr))#define WRT_REG_DWORD(addr, data) (outl(data,(int)addr))#endif  /* MEMORY_MAPPED_IO */#endif    /* QL_DEBUG_LEVEL_1 */#define MAX_FIBRE_DEVICES   256#define	MAX_RSCN_COUNT		10#define	MAX_HOST_COUNT		8/* * Host adapter default definitions. */#define MAX_BUSES       1               /* indicates 1 SCSI bus */#define MAX_TARGETS_2100     255        /* (+1) number of targets on bus */#define MAX_TARGETS_2200     255        /* (+1) number of targets on bus */#define MAX_LUNS        255             /* (+1) number of luns on bus */                                    /* * Fibre Channel device definitions. */#define LAST_LOCAL_LOOP_ID  0x7d#define SNS_FL_PORT         0x7e#define FABRIC_CONTROLLER   0x7f#define SIMPLE_NAME_SERVER  0x80#define SNS_FIRST_LOOP_ID   0x81#define LAST_SNS_LOOP_ID    0xfe#define BROADCAST           0xff#define SNS_ACCEPT          0x0280      /* 8002 swapped */#define SNS_REJECT          0x0180      /* 8001 swapped *//* Loop ID's used as database flags, must be higher than any valid Loop ID */#define PORT_UNUSED         0x100       /* Port never been used. */#define PORT_AVAILABLE      0x101       /* Device does not exist on port. *//* * Timeout timer counts in seconds */#define QLA2100_WDG_TIME_QUANTUM   1    /* In seconds */#define PORT_RETRY_TIME            2#define LOOP_DOWN_TIMEOUT          60#define LOOP_DOWN_TIME             240      /* 240 */#define	LOOP_DOWN_RESET		(LOOP_DOWN_TIME - 30)/* Maximum outstanding commands in ISP queues (1-65535) */#define MAX_OUTSTANDING_COMMANDS   512*2/* ISP request and response entry counts (37-65535) */#if 0#define REQUEST_ENTRY_CNT       256     /* Number of request entries. */#define RESPONSE_ENTRY_CNT      16      /* Number of response entries. */#endif#define REQUEST_ENTRY_CNT       512     /* Number of request entries. */#define RESPONSE_ENTRY_CNT      64      /* Number of response entries. *//* * UnixWare required definitions. */#define HBA_PREFIX qla2100/* Physical DMA memory requirements */#define QLA2100_MEMALIGN    4#define QLA2100_BOUNDARY    0x80000000  /* 2GB *//* Number of segments 1 - 65535 */#define SG_SEGMENTS     32             /* Cmd entry + 6 continuations */typedef struct timer_list   timer_t;         /* timer *//* * SCSI Request Block  */typedef struct srb{    Scsi_Cmnd  *cmd;                 /* (4) SCSI command block */    struct srb  *s_next;             /* (4) Next block on LU queue */    struct srb  *s_prev;             /* (4) Previous block on LU queue */    uint8_t     flags;               /* (1) Status flags. */    uint8_t     dir;                 /* direction of transfer */    uint8_t     retry_count;            /* Retry count. */    uint8_t     port_down_retry_count;  /* Port down retry count. */    u_long      r_start;             /* jiffies at start of request */    u_long      u_start;             /* jiffies when sent to F/W    */    uint8_t     ccode;               /* risc completion code */    uint8_t     wdg_time;            /* watchdog time in seconds */    uint8_t     state;               /* Q state code */}srb_t;/* * SRB flag definitions */#define SRB_TIMEOUT     BIT_0           /* Command timed out */#define SRB_SENT        BIT_1           /* Command sent to ISP */#define SRB_WATCHDOG    BIT_2           /* Command on watchdog list */#define SRB_ABORT_PENDING BIT_3     /* Command abort sent to device */#define SRB_ABORTED     BIT_4           /* Command aborted command already */#define SRB_RETRY     BIT_5           /* Command aborted command already *//* * LUN - Logical Unit Queue structure */typedef struct scsi_lu{    srb_t           *q_first;           /* First block on LU queue */    srb_t           *q_last;            /* Last block on LU queue */    u_char          q_flag;             /* LU queue state flags */    u_short         q_outcnt;           /* Pending jobs for this LU */    u_long          q_incnt;            /* queued jobs for this LU */    u_long          io_cnt;             /* total xfer count */    u_long          resp_time;          /* total response time (start - finish) */    u_long          act_time;           /* total actived time (minus queuing time) */    u_long          w_cnt;              /* total writes */    u_long          r_cnt;              /* total reads */#if QLA2X00_TARGET_MODE_SUPPORT    void            (*q_func)();        /* Target driver event handler */    long            q_param;            /* Target driver event param */#endif#if LINUX_VERSION_CODE > KERNEL_VERSION(2,1,0)    spinlock_t      *q_spin_lock;       /* Device Queue Lock */#endif    volatile unsigned char cpu_lock_count[NR_CPUS];    u_long          q_timeout;           /* total command timeouts */}scsi_lu_t;/* * Logical Unit q_flag definitions */#define QLA2100_QBUSY   BIT_0#define QLA2100_QWAIT   BIT_1#define QLA2100_QSUSP   BIT_2#define QLA2100_QRESET  BIT_4#define QLA2100_QHBA    BIT_5#define QLA2100_BSUSP   BIT_6           /* controller is suspended */#define QLA2100_BREM    BIT_7           /* controller is removed *//* *  ISP PCI Configuration Register Set */typedef volatile struct{    uint16_t vendor_id;                 /* 0x0 */    uint16_t device_id;                 /* 0x2 */    uint16_t command;                   /* 0x4 */    uint16_t status;                    /* 0x6 */    uint8_t revision_id;                /* 0x8 */    uint8_t programming_interface;      /* 0x9 */    uint8_t sub_class;                  /* 0xa */    uint8_t base_class;                 /* 0xb */    uint8_t cache_line;                 /* 0xc */    uint8_t latency_timer;              /* 0xd */    uint8_t header_type;                /* 0xe */    uint8_t bist;                       /* 0xf */    uint32_t base_port;                 /* 0x10 */    uint32_t mem_base_addr;             /* 0x14 */    uint32_t base_addr[4];              /* 0x18-0x24 */    uint32_t reserved_1[2];             /* 0x28-0x2c */    uint16_t expansion_rom;             /* 0x30 */    uint32_t reserved_2[2];             /* 0x34-0x38 */    uint8_t interrupt_line;             /* 0x3c */    uint8_t interrupt_pin;              /* 0x3d */    uint8_t min_grant;                  /* 0x3e */    uint8_t max_latency;                /* 0x3f */}config_reg_t;/* *  ISP I/O Register Set structure definitions. */typedef volatile struct{    uint16_t flash_address;             /* Flash BIOS address */    uint16_t flash_data;                /* Flash BIOS data */    uint16_t unused_1[1];               /* Gap */    uint16_t ctrl_status;               /* Control/Status */        #define ISP_FLASH_ENABLE BIT_1  /* Flash BIOS Read/Write enable */        #define ISP_RESET       BIT_0   /* ISP soft reset */    uint16_t ictrl;                     /* Interrupt control */        #define ISP_EN_INT      BIT_15  /* ISP enable interrupts. */        #define ISP_EN_RISC     BIT_3   /* ISP enable RISC interrupts. */    uint16_t istatus;                   /* Interrupt status */        #define RISC_INT        BIT_3   /* RISC interrupt */    uint16_t semaphore;                 /* Semaphore */    uint16_t nvram;                     /* NVRAM register. */        #define NV_DESELECT     0        #define NV_CLOCK        BIT_0        #define NV_SELECT       BIT_1        #define NV_DATA_OUT     BIT_2        #define NV_DATA_IN      BIT_3    uint16_t mailbox0;                  /* Mailbox 0 */    uint16_t mailbox1;                  /* Mailbox 1 */    uint16_t mailbox2;                  /* Mailbox 2 */    uint16_t mailbox3;                  /* Mailbox 3 */    uint16_t mailbox4;                  /* Mailbox 4 */    uint16_t mailbox5;                  /* Mailbox 5 */    uint16_t mailbox6;                  /* Mailbox 6 */    uint16_t mailbox7;                  /* Mailbox 7 */#if 0    uint16_t unused_2[0x50];            /* Gap */#else	uint16_t unused_2[0x3b];	/* Gap */	uint16_t fpm_diag_config;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品免费看| 国产色产综合色产在线视频| 成人欧美一区二区三区小说| 国产成人欧美日韩在线电影| 欧美精品一区二区不卡| 国产精品综合av一区二区国产馆| www精品美女久久久tv| 国产成人免费网站| 亚洲欧美日韩在线| 欧美日韩欧美一区二区| 裸体一区二区三区| 国产欧美日韩另类视频免费观看| 成人国产在线观看| 亚洲一区二区三区四区五区黄| 欧美一区二区三区小说| 国产精品影视在线观看| 中文字幕一区二区三区在线不卡 | 欧美伊人精品成人久久综合97| 一区二区国产盗摄色噜噜| 欧美日韩在线播放一区| 精品一区二区三区久久| 亚洲视频中文字幕| 678五月天丁香亚洲综合网| 国产黑丝在线一区二区三区| 亚洲黄色小说网站| 精品国产露脸精彩对白 | 精品一区二区三区日韩| 国产精品久久一卡二卡| 欧美一区二区三区视频在线观看| 国产一本一道久久香蕉| 亚洲高清在线视频| 国产欧美日韩在线| 欧美精品成人一区二区三区四区| 国产精品资源网| 一区二区不卡在线播放| 欧美成人a视频| 在线观看亚洲成人| 粉嫩av一区二区三区| 日本欧美在线观看| 亚洲天堂av一区| 精品久久久久久久久久久久包黑料| 不卡av在线网| 国产一区二区网址| 丝袜美腿亚洲色图| 亚洲欧美福利一区二区| 久久日韩精品一区二区五区| 欧美三级日韩在线| 91亚洲精品一区二区乱码| 六月丁香婷婷久久| 偷拍一区二区三区四区| 亚洲欧美另类综合偷拍| 国产亚洲制服色| 欧美一区二区精品| 欧美日韩一区二区三区四区| 成人三级伦理片| 激情综合网最新| 日本不卡一二三| 香蕉久久一区二区不卡无毒影院| 欧美激情一区三区| 国产亚洲成av人在线观看导航| 91精品国产综合久久精品性色| 色综合天天视频在线观看| 国产高清不卡一区二区| 九九精品一区二区| 捆绑调教一区二区三区| 日韩av网站免费在线| 亚洲va欧美va人人爽午夜| 亚洲桃色在线一区| 1024国产精品| 亚洲欧美怡红院| 国产精品天美传媒| 中文字幕av在线一区二区三区| 精品国产电影一区二区| 欧美不卡视频一区| 26uuu欧美| 久久在线免费观看| 国产亚洲美州欧州综合国| 国产欧美日韩视频在线观看| 久久伊人中文字幕| 国产日韩影视精品| 中文字幕一区av| 亚洲精品水蜜桃| 亚洲国产毛片aaaaa无费看| 亚洲国产精品精华液网站| 亚洲高清中文字幕| 日韩成人一级大片| 国产综合一区二区| 成人福利电影精品一区二区在线观看 | 精品视频在线免费| 欧美精品tushy高清| 欧美一级二级在线观看| 2022国产精品视频| 国产精品久久久久四虎| 亚洲人成伊人成综合网小说| 一区二区三区精品在线观看| 一区二区高清免费观看影视大全| 亚洲伊人伊色伊影伊综合网| 首页综合国产亚洲丝袜| 老色鬼精品视频在线观看播放| 国产成人欧美日韩在线电影| 99这里都是精品| 欧美日韩国产一级二级| 精品国产3级a| 日韩美女视频19| 婷婷中文字幕一区三区| 国产一区二区三区综合| 91浏览器入口在线观看| 欧美裸体bbwbbwbbw| 久久毛片高清国产| 一区二区三区蜜桃| 精品一区二区国语对白| 91视频在线观看| 日韩一卡二卡三卡四卡| 国产精品电影一区二区| 天天色图综合网| 国产成人精品亚洲午夜麻豆| 在线观看视频一区二区欧美日韩| 精品国产区一区| 亚洲欧美电影院| 国产美女精品在线| 在线视频欧美区| 久久亚洲免费视频| 亚洲黄色免费网站| 久99久精品视频免费观看| 91老师片黄在线观看| 精品美女一区二区| 亚洲大片免费看| 成人av片在线观看| 欧美一卡在线观看| 一卡二卡三卡日韩欧美| 国产成人精品免费看| 欧美一卡二卡三卡| 一区2区3区在线看| 成人国产在线观看| 精品久久久久一区| 日韩激情av在线| 色综合天天综合在线视频| 2021中文字幕一区亚洲| 香蕉成人伊视频在线观看| 国产91在线观看丝袜| 精品国产乱码久久久久久牛牛| 亚洲在线免费播放| 91亚洲大成网污www| 国产日产欧美一区| 精品中文字幕一区二区小辣椒| 欧美日韩另类一区| 亚洲精品视频在线观看网站| 国产成人av资源| 日韩欧美国产成人一区二区| 午夜精品久久久久影视| 99视频一区二区三区| 欧美韩国一区二区| 夫妻av一区二区| 国产日韩欧美高清| 国产精品亚洲а∨天堂免在线| 日韩免费看网站| 亚洲午夜电影网| 在线观看亚洲专区| 亚洲一卡二卡三卡四卡五卡| 色av一区二区| 亚洲黄色尤物视频| 欧日韩精品视频| 亚洲精品日韩一| 91久久精品一区二区| 亚洲天堂av老司机| 91丨porny丨首页| 亚洲女子a中天字幕| 日本精品一级二级| 亚洲综合视频网| 97se亚洲国产综合自在线不卡| 国产精品素人视频| av不卡免费电影| 1000精品久久久久久久久| 99久久99久久精品免费看蜜桃| 亚洲欧美日韩在线播放| 在线观看亚洲一区| 视频在线观看国产精品| 欧美一区二区免费视频| 九九九精品视频| 中文一区二区在线观看| 91色在线porny| 亚洲成精国产精品女| 日韩欧美在线一区二区三区| 精品影视av免费| 亚洲国产岛国毛片在线| 91免费在线播放| 亚洲福利国产精品| 日韩精品在线看片z| 国产99久久久国产精品潘金| 亚洲色图在线看| 欧美日韩免费一区二区三区视频| 六月婷婷色综合| 中文字幕第一区二区| 欧美亚洲禁片免费| 久久不见久久见免费视频1 | 国产精品白丝在线| 欧美伊人精品成人久久综合97| 久久国产精品第一页| 综合色天天鬼久久鬼色| 欧美视频一区二区三区四区|