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

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

?? pcmcialib.c

?? vxworks的完整的源代碼
?? C
字號:
/* pcmciaLib.c - generic PCMCIA event-handling facilities *//* Copyright 1984-1996 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01g,21jun00,rsh  upgrade to dosFs 2.001f,16jan97,hdn  added pCtrl->socks to force a number of sockets.01e,08nov96,dgp  doc: final formatting01d,28mar96,jdi  doc: cleaned up language and format.01c,08mar96,hdn  added more descriptions.01b,22feb96,hdn  cleaned up01a,05apr95,hdn  written.*//*DESCRIPTIONThis library provides generic facilities for handling PCMCIA events.USER-CALLABLE ROUTINESBefore the driver can be used, it must be initialized by calling pcmciaInit().This routine should be called exactly once, before any PC card device driveris used.  Normally, it is called from usrRoot() in usrConfig.c.The pcmciaInit() routine performs the following actions:.iPCreates a message queue..iPSpawns a PCMCIA daemon, which handles jobs in the message queue..iPFinds out which PCMCIA chip is installed and fills out thePCMCIA_CHIP structure..iPConnects the CSC (Card Status Change) interrupt handler..iPSearches all sockets for a PC card.  If a card is found, it:    gets CIS (Card Information Structure) information from a card    determines what type of PC card is in the socket    allocates a resource for the card if the card is supported    enables the card.iPEnables the CSC interrupt..LPThe CSC interrupt handler performs the following actions:.iPSearches all sockets for CSC events..iPCalls the PC card's CSC interrupt handler, if there is a PC card in the socket..iPIf the CSC event is a hot insertion, it asks the PCMCIA daemon to call cisGet()at task level.  This call reads the CIS, determines the type of PC card, andinitializes a device driver for the card..iPIf the CSC event is a hot removal, it asks the PCMCIA daemon to call cisFree()at task level.  This call de-allocates resources.*//* LINTLIBRARY */#include "vxWorks.h"#include "taskLib.h"#include "msgQLib.h"#include "intLib.h"#include "logLib.h"#include "iv.h"#include "private/funcBindP.h"#include "drv/pcmcia/pcmciaLib.h"#include "drv/pcmcia/cisLib.h"/* externs */IMPORT PCMCIA_CTRL	pcmciaCtrl;IMPORT PCMCIA_ADAPTER	pcmciaAdapter[];IMPORT int		pcmciaAdapterNumEnt;IMPORT SEMAPHORE	cisMuteSem;/* globals */MSG_Q_ID	pcmciaMsgQId;		/* ID of msgQ to pcmciad */int		pcmciadId;		/* pcmciad parameters */int		pcmciadPriority		= 2;int		pcmciadOptions		= VX_SUPERVISOR_MODE | VX_UNBREAKABLE;int		pcmciadStackSize	= 8000;BOOL		pcmciaDebug		= FALSE;/* locals */LOCAL int	pcmciaMsgsLost;		/* count of msgs to pcmciad lost *//* forward declarations */LOCAL void	pcmciaCscIntr	(void);/********************************************************************************* pcmciaInit - initialize the PCMCIA event-handling package** This routine installs the PCMCIA event-handling facilities and spawns* pcmciad(), which performs special PCMCIA event-handling functions that* need to be done at task level.  It also creates the message queue used to* communicate with pcmciad().** RETURNS:* OK, or ERROR if a message queue cannot be created or pcmciad() cannot be* spawned.** SEE ALSO: pcmciad()*/STATUS pcmciaInit (void)    {    PCMCIA_CTRL *pCtrl		= &pcmciaCtrl;    PCMCIA_CHIP *pChip		= &pCtrl->chip;    PCMCIA_CARD *pCard;    PCMCIA_ADAPTER *pAdapter 	= NULL;    int sock;    int ix;    pcmciaMsgQId = msgQCreate (PCMCIA_MAX_MSGS, sizeof(PCMCIA_MSG), MSG_Q_FIFO);    if (pcmciaMsgQId == NULL)	return (ERROR);    pcmciadId = taskSpawn ("tPcmciad", pcmciadPriority,			   pcmciadOptions, pcmciadStackSize,			   (FUNCPTR) pcmciad, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);    if (pcmciadId == ERROR)	return (ERROR);    for (ix = 0; ix < pcmciaAdapterNumEnt; ix++)	{        pAdapter = &pcmciaAdapter[ix];        if ((* pAdapter->initRtn) (pAdapter->ioBase,				   pAdapter->intVec,				   pAdapter->intLevel,				   pAdapter->showRtn) == OK)	    break;	}    if (ix >= pcmciaAdapterNumEnt)	return (ERROR);    semMInit (&cisMuteSem, SEM_Q_PRIORITY | SEM_DELETE_SAFE |	      SEM_INVERSION_SAFE);    (void) intConnect ((VOIDFUNCPTR *)INUM_TO_IVEC(pAdapter->intVec),		       (VOIDFUNCPTR)pcmciaCscIntr, 0);    if (pCtrl->socks != 0)		/* if explicitely defined, use it */        pChip->socks = pCtrl->socks;    for (sock = 0; sock < pChip->socks; sock++)	{	pCard = &pCtrl->card[sock];	if ((pCard->cardStatus = (* pChip->status) (sock)) & PC_IS_CARD)	    (void) cisGet (sock);        (void) (* pChip->cscPoll) (sock);        (void) (* pChip->cscOn) (sock, pChip->intLevel);	}    sysIntEnablePIC (pAdapter->intLevel);    return (OK);    }/********************************************************************************* pcmciaJobAdd - request a task-level function call from interrupt level** This routine allows interrupt level code to request a function call* to be made by pcmciad at task-level.** NOMANUAL** RETURNS: OK, or ERROR if the message is lost.*/STATUS pcmciaJobAdd    (    VOIDFUNCPTR func,		/* function pointer */    int         arg1,		/* argument 1 */    int         arg2,		/* argument 2 */    int         arg3,		/* argument 3 */    int         arg4,		/* argument 4 */    int         arg5,		/* argument 5 */    int         arg6		/* argument 6 */    )    {    PCMCIA_MSG msg;    msg.func	= func;    msg.arg[0]	= arg1;    msg.arg[1]	= arg2;    msg.arg[2]	= arg3;    msg.arg[3]	= arg4;    msg.arg[4]	= arg5;    msg.arg[5]	= arg6;    if (msgQSend (pcmciaMsgQId, (char *) &msg, sizeof (msg),		  INT_CONTEXT() ? NO_WAIT : WAIT_FOREVER, MSG_PRI_NORMAL) != OK)        {        ++pcmciaMsgsLost;        return (ERROR);        }    return (OK);    }/********************************************************************************* pcmciad - handle task-level PCMCIA events** This routine is spawned as a task by pcmciaInit() to perform functions* that cannot be performed at interrupt or trap level.  It has a priority of 0.* Do not suspend, delete, or change the priority of this task.** RETURNS: N/A** SEE ALSO: pcmciaInit()*/void pcmciad (void)    {    static int oldMsgsLost = 0;    int newMsgsLost;    PCMCIA_MSG msg;    FOREVER	{	if (msgQReceive (pcmciaMsgQId, (char *) &msg, sizeof (msg),			 WAIT_FOREVER) != sizeof (msg))	    {	    if (_func_logMsg != NULL)	        (* _func_logMsg) ("pcmciad: error receive msg, status = %#x\n",				  errno, 0, 0, 0, 0, 0);	    }        else            (* msg.func) (msg.arg[0], msg.arg[1], msg.arg[2],			  msg.arg[3], msg.arg[4], msg.arg[5]);	/* check to see if interrupt level lost any more calls */	if ((newMsgsLost = pcmciaMsgsLost) != oldMsgsLost)	    {	    if (_func_logMsg != NULL)	        (* _func_logMsg) ("%d messages from interrupt level lost.\n",				  newMsgsLost - oldMsgsLost, 0, 0, 0, 0, 0);	    oldMsgsLost = newMsgsLost;	    }	}    }/********************************************************************************* pcmciaCscIntr - interrupt handler for card status change** This routine is interrupt handler for card status change.** RETURNS: N/A*/LOCAL void pcmciaCscIntr (void)    {    PCMCIA_CTRL *pCtrl = &pcmciaCtrl;    PCMCIA_CHIP *pChip = &pCtrl->chip;    PCMCIA_CARD *pCard;    int sock;    int csc;    int status;    for (sock = 0; sock < pChip->socks; sock++)	{	pCard = &pCtrl->card[sock];	/* get changed status bits */	if ((csc = (* pChip->cscPoll) (sock)) != 0)	    status = (* pChip->status) (sock);	else	    continue;	/* ignore if the status doesn't change */	if (status ^ pCard->cardStatus)	    pCard->cardStatus = status;	else	    continue;	if ((pcmciaDebug) && (_func_logMsg != NULL))	    (* _func_logMsg) ("CSC sock=%d csc=0x%-4x status=0x%-4x\n",			      sock, csc, pCard->cardStatus, 0, 0, 0);	/* card's CSC interrupt handler. go next sock if it returns ERROR */	if (pCard->cscIntr != NULL)	    if ((* pCard->cscIntr) (sock, csc) != OK)		continue;	/* hot insertion */	if ((csc & PC_DETECT) && (pCard->cardStatus & PC_IS_CARD))	    {	    pcmciaJobAdd ((VOIDFUNCPTR)cisGet, sock, 0,0,0,0,0);	    if ((pcmciaDebug) && (_func_logMsg != NULL))	        (* _func_logMsg) ("Inserted: pcmciaJobAdd (cisGet)\n",				  0, 0, 0, 0, 0, 0);	    }	/* hot removal */	if ((csc & PC_DETECT) && (pCard->cardStatus & PC_NO_CARD))	    {	    pcmciaJobAdd (cisFree, sock, 0,0,0,0,0);	    if ((pcmciaDebug) && (_func_logMsg != NULL))	        (* _func_logMsg) ("Removed: pcmciaJobAdd (cisFree)\n",				  0, 0, 0, 0, 0, 0);	    }	}    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩制服丝袜av| 亚洲另类在线一区| 美女网站一区二区| 日韩免费电影一区| 国产精品影视在线观看| 欧美激情中文不卡| 色综合久久综合网欧美综合网 | 国产欧美日韩视频一区二区| 国产激情视频一区二区在线观看 | 捆绑调教美女网站视频一区| 精品国产免费一区二区三区四区| 老鸭窝一区二区久久精品| 精品99999| 99视频精品在线| 亚洲午夜电影在线| 精品国产91亚洲一区二区三区婷婷 | 精品久久久久久久人人人人传媒 | 亚洲精品网站在线观看| 欧美色图激情小说| 国产一区高清在线| 亚洲视频香蕉人妖| 欧美一区二区三区视频免费播放| 水野朝阳av一区二区三区| 久久亚洲综合色一区二区三区| 国产麻豆91精品| 亚洲精品中文在线| 精品久久人人做人人爰| 99视频有精品| 久久99久久精品欧美| 亚洲啪啪综合av一区二区三区| 99re这里都是精品| 三级久久三级久久| 国产精品久久久99| 日韩精品一区在线| 91在线观看视频| 国产呦萝稀缺另类资源| 亚洲一区二区3| 国产视频一区不卡| 91精品国产综合久久久久| 成人国产亚洲欧美成人综合网| 亚洲免费观看高清完整版在线观看 | 欧美日韩你懂得| 国产另类ts人妖一区二区| 亚洲成人免费视频| 亚洲日本一区二区三区| 日韩视频123| 欧美午夜电影一区| 成人av动漫在线| 精品一二三四区| 亚洲国产一区二区三区青草影视| 欧美精品一区二区三区在线播放| 91久久精品一区二区三区| 国产成人精品影视| 久久99精品久久久久婷婷| 亚洲一区二区三区在线| 专区另类欧美日韩| 欧美国产日韩a欧美在线观看 | 欧美肥妇free| 欧美午夜精品久久久久久超碰| 国产一区二区三区精品视频| 美女一区二区视频| 青青青爽久久午夜综合久久午夜| 亚洲女厕所小便bbb| 国产三级三级三级精品8ⅰ区| 欧美又粗又大又爽| 99国产精品久久| aaa欧美色吧激情视频| 国产91富婆露脸刺激对白| 国产综合成人久久大片91| 麻豆精品久久精品色综合| 亚洲成人免费在线| 午夜精品福利一区二区蜜股av| 国产精品久99| 专区另类欧美日韩| 亚洲六月丁香色婷婷综合久久| 国产精品私人自拍| 国产精品理论片在线观看| 欧美国产成人在线| 亚洲欧美自拍偷拍色图| 亚洲欧美日韩国产中文在线| 亚洲欧美偷拍另类a∨色屁股| 久久久久久久综合色一本| 2024国产精品| 日本一二三四高清不卡| 国产精品无人区| 国产精品国产三级国产三级人妇 | 久久久电影一区二区三区| 国产色爱av资源综合区| 国产精品女同互慰在线看| 国产精品萝li| 一区二区三区四区在线播放 | 亚洲人成伊人成综合网小说| 亚洲精品免费一二三区| 一区二区三区免费| 午夜亚洲福利老司机| 免费高清在线一区| 国产丶欧美丶日本不卡视频| 不卡影院免费观看| 欧美精品视频www在线观看| 精品久久久影院| 国产亚洲成av人在线观看导航| 日韩美一区二区三区| 国产精品乱人伦中文| 亚洲五月六月丁香激情| 理论电影国产精品| 91视频观看视频| 欧美肥妇毛茸茸| 国产精品私人影院| 日韩专区在线视频| 国产成人自拍网| 欧美三级在线视频| 久久先锋影音av鲁色资源网| 亚洲欧美一区二区在线观看| 亚洲成av人在线观看| 久久99精品久久久久久| 99久久久久久| 精品少妇一区二区三区在线播放| 中文字幕精品一区二区三区精品| 樱桃视频在线观看一区| 加勒比av一区二区| 色综合天天综合网国产成人综合天| 欧美日韩性生活| 国产精品女主播在线观看| 喷水一区二区三区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 韩国av一区二区三区四区| 91国偷自产一区二区开放时间| 欧美伊人久久大香线蕉综合69| 精品少妇一区二区三区视频免付费 | 爽好多水快深点欧美视频| 黄色小说综合网站| 欧美片网站yy| 亚洲女同一区二区| 国产高清亚洲一区| 91精品国产综合久久婷婷香蕉| 亚洲国产成人私人影院tom| 日韩精品国产精品| 在线一区二区视频| 国产精品免费看片| 国产一二三精品| 欧美一级精品在线| 亚洲最大成人网4388xx| 成人精品视频网站| 精品国产乱码久久久久久牛牛| 日韩毛片精品高清免费| 国产sm精品调教视频网站| 日韩欧美一级在线播放| 亚洲成av人片一区二区梦乃| 99r国产精品| 国产精品视频看| 国产一区二区三区免费观看| 欧美电视剧在线观看完整版| 亚洲成在线观看| 精品视频1区2区| 一区二区三区在线观看视频| av色综合久久天堂av综合| 国产视频一区二区在线观看| 国产一区二区三区免费看| 精品乱码亚洲一区二区不卡| 毛片av一区二区| 精品精品欲导航| 国内不卡的二区三区中文字幕| 欧美日韩国产影片| 日韩成人av影视| 91精品欧美久久久久久动漫 | 97成人超碰视| 《视频一区视频二区| 99在线精品观看| 亚洲精品伦理在线| 99久久婷婷国产精品综合| 国产精品乱码人人做人人爱| 成人精品鲁一区一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| 另类成人小视频在线| 欧美精品一区二区三区蜜臀| 国产精品一色哟哟哟| 久久久久久久精| 99久久久免费精品国产一区二区| 国产精品欧美综合在线| 一本到不卡精品视频在线观看| 欧美国产乱子伦| 色欧美片视频在线观看在线视频| 国产精品色一区二区三区| 色域天天综合网| 午夜电影一区二区| 欧美成人三级电影在线| 国产成人夜色高潮福利影视| 亚洲丝袜另类动漫二区| 欧美日韩在线一区二区| 麻豆国产欧美日韩综合精品二区| 日韩美女主播在线视频一区二区三区| 亚洲国产精品自拍| 精品欧美乱码久久久久久| 国产成人精品一区二区三区四区| 中文一区一区三区高中清不卡| 成人av一区二区三区| 一区二区三区色| 日韩欧美中文字幕一区| 成人中文字幕在线| 亚洲一区电影777|