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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? if_bp.c

?? IXP425的BSP代碼
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
	    return (ERROR);	    }	}    pMemEnd = pMem + memSize;    pHdr = (BP_HEADER *) pMem;    /* initialize bp anchor region */    pBpAnchor->an_ready     = 0;		/* set bp not ready */    pBpAnchor->an_heartbeat = 0;		/* clear heartbeat */    pBpAnchor->an_pHdr      = KtoIval (pHdr, BP_HEADER *, pAnchor);    if (pMem + sizeof (BP_HEADER) > pMemEnd)	{	printf ("bp: bpInit out of memory!\n");	return (ERROR);	}    /* initialize bp header region */    pHdr->hdr_ready = 0;                /* set CPU region not ready */    pHdr->hdr_ncpu = BP_HTONS(NCPU);    /* set number of CPUs */    bcopy ((char *) bpEnetAdrs, (char *) pHdr->hdr_enetAdrs, 6);    /* initialize each CPU descriptor */    for (ix = 0; ix < MAXCPU; ++ix)	{	pCpu = &pHdr->hdr_cpuDesc[ix];	pCpu->cd_active      = FALSE;	pCpu->cd_cpuNum      = BP_HTONL(ix);	pCpu->cd_pInputRing  = NULL;	}    /* initialize free ring */    pMem += sizeof (BP_HEADER);    if ((pMem + sizeof (struct ring256) + NCPU * sizeof (struct ring32))								> pMemEnd)	{	printf ("bp: bpInit out of memory!\n");	return (ERROR);	}    ringinit ((pFreeRing = (RING *) pMem), 256);    pHdr->hdr_pFreeRing =  KtoIval (pFreeRing, RING *, pAnchor);    pMem += sizeof (struct ring256);    /* initialize each input ring */    for (ix = 0; ix < NCPU; ++ix)	{	ringinit ((RING *) pMem, 32);	pHdr->hdr_cpuDesc[ix].cd_pInputRing = KtoIval (pMem, RING *, pAnchor);	pMem += sizeof (struct ring32);	}    /* initialize as many buffer blocks as will fit in remaining shared memory*/    if ((pMem + sizeof (BUF_NODE) + BP_BUFSIZ) > pMemEnd)	{	printf ("bp: bpInit out of memory!\n");	return (ERROR);	}    while ((pMem + sizeof (BUF_NODE) + BP_BUFSIZ) <= pMemEnd)	{	((BUF_NODE *)pMem)->b_addr = KtoIval (pMem + sizeof (BUF_NODE),					      char*, pAnchor);        ((BUF_NODE *)pMem)->b_len = BP_BUFSIZ;	(void) ringput (pFreeRing, KtoIval (pMem, int, pAnchor));	pMem += sizeof (BUF_NODE) + BP_BUFSIZ;	npackets++;	}    if (DEBUG_OPTION_1)	{	printf ("bp: number of %d byte packets is %d\n", BP_BUFSIZ, npackets);	printf ("bp: %d bytes unused from 0x%x to 0x%x\n",		(int) (pMemEnd - pMem), 		(int) vir2phys (pMem), 		(int) vir2phys (pMemEnd));	}    /* mark bp as ready */    if (bpTasOK)	pHdr->hdr_ready = pBpAnchor->an_ready = BP_HTONL(BP_READY);    else	pHdr->hdr_ready = pBpAnchor->an_ready = BP_HTONL(BP_READY_SOFT_TAS);    /* start heartbeat */    bpHeartbeatRate = hz;#ifdef	UNIX    timeout (bpHeartbeat, (caddr_t) pAnchor, bpHeartbeatRate);#else	/* UNIX */    /* create watchdog timer for heartbeat */    if ((pBpAnchor->an_wdog = wdCreate ()) == NULL)	return (ERROR);    wdStart (pBpAnchor->an_wdog, bpHeartbeatRate, (FUNCPTR) bpHeartbeat,             (int) pAnchor);#endif	/* UNIX */    return (OK);    }/********************************************************************************* bpReset - mark a bp inactive** called from reboot and panic*/LOCAL void bpReset    (    FAST int unit    )    {    FAST BP_SOFTC *bs;    FAST BUF_NODE *pBufNode;#ifdef	UNIX    FAST struct mb_device *md;    if (unit >= NBP || (md = bpinfo[unit]) == 0 || md->md_alive == 0)	return;#endif	/* UNIX */    bs = BP_SOFTC_P [unit];    if (bs != NULL && bs->bs_pHdr != NULL)	{	/* turn off active flag in our CPU descriptor in the	 * shared header, then throw away anything on our input ring */	bs->bs_pHdr->hdr_cpuDesc[bs->bs_procNum].cd_active = FALSE;	while ( (pBufNode = (BUF_NODE *)ringget ( (RING *)bs->bs_pInputRing)))	    (void)ringput ( (RING *)bs->bs_pFreeRing, (int)pBufNode);	}    }/********************************************************************************* bpAlive - check for throbbing heartbeat** This routine is called for CPU 0 (master) as well as the rest.* The timeout is quick if the master can't see its own ticker.** RETURNS: OK or ERROR if unable to find anchor after 10 minutes*/LOCAL STATUS bpAlive    (    BP_SOFTC *bs    )    {    int readyValue;    int heartbeat;    FAST unsigned int oldBeat = 0;    FAST int countdown             = 10 * 60 * hz;	/* wait 10 minutes */    FAST BP_ANCHOR *pAnchor        = bs->bs_pAnchor;#ifdef	UNIX    int level = spl3 ();	/* find out priority level */    splx (level);#endif	/* UNIX */    if (bs->bs_procNum == 0)	countdown = 2 * hz;	/* don't wait around for self if master CPU */    while (--countdown > 0)	{	/* probe test:	 *  1) anchor must be readable (memory must be visable to us),	 *  2) anchor ready value must be BP_READY or BP_READY_SOFT_TAS,	 *  3) anchor heartbeat must be increasing.	 */#ifdef	UNIX	if (peek ((short *) &pAnchor->an_ready)     != -1 &&	    peek ((short *) &pAnchor->an_heartbeat) != -1)	    {	    readyValue = BP_NTOHL(pAnchor->an_ready);	    heartbeat  = (UINT)BP_NTOHL(pAnchor->an_heartbeat);#else	/* UNIX */	if (vxMemProbe ((char *) &pAnchor->an_ready,			 O_RDONLY, 4, (char *) &readyValue) == OK &&	    vxMemProbe ((char *) &pAnchor->an_heartbeat,			 O_RDONLY, 4, (char *) &heartbeat) == OK)	    {	    readyValue = BP_NTOHL(readyValue);	    heartbeat = (UINT)BP_NTOHL(heartbeat);#endif	/* UNIX */	    if ((countdown % 10) == 6)		{		printf ("\nbp: bpAlive ready = 0x%x, heartbeat = %d\n",			    readyValue, heartbeat);		}	    if (readyValue == BP_READY || readyValue == BP_READY_SOFT_TAS)		{		if (oldBeat == 0 || heartbeat <= oldBeat)		    oldBeat = heartbeat;		else		    {		    /* heartbeat increased, passed test */		    bpTasOK = readyValue == BP_READY;		    return (OK);		    }		}	    }	else if ((countdown % 10) == 8)	    printf ("\nbp: bpAlive bus error\n");#ifdef	UNIX	timeout (wakeup, (caddr_t)bs, 1);        sleep (bs, level);#else	/* UNIX */	taskDelay (hz);#endif	/* UNIX */	}#ifndef	UNIX    (void) errnoSet (S_iosLib_CONTROLLER_NOT_PRESENT);#endif	/* UNIX */    /* give up - didn't get initialized */    return (ERROR);    }/********************************************************************************* bpIfInit - initialize interface** RETURNS: OK or ERROR*/LOCAL STATUS bpIfInit    (    int unit    )    {    FAST CPU_DESC *pCpu;    FAST BP_SOFTC *bs = BP_SOFTC_P [unit];    FAST BP_HEADER *pHdr;    /* find the anchor and CPU descriptor */    pHdr = ItoKval (bs->bs_pAnchor->an_pHdr, BP_HEADER *, bs->bs_pAnchor);    bs->bs_pHdr = pHdr;#ifdef	UNIX    /* wait for shared memory to be initialized */    if (!BP_MASTER && bpAlive (bs) == ERROR)	return (ERROR);#endif	/* UNIX */    pCpu = &pHdr->hdr_cpuDesc [bs->bs_procNum];    bs->bs_pFreeRing = ItoKval (pHdr->hdr_pFreeRing, RING *, bs->bs_pAnchor);    bs->bs_pInputRing= ItoKval(pHdr->hdr_cpuDesc[bs->bs_procNum].cd_pInputRing,			       RING *, bs->bs_pAnchor);    /* fill in Ethernet address, which is the backplane Ethernet address with     * our processor number as the last byte. */#ifdef	UNIX    bcopy ((char *) pHdr->hdr_enetAdrs,	    (char *) bs->bs_enaddr.ether_addr_octet, 6);    bs->bs_enaddr.ether_addr_octet [4] = unit;    bs->bs_enaddr.ether_addr_octet [5] = (char) bs->bs_procNum;#else	/* UNIX */    bcopy ((char *) pHdr->hdr_enetAdrs, (char *) bs->bs_enaddr, 6);    bs->bs_enaddr [4] = unit;    bs->bs_enaddr [5] = (char) bs->bs_procNum;#endif	/* UNIX */    /* check that our input buffer was established     * (in case NCPU < our cpu < MAXCPU) */    if (pCpu->cd_pInputRing == NULL)	return (ERROR);    /* fill in our info in the CPU descriptor in shared memory */    pCpu->cd_unit = unit;	/* set our internal unit num */    /* tell others how to interrupt us */    pCpu->cd_intType = BP_HTONL(bs->bs_intType);    pCpu->cd_intArg1 = BP_HTONL(bs->bs_intArg1);    pCpu->cd_intArg2 = BP_HTONL(bs->bs_intArg2);    pCpu->cd_intArg3 = BP_HTONL(bs->bs_intArg3);    /* connect and enable our interprocessor interrupt */    if (DEBUG_OPTION_1)	printf ("bp%d: connecting...\n", unit);    if (bpConnect (bs, unit) != OK || bpIntEnable (bs) != OK)	return (ERROR);    /* tell others we're here now */    pCpu->cd_active = TRUE;    if ((bs->bs_if.if_flags & IFF_RUNNING) == 0)	bs->bs_if.if_flags |= IFF_UP | IFF_RUNNING;    return (OK);    }/********************************************************************************* bpintr - interrupt handler** RETURNS: N/A** NOMANUAL*/void bpintr    (    int unit    )    {    FAST BP_SOFTC *bs = BP_SOFTC_P [unit];    if (bs != NULL && bs->bs_pInputRing != NULL)	/* input ring exists? */	{#ifndef	UNIX	bpIntAck (bs);#endif	/* UNIX */	if (!bs->bs_readPending)	    {	    bs->bs_readPending = TRUE;#ifdef	UNIX	    bpReadAll (unit);#else	/* UNIX */	    (void) netJobAdd ((FUNCPTR)bpReadAll, unit, 0,0,0,0); /* read from input ring */#endif	/* UNIX */	    }	}    }/********************************************************************************* bpReadAll -*/LOCAL void bpReadAll    (    int unit    )    {    FAST BP_SOFTC *bs = BP_SOFTC_P [unit];    FAST BUF_NODE *pBufNode;    bs->bs_readPending = FALSE;    while ((pBufNode = (BUF_NODE *) ringget ((RING *) bs->bs_pInputRing)) != 0)	{#ifdef UNIX	bpRead (bs, ItoKval (pBufNode, BUF_NODE *, bs->bs_pAnchor));	(void) ringput (bs->bs_pFreeRing, (int) pBufNode);#else	/* UNIX */	if (bpRead (bs, ItoKval (pBufNode, BUF_NODE *, bs->bs_pAnchor),		    pBufNode) == OK)	    (void) ringput ((RING *) bs->bs_pFreeRing, (int) pBufNode);#endif	/* UNIX */	}    }/********************************************************************************* bpRead -** NOMANUAL*/#ifdef UNIXLOCAL void bpRead (bs, pBufNode)    BP_SOFTC *bs;    BUF_NODE *pBufNode;#else	/* UNIX */LOCAL STATUS bpRead    (    BP_SOFTC *bs,    BUF_NODE *pBufNode,    BUF_NODE *pBufNodeOrig    )#endif  /* UNIX */    {    FAST struct ether_header	*eh;    FAST struct mbuf 		*m;    int 			len;    int 			off;    FAST unsigned char 		*pData;    STATUS 			retval;#ifdef BSD43_DRIVER    u_short			ether_type;#endif    retval = OK;    bs->bs_if.if_ipackets++;	/* count input packets */    /* get length and pointer to packet */    len = (int) (BP_NTOHS (pBufNode->b_len));    eh = ItoKval (pBufNode->b_addr, struct ether_header *, bs->bs_pAnchor);#ifndef	UNIX    /* call input hook if any */    if ((etherInputHookRtn != NULL) &&	(* etherInputHookRtn) (&bs->bs_if, (char *)eh, BP_NTOHS(pBufNode->b_len)))	return (retval);	/* input hook has already processed packet */#endif	/* UNIX */    len -= SIZEOF_ETHERHEADER;    pData = ((unsigned char *) eh) + SIZEOF_ETHERHEADER;#ifdef	UNIX    check_trailer (eh, pData, &len, &off);    if (len == 0)	return;    m = copy_to_mbufs (pData, len, off);    if (m != NULL)	do_protocol (eh, m, &bs->bs_ac, len);    else        bs->bs_if.if_ierrors++;     /* bump error count */#else	/* UNIX */#ifdef BSD43_DRIVER    check_trailer (eh, pData, &len, &off, &bs->bs_if);    if (len == 0)	return (retval);    ether_type	= eh->ether_type;#endif    m = copy_to_mbufs (pData, len, off, &bs->bs_if);    if (m != NULL)#ifdef BSD43_DRIVER        do_protocol_with_type (ether_type, m, &bs->bs_ac, len);#else        do_protocol (eh, m, &bs->bs_ac, len);#endif    else        bs->bs_if.if_ierrors++;     /* bump error count */             return (retval);#endif	/* UNIX */    }/********************************************************************************* bpStart -** NOMANUAL*/#ifdef	UNIXLOCAL void bpStart (dev)    dev_t dev;#else	/* UNIX */#ifdef BSD43_DRIVERLOCAL void bpStart    (    int unit    )#elseLOCAL void bpStart    (    BP_SOFTC * 	bs    )#endif    /* BSD43_DRIVER */#endif  /* UNIX */    {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡的av在线播放| 精品国产乱码久久久久久老虎| 久久精品亚洲精品国产欧美| 美女视频黄频大全不卡视频在线播放| 欧美亚洲免费在线一区| 亚洲一区二区精品3399| 欧美日韩综合一区| 亚洲成a人片在线不卡一二三区| 欧美日韩精品一区二区| 天堂影院一区二区| 欧美第一区第二区| 国产mv日韩mv欧美| 亚洲私人黄色宅男| 欧美日韩综合色| 国内外成人在线| 国产精品久久久久毛片软件| 一本久久精品一区二区| 亚洲成人av一区| 精品乱人伦小说| 高清成人免费视频| 一区二区成人在线视频| 欧美一区二区精品在线| 国产成人综合网| 亚洲精品视频自拍| 日韩美女视频在线| www.亚洲免费av| 日韩高清在线观看| 国产精品人成在线观看免费| 色老汉一区二区三区| 免费人成在线不卡| 中文字幕国产一区| 欧美久久久久久久久中文字幕| 激情综合五月天| 亚洲黄一区二区三区| 日韩视频一区在线观看| 成人综合婷婷国产精品久久 | 综合久久给合久久狠狠狠97色| 欧美系列亚洲系列| 国产精品一区二区免费不卡| 亚洲另类在线一区| 精品久久久久久无| 欧美日韩一级二级三级| 国产69精品久久久久毛片| 亚洲一区二区中文在线| 久久久五月婷婷| 欧美精品日韩一区| 99久久久无码国产精品| 久久精品国产免费| 性做久久久久久免费观看 | 欧美一区二区三区精品| 99麻豆久久久国产精品免费优播| 日韩av中文字幕一区二区三区| 欧美国产国产综合| 欧美xxxxx牲另类人与| 91福利视频久久久久| 成人在线视频一区二区| 美女在线观看视频一区二区| 亚洲欧美色一区| 国产精品免费aⅴ片在线观看| 日韩欧美专区在线| 欧美三级电影网| 色婷婷国产精品综合在线观看| 国产精品一区二区在线观看不卡 | 狠狠狠色丁香婷婷综合激情| 亚洲6080在线| 一区二区三区日韩欧美| 国产精品素人一区二区| 欧美精品一区二区三区蜜桃| 欧美一级视频精品观看| 欧美欧美欧美欧美| 欧美另类一区二区三区| 在线观看中文字幕不卡| 色偷偷88欧美精品久久久| 99久久精品国产一区二区三区| 国产精品自产自拍| 国产精品99久久久久久有的能看| 久久成人免费日本黄色| 麻豆传媒一区二区三区| 久久99精品久久久久久动态图 | 久久九九99视频| 精品粉嫩aⅴ一区二区三区四区| 欧美一卡在线观看| 91麻豆精品国产无毒不卡在线观看| 欧美日韩一区精品| 欧美久久免费观看| 日韩三级免费观看| 日韩一区二区三区四区| 日韩三级视频中文字幕| 亚洲精品一区二区精华| 久久亚洲私人国产精品va媚药| 久久久美女艺术照精彩视频福利播放 | 亚洲啪啪综合av一区二区三区| 欧美国产精品专区| 国产欧美一区二区精品久导航| 日韩欧美一卡二卡| 色一区在线观看| 在线不卡一区二区| 日韩欧美国产电影| 精品剧情在线观看| 久久久久久久久岛国免费| 日韩精品一区二区三区蜜臀| 久久久久久久久一| 久久精品水蜜桃av综合天堂| 久久久久国产成人精品亚洲午夜| 久久久久久99久久久精品网站| 欧美一个色资源| 欧美精品一区二区不卡| 97超碰欧美中文字幕| 欧美性受xxxx黑人xyx性爽| 欧美午夜精品电影| 这里只有精品电影| 久久久精品免费免费| 中文字幕一区二区三区蜜月| 久久亚洲精品小早川怜子| 亚洲视频一区在线观看| 亚洲午夜免费电影| 裸体歌舞表演一区二区| 国产成人精品免费在线| 色综合天天天天做夜夜夜夜做| 成人动漫中文字幕| 欧美日韩亚洲综合一区二区三区 | 免费观看久久久4p| 韩国三级中文字幕hd久久精品| 国产精品99久久久久久久vr| 91丨porny丨蝌蚪视频| 制服丝袜亚洲网站| 国产亚洲污的网站| 亚洲美女电影在线| 琪琪久久久久日韩精品| 国产91在线观看丝袜| 欧美日免费三级在线| 久久精品欧美一区二区三区不卡| 精品久久99ma| 亚洲二区在线视频| 国产精品一级在线| 欧美丝袜丝nylons| 国产三级久久久| 午夜电影一区二区| 麻豆精品视频在线观看免费| 成人激情小说乱人伦| 欧美丰满少妇xxxxx高潮对白 | 成人免费不卡视频| 欧美日本精品一区二区三区| 国产人成一区二区三区影院| 一区二区三区四区在线免费观看| 久久精品99国产精品| 欧美日本高清视频在线观看| 国产精品久久免费看| 男女激情视频一区| 91老师片黄在线观看| 久久久亚洲精品石原莉奈 | 亚洲国产成人在线| 亚洲精品中文在线影院| 成人免费看片app下载| 欧美一区二区三区免费在线看| 综合久久给合久久狠狠狠97色 | 91电影在线观看| 国产精品久久影院| 精品一区二区三区免费播放| 欧美日韩一区二区欧美激情| 国产欧美日韩精品在线| 免费xxxx性欧美18vr| 99视频有精品| 亚洲少妇30p| 国产 欧美在线| 精品国产网站在线观看| 欧美aaa在线| 色综合色狠狠天天综合色| 亚洲精品亚洲人成人网在线播放| 成人性生交大片免费看在线播放| 欧美成人免费网站| 蜜臀国产一区二区三区在线播放| 99久久国产综合精品色伊| 国产精品盗摄一区二区三区| 国产乱码精品一区二区三区忘忧草 | 色噜噜久久综合| 国产精品乱子久久久久| 国产不卡视频一区二区三区| 日韩精品自拍偷拍| 日本欧美大码aⅴ在线播放| 色婷婷精品大在线视频| 伊人色综合久久天天人手人婷| eeuss影院一区二区三区| 国产精品初高中害羞小美女文| 国产成人av影院| 欧美国产成人精品| 国产在线精品国自产拍免费| 国产欧美精品一区二区色综合朱莉| 国产一区在线不卡| 欧美精品一区二区三区在线| 国产在线不卡一区| 精品国产乱码久久久久久影片| 老司机午夜精品99久久| 日本韩国一区二区| 日韩精品一级中文字幕精品视频免费观看 | 老司机免费视频一区二区| 欧美一区二区三区小说| 日本成人在线视频网站| 国产午夜久久久久| 99视频有精品|