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

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

?? scsiseqlib.c

?? VxWorks操作系統內核源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
STATUS scsiWrtFileMarks    (    SCSI_SEQ_DEV * pScsiSeqDev,   /* ptr to SCSI sequential device info */    int            numMarks,      /* number of file marks to write      */    BOOL           shortMark	  /* TRUE to write short file mark      */    )    {    SCSI_COMMAND     scsiCommand;	/* SCSI command byte array          */    SCSI_TRANSACTION scsiXaction;	/* info on a SCSI transaction       */    SCSI_PHYS_DEV *  pScsiPhysDev;      /* ptr to SCSI physical device info */    STATUS           status;		/* status of transactions           */    SCSI_DEBUG_MSG ("scsiWrtFileMarks:\n", 0, 0, 0, 0, 0, 0);    pScsiPhysDev = pScsiSeqDev->pScsiPhysDev;    scsiCommand[0] = SCSI_OPCODE_WRITE_FILEMARKS;    scsiCommand[1] = (UINT8) ((pScsiPhysDev->scsiDevLUN & 0x7) << 5);    scsiCommand[2] = (UINT8) ((numMarks >> 16) & 0xff);    scsiCommand[3] = (UINT8) ((numMarks >>  8) & 0xff);    scsiCommand[4] = (UINT8) (numMarks & 0xff);    if (shortMark)	scsiCommand [5] = 0x80;    else        scsiCommand[5] = (UINT8) 0;    scsiXaction.cmdAddress    = scsiCommand;    scsiXaction.cmdLength     = SCSI_GROUP_0_CMD_LENGTH;    scsiXaction.dataAddress   = NULL;    scsiXaction.dataDirection = O_WRONLY;    scsiXaction.dataLength    = NULL;    scsiXaction.addLengthByte = NULL;    if (numMarks < 500)        scsiXaction.cmdTimeout = SCSI_TIMEOUT_5SEC * (numMarks + 10);    else	scsiXaction.cmdTimeout = SCSI_TIMEOUT_FULL;    scsiXaction.tagType       = SCSI_TAG_DEFAULT;    scsiXaction.priority      = SCSI_THREAD_TASK_PRIORITY;    status = (*pScsiPhysDev->pScsiCtrl->scsiTransact)	      (pScsiPhysDev, &scsiXaction);    return (status);    }/********************************************************************************* scsiSpace - move the tape on a specified physical SCSI device** This routine moves the tape on a specified SCSI physical device.* There are two types of space code that are mandatory in SCSI; currently* these are the only two supported:** .TS* tab(|);* lf3 lf3 cf3* l l c.* Code | Description | Support* _* 000 | Blocks		      | Yes* 001 | File marks            | Yes* 010 | Sequential file marks | No* 011 | End-of-data           | No* 100 | Set marks             | No* 101 | Sequential set marks  | No* .TE	** RETURNS: OK, or ERROR if an error is returned by the device.** ERRNO: S_scsiLib_ILLEGAL_REQUEST*/STATUS scsiSpace    (    SCSI_SEQ_DEV * pScsiSeqDev,  /* ptr to SCSI sequential device info */    int count,                   /* count for space command            */    int spaceCode		 /* code for the type of space command */    )    {    SCSI_PHYS_DEV *pScsiPhysDev;	/* ptr to SCSI physical device info */    SCSI_COMMAND scsiCommand;		/* SCSI command byte array          */    SCSI_TRANSACTION scsiXaction;	/* info on a SCSI transaction       */    STATUS status;			/* status of transaction            */    SCSI_DEBUG_MSG ("scsiSpace:\n", 0, 0, 0, 0, 0, 0);    pScsiPhysDev = pScsiSeqDev->pScsiPhysDev;    if ((count == 0) || ((spaceCode != SPACE_CODE_DATABLK) && 			 (spaceCode != SPACE_CODE_FILEMARK)))        {	errno = S_scsiLib_ILLEGAL_REQUEST;	return (ERROR);	}    scsiCommand[0] = SCSI_OPCODE_SPACE;    scsiCommand[1] = (UINT8) (((pScsiPhysDev->scsiDevLUN & 0x7) << 5) |			      (spaceCode));    scsiCommand[2] = (UINT8) ((count >> 16) & 0xff);    scsiCommand[3] = (UINT8) ((count >>  8) & 0xff);    scsiCommand[4] = (UINT8) (count & 0xff);    scsiCommand[5] = (UINT8) 0;    scsiXaction.cmdAddress    = scsiCommand;    scsiXaction.cmdLength     = SCSI_GROUP_0_CMD_LENGTH;    scsiXaction.dataAddress   = NULL;    scsiXaction.dataDirection = O_RDONLY;    scsiXaction.dataLength    = NULL;    scsiXaction.addLengthByte = NULL;    if (count < 500)        scsiXaction.cmdTimeout = SCSI_TIMEOUT_5SEC * count * 10;    else	scsiXaction.cmdTimeout = SCSI_TIMEOUT_FULL;    scsiXaction.tagType       = SCSI_TAG_DEFAULT;    scsiXaction.priority      = SCSI_THREAD_TASK_PRIORITY;    status = (*pScsiPhysDev->pScsiCtrl->scsiTransact)	      (pScsiPhysDev, &scsiXaction);    return (status);    }/********************************************************************************* scsiSeqStatusCheck - detect a change in media** This routine issues a TEST_UNIT_READY command to a SCSI device to detect a* change in media. It is called by file systems before executing open() or* creat().** INTERNAL* This function is a duplicate of that in scsiDirectLib, except for the fact* that this function operates on a SEQ_DEV.* * RETURNS: OK or ERROR.*/STATUS scsiSeqStatusCheck    (    SCSI_SEQ_DEV *pScsiSeqDev          /* ptr to a sequential dev */    )    {    SCSI_PHYS_DEV *pScsiPhysDev;        /* ptr to SCSI physical device */    SCSI_COMMAND testUnitRdyCommand;    /* SCSI command byte array     */    SCSI_TRANSACTION scsiXaction;       /* info on a SCSI transaction  */    char             modeBuf[0xff];     /* get mode sense data array   */    int		     modeBufLen;    int 	     pageControl;    int              pageCode;    pScsiPhysDev =  pScsiSeqDev->pScsiPhysDev;    if (scsiCmdBuild (testUnitRdyCommand, &scsiXaction.cmdLength,        SCSI_OPCODE_TEST_UNIT_READY, pScsiPhysDev->scsiDevLUN, FALSE,        0, 0, (UINT8) 0) == ERROR)        {        return (ERROR);        }    scsiXaction.cmdAddress    = testUnitRdyCommand;    scsiXaction.dataAddress   = NULL;    scsiXaction.dataDirection = NONE;    scsiXaction.dataLength    = 0;    scsiXaction.addLengthByte = NONE;    scsiXaction.cmdTimeout    = SCSI_TIMEOUT_5SEC;    scsiXaction.tagType       = SCSI_TAG_DEFAULT;    scsiXaction.priority      = SCSI_THREAD_TASK_PRIORITY;    if ((*pScsiPhysDev->pScsiCtrl->scsiTransact) (pScsiPhysDev, &scsiXaction)							             == ERROR)	{        SCSI_DEBUG_MSG ("scsiSeqStatusCheck returning ERROR, last Sense = %x\n",                        pScsiPhysDev->lastSenseKey, 0, 0, 0, 0, 0);        return (ERROR);	}    pageControl = 0x0;  /* current values     */    pageCode    = 0x0;  /* no page formatting */    /* (Mode param hdr len) + (mode param block descriptor len) */    modeBufLen  = 4 + 8;    if (scsiModeSense (pScsiPhysDev, pageControl, pageCode, modeBuf,		       modeBufLen		       ) == ERROR)        return (ERROR);    /* Set the mode of the device */    pScsiSeqDev->seqDev.sd_mode =	( modeBuf [SCSI_MODE_DEV_SPECIFIC_PARAM] &	  (UINT8) SCSI_DEV_SPECIFIC_WP_MASK        ) ? O_RDONLY : O_RDWR;    return (OK);       }/********************************************************************************* scsiSeqIoctl - perform an I/O control function for sequential access devices** This routine issues scsiSeqLib commands to perform sequential* device-specific I/O control operations.** RETURNS: OK or ERROR.** ERRNO: S_scsiLib_INVALID_BLOCK_SIZE*/int scsiSeqIoctl    (    SCSI_SEQ_DEV *  pScsiSeqDev,    /* ptr to SCSI sequential device */    int		    function,	    /* ioctl function code */    int		    arg 	    /* argument to pass to called function */    )    {    char modeBuf[MODE_BUF_LENGTH];    int  modeBufLen;    int  pageControl;    int  pageCode;    int  pageFormat;    int  savePages;    int  blkSize;    SCSI_PHYS_DEV * pScsiPhysDev;	/* ptr to SCSI physical device struct */    if ((pScsiPhysDev = pScsiSeqDev->pScsiPhysDev) == NULL)	{	/* XXX errno */	SCSI_DEBUG_MSG ("scsiSeqIoctl: pScsiSeqDev ptr NULL\n",0,0,0,0,0,0);	return (ERROR);	}    switch (function)	{    	case FIODENSITYSET:            /* Execute a MODE SENSE to get the right buffer values */	    pageControl = 0x0;  /* current values     */	    pageCode    = 0x0; 	/* no page formatting */            /* (Mode param hdr len) + (mode param block descriptor len) */    	    modeBufLen  = 4 + 8;	    if (scsiModeSense (pScsiPhysDev, pageControl, pageCode, modeBuf,			       modeBufLen			      ) == ERROR)		return (ERROR);            	    /* Execute a MODE SELECT to set the density value */	    modeBuf[0] = 0x0;	/* mode data len not valid for mode select   */	    /* modeBuf[1] is reserved; medium type not valid for seq devices */	    modeBuf[2] = 0x0;   /* dev-specific param not defined for md sel */	    modeBuf[4] = arg;   /* set density code                          */            pageFormat = 0x0;   /* no formatted pages                        */	    savePages  = 0x1;   /* save page values                          */	    if (scsiModeSelect (pScsiPhysDev, pageFormat, savePages, modeBuf,				modeBufLen) == ERROR)	        return (ERROR);            /* Check that the density was set correctly by issuing MODE SENSE */            	    if (scsiModeSense (pScsiPhysDev, pageControl, pageCode, modeBuf,			       modeBufLen			      ) == ERROR)		return (ERROR);            if (modeBuf[4] != arg)		{		/* XXX set errno */		return (ERROR);		}	    pScsiSeqDev->seqDev.sd_density = arg;	    return (OK);        case FIODENSITYGET:            /* Execute a MODE SENSE to get the right buffer values */                        pageControl = 0x0;  /* current values     */            pageCode    = 0x0;  /* no page formatting */            /* (Mode param hdr len) + (mode param block descriptor len) */            modeBufLen  = 4 + 8;            if (scsiModeSense (pScsiPhysDev, pageControl, pageCode, modeBuf,                               modeBufLen                              ) == ERROR)                return (ERROR);            * ((int *) arg) = modeBuf[4];	/* density */	    return (OK);        case FIOBLKSIZESET:            /* Execute a MODE SENSE to get the right buffer values */                        pageControl = 0x0;  /* current values     */            pageCode    = 0x0;  /* no page formatting */            /* (Mode param hdr len) + (mode param block descriptor len) */            modeBufLen  = 4 + 8;            if (scsiModeSense (pScsiPhysDev, pageControl, pageCode, modeBuf,                               modeBufLen                              ) == ERROR)                return (ERROR);            /* Execute a MODE SELECT to set the blkSize value */            modeBuf[0]  = 0x0;   /* mode data len not valid for mode select   */            /* modeBuf[1] is reserved; medium type not valid for seq devices  */	    modeBuf[1] = 0x0;            modeBuf[2] = 0x0;    /* dev-specific param not defined for md sel */            /* Set the block size */            modeBuf[9]  = (UINT8) ((arg >> 16) & 0xff);            modeBuf[10] = (UINT8) ((arg >>  8) & 0xff);            modeBuf[11] = (UINT8) ( arg & 0xff);             pageFormat = 0x1;   /* no formatted pages                        */            savePages  = 0x0;   /* save page values                          */            if (scsiModeSelect (pScsiPhysDev, pageFormat, savePages, modeBuf,                                modeBufLen) == ERROR)                return (ERROR);            /* Check that the block size was set correctly */            blkSize = scsiSeqIoctl (pScsiSeqDev, FIOBLKSIZEGET, 0);            if (blkSize != arg)                {                errno = S_scsiLib_INVALID_BLOCK_SIZE;                return (ERROR);                }            pScsiSeqDev->seqDev.sd_blkSize = blkSize;            return (OK);        case FIOBLKSIZEGET:            /* Execute a MODE SENSE to get the right buffer values */                        pageControl = 0x0;  /* current values     */            pageCode    = 0x0;  /* no page formatting */            /* (Mode param hdr len) + (mode param block descriptor len) */            modeBufLen  = 4 + 8;            if (scsiModeSense (pScsiPhysDev, pageControl, pageCode, modeBuf,                               modeBufLen                              ) == ERROR)                return (ERROR);            /* Construct the block size from the buffer */            blkSize  = 0;            blkSize  = (modeBuf[9]  << 16);            blkSize |= (modeBuf[10] <<  8);            blkSize |=  modeBuf[11];            return (blkSize);        default:	    SCSI_DEBUG_MSG ("scsiSeqIoctl: bad IOCTL function\n",0,0,0,0,0,0);            return (ERROR);        } /* switch */    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一级片在线观看| 欧美电影在哪看比较好| 亚洲国产成人va在线观看天堂| 欧美日韩美少妇| 国产精品系列在线播放| 香蕉久久夜色精品国产使用方法 | 欧美唯美清纯偷拍| 国产精品一区二区久久精品爱涩| 五月综合激情日本mⅴ| 中文字幕在线不卡一区| 26uuu成人网一区二区三区| 欧美老年两性高潮| 色香色香欲天天天影视综合网| 国内成+人亚洲+欧美+综合在线| 一区二区三区国产豹纹内裤在线| 欧美经典一区二区| 2欧美一区二区三区在线观看视频| 欧洲亚洲精品在线| 99精品国产视频| 成人午夜精品一区二区三区| 精品一区二区三区免费观看| 天天色综合成人网| 亚洲午夜久久久久久久久电影院| 综合电影一区二区三区| 日本一区二区三级电影在线观看| 欧美tickle裸体挠脚心vk| 91精品一区二区三区久久久久久| 日本高清不卡aⅴ免费网站| 成人不卡免费av| 国产suv精品一区二区883| 狠狠色综合播放一区二区| 久久成人麻豆午夜电影| 麻豆视频观看网址久久| 蜜臀av一区二区在线观看| 舔着乳尖日韩一区| 视频一区国产视频| 日本成人在线电影网| 日韩精品1区2区3区| 五月天亚洲精品| 三级久久三级久久| 日韩国产高清影视| 美女一区二区三区| 美国精品在线观看| 国产乱国产乱300精品| 国产成人啪免费观看软件| 国产成a人亚洲精品| 成熟亚洲日本毛茸茸凸凹| www.99精品| 色婷婷综合激情| 欧美综合亚洲图片综合区| 在线免费观看日韩欧美| 欧美美女黄视频| 日韩欧美成人一区| 国产亚洲综合在线| 国产精品免费网站在线观看| 中文字幕一区二区三区在线播放 | 91精品国产综合久久久久久漫画 | 欧美日韩国产色站一区二区三区| 欧美精品三级在线观看| 欧美成人bangbros| 欧美激情自拍偷拍| 亚洲综合一区在线| 日本不卡视频一二三区| 国产精品一线二线三线精华| 99久久综合99久久综合网站| 欧美性受xxxx黑人xyx| 欧美高清视频一二三区| 久久综合狠狠综合久久激情| 国产精品色眯眯| 一区二区三区国产豹纹内裤在线 | 日日夜夜免费精品| 国产精品一线二线三线精华| 一本到高清视频免费精品| 7777精品伊人久久久大香线蕉完整版 | 大陆成人av片| 欧美专区日韩专区| 精品欧美一区二区在线观看| 国产精品福利一区| 亚洲综合网站在线观看| 精品在线你懂的| 91视视频在线直接观看在线看网页在线看| 在线视频一区二区三| 欧美电视剧在线观看完整版| 亚洲欧美日韩在线| 精品一区二区三区香蕉蜜桃| 成人av免费观看| 日韩欧美在线观看一区二区三区| 中文字幕乱码日本亚洲一区二区| 亚洲1区2区3区4区| a美女胸又www黄视频久久| 在线不卡中文字幕| 亚洲欧美综合网| 久草中文综合在线| 在线观看三级视频欧美| 一区二区三区丝袜| 美女网站色91| 欧美在线免费视屏| 国产精品丝袜久久久久久app| 亚洲精品综合在线| aa级大片欧美| 一区二区三区日韩欧美精品| 国产成人综合网| 制服丝袜日韩国产| 精品久久99ma| 色偷偷一区二区三区| 国产视频一区二区在线| 精品一区二区在线免费观看| 精品福利一区二区三区| 成人黄色av网站在线| 日韩美女精品在线| 91黄色免费观看| 国产成人av一区| 日韩成人精品在线观看| 亚洲色图丝袜美腿| 欧美xxxx老人做受| 欧美性视频一区二区三区| 成人aa视频在线观看| 韩国一区二区视频| 久久精品99国产国产精| 日韩专区中文字幕一区二区| 一区二区三区在线影院| 7777精品伊人久久久大香线蕉| 老司机精品视频线观看86| 综合电影一区二区三区| 精品国产伦一区二区三区免费| 99久久国产综合精品色伊| 久久精品国产亚洲高清剧情介绍| 日韩专区一卡二卡| 精品国产123| 国产喷白浆一区二区三区| 国产三区在线成人av| 中文字幕精品综合| 亚洲午夜影视影院在线观看| 亚洲视频在线一区观看| 亚洲成a人v欧美综合天堂| 久久国产欧美日韩精品| 一区二区三区 在线观看视频| 综合激情网...| 亚洲欧洲av另类| 亚洲男同性视频| 亚洲国产欧美另类丝袜| 一区二区免费在线播放| 亚洲麻豆国产自偷在线| 婷婷六月综合亚洲| 国产麻豆精品视频| 日韩经典一区二区| 亚洲第一综合色| 亚洲1区2区3区4区| 日韩电影在线一区| 免费看日韩a级影片| 偷窥少妇高潮呻吟av久久免费| 亚洲精品视频在线观看免费| 中文字幕一区在线| 亚洲国产成人av好男人在线观看| 亚洲精品视频一区| 午夜伦欧美伦电影理论片| 亚洲福利一区二区| 日韩综合在线视频| 日产精品久久久久久久性色| 久久99久久精品| fc2成人免费人成在线观看播放| 波多野结衣在线aⅴ中文字幕不卡| 成人免费观看男女羞羞视频| 成人动漫视频在线| 欧美精品久久天天躁| 日韩精品一区二区三区视频| 国产精品免费免费| 舔着乳尖日韩一区| 成人午夜看片网址| 欧美精品vⅰdeose4hd| 国产欧美日韩另类视频免费观看| 亚洲欧洲av一区二区三区久久| 亚洲国产一区二区三区青草影视| 国产精品一区在线观看你懂的| 在线观看视频欧美| 中文字幕在线观看一区二区| 一区二区三区在线不卡| 国产a级毛片一区| 91精品国产综合久久香蕉的特点| 国产精品三级视频| 久久97超碰国产精品超碰| 91免费小视频| 久久精品一区二区| 免费成人深夜小野草| 欧美视频日韩视频在线观看| 国产夜色精品一区二区av| 日韩电影在线免费看| 精品一区二区三区在线视频| 懂色av一区二区三区蜜臀| 欧美伊人久久大香线蕉综合69| 日韩一区二区中文字幕| 一区免费观看视频| 久久激情五月激情| 欧美日韩免费观看一区三区| 欧美日韩久久不卡| 一卡二卡欧美日韩| 欧美一区二区性放荡片| 色综合久久综合网欧美综合网| 国产一区二区中文字幕| 日韩电影在线一区二区三区|