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

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

?? sramdrv.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* sramDrv.c - PCMCIA SRAM device driver *//* Copyright 1984-1996 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01e,21jun00,rsh  upgrade to dosFs 2.001d,16jan97,hdn  added pCtrl->memBase.01c,28mar96,jdi  doc: cleaned up language and format.01b,22feb96,hdn  cleaned up01a,28feb95,hdn  written based on memDrv.c and ramDrv.c.*//*DESCRIPTIONThis is a device driver for the SRAM PC card.  The memory location and sizeare specified when the "disk" is created.USER-CALLABLE ROUTINESMost of the routines in this driver are accessible only through the I/Osystem.  However, two routines must be called directly:  sramDrv() toinitialize the driver, and sramDevCreate() to create block devices.Additionally, the sramMap() routine is called directly to map the PCMCIAmemory onto the ISA address space.  Note that this routine does not useany mutual exclusion or synchronization mechanism; thus, special care mustbe taken in the multitasking environment.Before using this driver, it must be initialized by calling sramDrv().  Thisroutine should be called only once, before any reads, writes, or calls tosramDevCreate() or sramMap().  It can be called from usrRoot() in usrConfig.cor at some later point.SEE ALSO:.pG "I/O System"LINTLIBRARY*/#include "vxWorks.h"#include "ioLib.h"#include "memLib.h"#include "errnoLib.h"#include "string.h"#include "stdlib.h"#include "stdio.h"#include "sysLib.h"#include "logLib.h"#include "private/semLibP.h"#include "drv/pcmcia/pcmciaLib.h"#include "drv/pcmcia/sramDrv.h"/* defines */#define	SRAM_WINDOW	1/* imports */IMPORT PCMCIA_CTRL	pcmciaCtrl;IMPORT SRAM_RESOURCE	sramResources[];/* globals */SRAM_CTRL		sramCtrl;int			sramResourceNumEnt;/* locals */LOCAL BOOL		sramDrvInstalled	= FALSE;LOCAL PCMCIA_MEMWIN	sramMemwin		= {1,0,0,0,0,0};/* forward declarations */LOCAL STATUS sramRead		(SRAM_DEV *pSramDev, int startBlk, int numBlks, 			 	 char *pChar);LOCAL STATUS sramWrite		(SRAM_DEV *pSramDev, int startBlk, int numBlks,			 	 char *pChar);LOCAL STATUS sramIoctl		(SRAM_DEV *pSramDev, int function, int arg);LOCAL STATUS sramStatusChk 	(SRAM_DEV *pSramDev);/********************************************************************************* sramDrv - install a PCMCIA SRAM memory driver** This routine initializes a PCMCIA SRAM memory driver.  It must be called once,* before any other routines in the driver.** RETURNS:* OK, or ERROR if the I/O system cannot install the driver.*/STATUS sramDrv    (    int sock			/* socket no. */    )    {    PCMCIA_CTRL *pCtrl		= &pcmciaCtrl;    PCMCIA_CHIP *pChip		= &pCtrl->chip;    PCMCIA_CARD *pCard		= &pCtrl->card[sock];    SEM_ID muteSemID		= &sramCtrl.muteSem[sock];    SEM_ID syncSemID		= &sramCtrl.syncSem[sock];    int ix;    if ((!pChip->installed) || (!pCard->detected))	return (ERROR);    if (!sramDrvInstalled)	{	for (ix = 0; ix < MAX_SOCKETS; ix++)	    {            semBInit (&sramCtrl.syncSem[ix], SEM_Q_FIFO, SEM_EMPTY);            semMInit (&sramCtrl.muteSem[ix], SEM_Q_PRIORITY |		      SEM_DELETE_SAFE | SEM_INVERSION_SAFE);	    }        sramDrvInstalled = TRUE;	}    if (!pCard->installed)	{        semBInit (syncSemID, SEM_Q_FIFO, SEM_EMPTY);        semMInit (muteSemID, SEM_Q_PRIORITY | SEM_DELETE_SAFE |		  SEM_INVERSION_SAFE);	}    return (OK);    }/********************************************************************************* sramMap - map PCMCIA memory onto a specified ISA address space** This routine maps PCMCIA memory onto a specified ISA address space.** RETURNS:* OK, or ERROR if the memory cannot be mapped.*/STATUS sramMap    (    int sock,			/* socket no. */    int type,			/* 0: common  1: attribute */    int start,			/* ISA start address */    int stop,			/* ISA stop address */    int offset,			/* card offset address */    int extraws			/* extra wait state */    )    {    PCMCIA_CTRL *pCtrl		= &pcmciaCtrl;    PCMCIA_CHIP *pChip		= &pCtrl->chip;    PCMCIA_MEMWIN memwin;    if ((!pChip->installed) || (sock >= pChip->socks))	return (ERROR);    memwin.window	= SRAM_WINDOW;    memwin.flags	= MAP_ACTIVE | MAP_16BIT;    if (type == 1)        memwin.flags	= MAP_ACTIVE | MAP_16BIT | MAP_ATTRIB;    memwin.extraws	= extraws;    memwin.start	= start;    memwin.stop		= stop;    memwin.cardstart	= offset & 0xfffff000;    if ((* pChip->memwinSet)(sock, &memwin) != OK)        return (ERROR);    return (OK);    }/********************************************************************************* sramDevCreate - create a PCMCIA memory disk device** This routine creates a PCMCIA memory disk device.** RETURNS:* A pointer to a block device structure (BLK_DEV), or NULL if memory cannot* be allocated for the device structure.** SEE ALSO: ramDevCreate()*/BLK_DEV *sramDevCreate    (    int sock,			/* socket no. */    int	bytesPerBlk,		/* number of bytes per block */    int	blksPerTrack,		/* number of blocks per track */    int	nBlocks,		/* number of blocks on this device */    int	blkOffset		/* no. of blks to skip at start of device */    )					     {    PCMCIA_CTRL *pCtrl		= &pcmciaCtrl;    PCMCIA_CHIP *pChip		= &pCtrl->chip;    PCMCIA_CARD *pCard		= &pCtrl->card[sock];    SRAM_RESOURCE *pSram	= &sramResources[sock];    PCCARD_RESOURCE *pResource	= &pSram->resource;    SRAM_DEV	*pSramDev;	/* ptr to created SRAM_DEV struct */    BLK_DEV	*pBlkDev;	/* ptr to BLK_DEV struct in SRAM_DEV */    if ((!pChip->installed) || (!pCard->installed) ||	(sock >= sramResourceNumEnt))        return (NULL);    /* Set up defaults for any values not specified */    if (bytesPerBlk == 0)	bytesPerBlk = DEFAULT_SEC_SIZE;    if (nBlocks == 0)	nBlocks = DEFAULT_DISK_SIZE / bytesPerBlk;    if (blksPerTrack == 0)	blksPerTrack = nBlocks;    if ((bytesPerBlk * nBlocks) >= pResource->memLength)        return (NULL);    /* Allocate a SRAM_DEV structure for device */    pSramDev = (SRAM_DEV *) malloc (sizeof (SRAM_DEV));    if (pSramDev == NULL)	return (NULL);					/* no memory */    /* Initialize BLK_DEV structure (in SRAM_DEV) */    pBlkDev = &pSramDev->blkDev;    pBlkDev->bd_nBlocks      = nBlocks;		/* number of blocks */    pBlkDev->bd_bytesPerBlk  = bytesPerBlk;	/* bytes per block */    pBlkDev->bd_blksPerTrack = blksPerTrack;	/* blocks per track */    pBlkDev->bd_nHeads       = 1;		/* one "head" */    pBlkDev->bd_removable    = TRUE;		/* removable */    pBlkDev->bd_retry	     = 1;		/* retry count */    pBlkDev->bd_readyChanged = TRUE;		/* new ready status */    pBlkDev->bd_mode	     = O_RDWR;		/* initial mode for device */    pBlkDev->bd_blkRd	     = sramRead;	/* read block function */    pBlkDev->bd_blkWrt	     = sramWrite;	/* write block function */    pBlkDev->bd_ioctl	     = sramIoctl;	/* ioctl function */    pBlkDev->bd_reset	     = NULL;		/* no reset function */    pBlkDev->bd_statusChk    = sramStatusChk;	/* check-status function */    pBlkDev->bd_statusChk    = NULL;		/* check-status function */    /* Initialize remainder of device struct */    pSramDev->blkOffset	= blkOffset;		/* block offset */    pSramDev->sock	= sock;			/* socket no. */    return (&pSramDev->blkDev);    }/********************************************************************************* sramRead - read one or more blocks from a PCMCIA memory disk volume** This routine reads one or more blocks from the specified volume,* starting with the specified block number.  The byte offset is* calculated and the PCMCIA memory disk data is copied to the specified buffer.** If any block offset was specified during sramDevCreate(), it is added* to <startBlk> before the transfer takes place.** RETURNS: OK, or ERROR if mapping or read fails.*/LOCAL STATUS sramRead    (    SRAM_DEV *pSramDev,		/* pointer to device desriptor */    int      startBlk,		/* starting block number to read */    int      numBlks,		/* number of blocks to read */    char     *pChar		/* pointer to buffer to receive data */    )    {    PCMCIA_CTRL *pCtrl		= &pcmciaCtrl;    PCMCIA_CHIP *pChip		= &pCtrl->chip;    PCMCIA_CARD *pCard		= &pCtrl->card[pSramDev->sock];    SRAM_RESOURCE *pSram	= &sramResources[pSramDev->sock];    PCCARD_RESOURCE *pResource	= &pSram->resource;    SEM_ID muteSemID		= &sramCtrl.muteSem[pSramDev->sock];    SEM_ID syncSemID		= &sramCtrl.syncSem[pSramDev->sock];    u_int bytesPerBlk		= pSramDev->blkDev.bd_bytesPerBlk;    u_int windowSize		= pResource->memStop - pResource->memStart + 1;    u_int nbytes		= bytesPerBlk * numBlks;    u_int offset		= (u_int)pResource->memOffset + 				  ((startBlk + pSramDev->blkOffset) * 				  bytesPerBlk);    u_int copiedBytes		= 0;    u_int length;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一卡二卡三卡四卡五卡| 午夜精品福利一区二区三区蜜桃| 色94色欧美sute亚洲线路二| 久久精品国产精品亚洲红杏 | 9i在线看片成人免费| 亚洲午夜电影在线观看| 国产精品久线在线观看| 欧美xxxxxxxx| 欧美日韩精品欧美日韩精品 | 亚洲午夜久久久久中文字幕久| 久久一留热品黄| 欧美二区三区91| 91麻豆国产在线观看| 国产成人h网站| 精彩视频一区二区| 奇米四色…亚洲| 亚洲成av人片www| 洋洋成人永久网站入口| 国产精品福利一区二区| 2023国产精华国产精品| 日韩视频一区二区三区在线播放| 欧美在线综合视频| 色综合天天综合狠狠| 国产a区久久久| 国产在线精品免费| 狠狠色狠狠色综合系列| 另类小说综合欧美亚洲| 天天影视网天天综合色在线播放| 樱花草国产18久久久久| 亚洲素人一区二区| 日韩毛片精品高清免费| 国产精品情趣视频| 国产精品久久看| 亚洲国产成人一区二区三区| 久久精品在线免费观看| 亚洲精品在线观| 久久久久久一级片| 国产午夜精品久久| 欧美国产精品劲爆| 中文字幕不卡一区| 中文字幕亚洲成人| 亚洲人成亚洲人成在线观看图片| 亚洲欧洲性图库| 亚洲人成人一区二区在线观看| 一区二区中文视频| 一区二区三区电影在线播| 亚洲欧洲综合另类在线| 亚洲小说欧美激情另类| 日韩高清一区二区| 国产在线播放一区二区三区| 国产一区二区三区四区五区入口 | 日本v片在线高清不卡在线观看| 亚洲成人免费影院| 日本欧美一区二区| 韩国成人福利片在线播放| 国产成人av影院| 一本一道久久a久久精品| 欧美午夜一区二区三区免费大片| 欧美男女性生活在线直播观看| 91麻豆精品国产91久久久久| 精品久久久久久最新网址| 久久久久久一级片| 亚洲你懂的在线视频| 午夜在线成人av| 韩日欧美一区二区三区| 国产mv日韩mv欧美| 欧美三级电影网站| 欧美xxxx老人做受| 亚洲欧洲色图综合| 日本免费新一区视频| 国产精品一二二区| 日本精品一区二区三区高清| 91精品国产丝袜白色高跟鞋| 久久久一区二区三区| 亚洲精品视频免费观看| 日韩黄色免费电影| 成人午夜电影网站| 欧美酷刑日本凌虐凌虐| 国产校园另类小说区| 亚洲在线观看免费视频| 国内精品自线一区二区三区视频| 91在线porny国产在线看| 欧美丰满少妇xxxxx高潮对白| 久久久久久一二三区| 亚洲亚洲精品在线观看| 国产91丝袜在线播放0| 欧美精品粉嫩高潮一区二区| 久久精品夜夜夜夜久久| 天堂蜜桃一区二区三区| 成人高清免费观看| 日韩一区二区三区四区| 国产精品麻豆99久久久久久| 日本伊人精品一区二区三区观看方式| 国产盗摄一区二区三区| 欧美精品成人一区二区三区四区| 国产精品久线观看视频| 精品一区二区在线视频| 欧美午夜精品一区| 国产精品国产三级国产三级人妇 | 91亚洲永久精品| 精品999在线播放| 亚洲图片欧美综合| 99精品国产热久久91蜜凸| 精品处破学生在线二十三| 午夜精品123| 91蝌蚪国产九色| 日本一区二区不卡视频| 蜜臀av一区二区在线免费观看| 欧美在线视频日韩| 国产精品久久久一本精品 | 秋霞成人午夜伦在线观看| 色94色欧美sute亚洲线路一久| 欧美国产丝袜视频| 国产乱码精品一区二区三| 欧美videossexotv100| 亚洲va欧美va天堂v国产综合| av不卡在线播放| 国产精品久久久久久久久免费丝袜| 麻豆传媒一区二区三区| 777午夜精品视频在线播放| 亚洲国产美国国产综合一区二区 | 欧美精品一区二区三区视频| 日日摸夜夜添夜夜添国产精品| 色综合久久88色综合天天| 日韩久久一区二区| 91丨porny丨中文| 国产精品久99| 99久久婷婷国产综合精品| 国产精品视频一二三区| 国产精一区二区三区| 精品国精品国产| 精品一二三四在线| 欧美精品一区二区蜜臀亚洲| 麻豆成人91精品二区三区| 欧美精品tushy高清| 香港成人在线视频| 69久久夜色精品国产69蝌蚪网| 亚洲va欧美va天堂v国产综合| 欧美日韩激情一区二区三区| 亚洲国产精品久久久久婷婷884| 欧美视频在线一区| 日本中文字幕一区二区视频| 91精品国产色综合久久不卡电影| 日本在线不卡视频| 久久久久久毛片| 丁香桃色午夜亚洲一区二区三区| 欧美韩国日本不卡| 一本到不卡免费一区二区| 亚洲国产精品影院| 日韩精品中文字幕一区二区三区 | av中文字幕在线不卡| 亚洲美女屁股眼交| 7878成人国产在线观看| 精品一区二区三区免费播放| 国产欧美精品国产国产专区| 99久久免费国产| 日韩有码一区二区三区| 欧美不卡一二三| 99久久伊人精品| 日韩在线一区二区| 欧美激情综合网| 在线精品观看国产| 蜜臀久久久99精品久久久久久| 国产午夜亚洲精品不卡| 91麻豆文化传媒在线观看| 肉色丝袜一区二区| 国产欧美一二三区| 欧美午夜电影在线播放| 久久99国产精品成人| ...中文天堂在线一区| 欧美福利电影网| 成人午夜大片免费观看| 亚洲国产一区二区a毛片| 久久色视频免费观看| 91亚洲精品久久久蜜桃网站| 麻豆精品视频在线观看| 亚洲日本va午夜在线影院| 日韩一区二区三区视频在线| 高清视频一区二区| 三级欧美韩日大片在线看| 国产精品网站在线观看| 欧美久久久久久久久久| 风间由美性色一区二区三区| 亚洲1区2区3区4区| 国产精品入口麻豆九色| 在线综合+亚洲+欧美中文字幕| 成人三级伦理片| 青青草精品视频| 一区二区三区在线免费| 国产欧美一区二区精品性色超碰 | 国产精品免费视频网站| 日韩一区国产二区欧美三区| 91亚洲精品一区二区乱码| 国产综合色精品一区二区三区| 亚洲欧美日韩国产成人精品影院| 精品欧美一区二区在线观看| 99re成人精品视频| 国产精品一区二区无线| 日本伊人精品一区二区三区观看方式| 中文字幕欧美国产|