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

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

?? wdbnetrompktdrv.c

?? vxworks的完整的源代碼
?? C
字號:
/* wdbNetromPktDrv.c - NETROM packet driver for the WDB agent */ /* Copyright 1984-1997 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01a,04feb96,ms   derived from 01h version of wdbNetromPktDrv.c*//*DESCRIPTIONThis is a lightweight NETROM driver that interfaces with the WDB agent'sUDP/IP interpreter.  It allows the WDB agent to communicate with the hostusing the NETROM ROM emulator.  It uses the emulator's read-only protocolfor bi-directional communication.It requires that NetROM's udpsrcmode option is on.It is for the 500 series of NetROM boxes.*/#include "vxWorks.h"#include "wdb/wdbLib.h"#include "wdb/wdbCommIfLib.h"#include "wdb/wdbMbufLib.h"#include "drv/wdb/wdbNetromPktDrv.h"#include "netinet/in_systm.h"#include "netinet/in.h"#include "netinet/ip.h"#include "netinet/udp.h"#include "intLib.h"#include "sysLib.h"#include "taskLib.h"#include "private/funcBindP.h"/* some handy macros */#undef  DBG_PUT#define DBG_PUT	if (wdbIsNowTasking() && wdbNetromDebug && _func_printErr) \		     _func_printErr#define RESET_INPUT(pDev) {pDev->bytesRead=UDP_IP_HDR_SIZE-UDPSRC_HDR_SIZE; \		     pDev->inBufFull=FALSE;}#define IP_HDR_SIZE     20#define UDP_HDR_SIZE    8#define UDP_IP_HDR_SIZE IP_HDR_SIZE + UDP_HDR_SIZE#define UDPSRC_HDR_SIZE 6/* forward static declarations */static STATUS wdbNetromPoll	(void *pDev);static STATUS wdbNetromPktTx	(void *pDev, struct mbuf * pMbuf);static STATUS wdbNetromModeSet	(void *pDev, uint_t newMode);/* globals */int wdbNetromPollPri = 200;int wdbNetromDebug = 0;		/* print debug message to the console				 * for all NetROM I/O packets */int wdbNetromTest = 0;		/* print "WDB NetROM communication ready" to				 * NetROM's debug port during initialization.				 * To see this message, you must telnet to				 * the NetROM's debug port:				 *	telnet netromIp 1235				 * Note: VxWorks initialization will halt				 * until you have connected to the debug port!				 * If you don't see this message, then the				 * NetROM connection is no good.				 *//* statics */static int wdbNetromLock;#include "wdb/amc500/dptarget.c"/******************************************************************************** wdbNetromPollTask - fake an input ISR when a packet arrives*/ static void wdbNetromPollTask    (    void *	pDev,    int		pollDelay    )    {    for (;;)	{	taskDelay (pollDelay);	wdbNetromPoll (pDev);	}    }/******************************************************************************** wdbNetromPktDevInit - initialize a NETROM packet device for the WDB agent** This routine initializes a NETROM packet device.  It is typically* called from usrWdb.c when the WDB agents NETROM communication path* is selected.* The <dpBase> parameter is the address of NetROM's dualport RAM.* The <width> parameter is the width of a word in ROM space, and can be* 1, 2, or 4 to select 8-bit, 16-bit, or 32-bit width* respectivly (use the macro WDB_NETROM_WIDTH in configAll.h* for this parameter).* The <index> parameter refers to which byte of the ROM contains pod zero.* The <numAccess> parameter should be set to the number of accesses to POD* zero that are required to read a byte. It is typically one, but some boards* actually read a word at a time.* This routine spawns a task which polls the NetROM for incomming* packets every <pollDelay> clock ticks.** RETURNS: N/A*/ void wdbNetromPktDevInit    (    WDB_NETROM_PKT_DEV *pPktDev,	/* packet device to initialize */    caddr_t 	dpBase,			/* address of dualport memory */    int		width,			/* number of bytes in a ROM word */    int		index,			/* pod zero's index in a ROM word */    int		numAccess,		/* to pod zero per byte read */    void	(*stackRcv)(),		/* callback when packet arrives */    int		pollDelay		/* poll task delay */    )    {    pPktDev->wdbDrvIf.mode      = WDB_COMM_MODE_POLL | WDB_COMM_MODE_INT;    pPktDev->wdbDrvIf.mtu       = NETROM_MTU;    pPktDev->wdbDrvIf.stackRcv  = stackRcv;    pPktDev->wdbDrvIf.devId     = (void *)pPktDev;    pPktDev->wdbDrvIf.pollRtn   = wdbNetromPoll;    pPktDev->wdbDrvIf.pktTxRtn  = wdbNetromPktTx;    pPktDev->wdbDrvIf.modeSetRtn = wdbNetromModeSet;    RESET_INPUT (pPktDev);    DBG_PUT ("calling nr_ConfigDP with dpBase = 0x%x, width = %d,index = %d\n",	 dpBase, width, index);    if (nr_ConfigDP ((int)dpBase, width, index) != OK)	{	DBG_PUT ("nr_ConfigDP failed\n");	return;	}    DBG_PUT ("calling nr_SetBlockIO\n");    if (nr_SetBlockIO (0, 0) != OK)	{	DBG_PUT ("nr_SetBlockIO failed\n");	return;	}    DBG_PUT ("calling nr_Resync(0)\n");    if (nr_Resync(0) != OK)	{	DBG_PUT ("nr_Resync(0) failed\n");	return;	}    if (wdbNetromTest)	{	char * msg = "\nWDB NetROM communication ready\n";	DBG_PUT ("calling nr_PutMsg\n");	nr_PutMsg (0, msg, strlen(msg));	}    DBG_PUT ("spawning tNetromPoll\n");    if (taskIdCurrent && (pollDelay != -1))	taskSpawn ("tNetromPoll", wdbNetromPollPri, 0, 5000,		(int (*)()) wdbNetromPollTask,		(int)pPktDev, pollDelay,0,0,0,0,0,0,0,0);    }/******************************************************************************** wdbNetromPktFree -*/ static void wdbNetromPktFree    (    WDB_NETROM_PKT_DEV *	pDev    )    {    RESET_INPUT (pDev);    }/******************************************************************************** wdbNetromPoll - poll device for data** NOMANUAL*/ STATUS wdbNetromPoll    (    void *	devId    )    {    WDB_NETROM_PKT_DEV * pDev = (WDB_NETROM_PKT_DEV *)devId;    struct mbuf * 	pMbuf;    short	  	numBytes;    struct udphdr *     pUdpHdr;    struct ip *         pIpHdr;    char *		pUdpsrcHdr;    if (pDev->inBufFull)	{	DBG_PUT ("netrom: multiple packets recieved - dropping last packet\n");	return (ERROR);	}    switch (nr_GetMsg(0, pDev->inBuf + pDev->bytesRead,		NETROM_MTU - pDev->bytesRead, &numBytes))	{	case GM_NODATA:	    return (ERROR);	case GM_MSGCOMPLETE:	    pDev->bytesRead += numBytes;	    /* convert the NETROM udpsrcmode header into a UDP/IP header */	    pUdpsrcHdr = (char *)pDev->inBuf + UDP_IP_HDR_SIZE					- UDPSRC_HDR_SIZE;	    pIpHdr = (struct ip *)pDev->inBuf;	    pUdpHdr = (struct udphdr *)((int)pIpHdr + IP_HDR_SIZE);	    bcopy (pUdpsrcHdr, (char *)&pIpHdr->ip_src, 4);	    pUdpHdr->uh_sport = *(short *)(pUdpsrcHdr + 4);	    pIpHdr->ip_p = IPPROTO_UDP;	    pUdpHdr->uh_dport = htons(WDBPORT);	    DBG_PUT ("nr_GetMsg: %d byte packet from IP 0x%x port 0x%x\n",			pDev->bytesRead, pIpHdr->ip_src, pUdpHdr->uh_sport);	    pMbuf = wdbMbufAlloc();	    if (pMbuf == NULL)		{		return (ERROR);		}	    wdbMbufClusterInit (pMbuf, pDev->inBuf, pDev->bytesRead,				(int (*)())wdbNetromPktFree, (int)pDev);	    pDev->inBufFull = TRUE;	    (*pDev->wdbDrvIf.stackRcv) (pMbuf);	    return (OK);	case GM_NOTDONE:	    DBG_PUT ("nr_GetMsg: partial read\n");	    pDev->bytesRead += numBytes;	    return (OK);	case GM_MSGOVERFLOW:	    DBG_PUT ("nr_GetMsg: input buffer overflow ignored\n");	    RESET_INPUT (pDev);	    return (ERROR);	default:	    DBG_PUT ("nr_GetMsg: unknown return value\n");	    RESET_INPUT (pDev);	    return (ERROR);	}    return (OK);    }/******************************************************************************** wdbNetromModeSet - set device mode*/ static STATUS wdbNetromModeSet    (    void *	pDev,    uint_t	newMode    )    {    WDB_NETROM_PKT_DEV * pPktDev = (WDB_NETROM_PKT_DEV *)pDev;    RESET_INPUT(pPktDev);    return (OK);    }/******************************************************************************** wdbNetromPktTx - transmit a packet*/ static STATUS wdbNetromPktTx    (    void *pDev,    struct mbuf * pMbuf    )    {    struct udphdr *     pUdpHdr;    struct ip *         pIpHdr;    struct mbuf *       pFirstMbuf = pMbuf;    char		data [NETROM_MTU];    int			len = 0;    /* convert the UDP/IP header into a NETROM udpsrcmode header */    /* XXX - assume UDP/IP header is in first mbuf */    pIpHdr = mtod (pMbuf, struct ip *);    pUdpHdr = (struct udphdr *)((int)pIpHdr + IP_HDR_SIZE);    bcopy ((char *)&pIpHdr->ip_dst, &data[0], 4);    bcopy ((char *)&pUdpHdr->uh_dport, &data[4], 2);    len = 6;    pMbuf = pMbuf->m_next;    while (pMbuf != NULL)        {	if (len + pMbuf->m_len > NETROM_MTU)	    break;        bcopy (mtod (pMbuf, char *), &data[len], pMbuf->m_len);        len += pMbuf->m_len;        pMbuf = pMbuf->m_next;        }    wdbMbufChainFree (pFirstMbuf);    DBG_PUT ("packet to IP 0x%x port 0x%x\n", pIpHdr->ip_dst,		pUdpHdr->uh_dport);    nr_PutMsg (0, data, len);    return (OK);    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产欧美另类丝袜| 日韩欧美成人午夜| 在线一区二区视频| 欧美色区777第一页| av一二三不卡影片| 色天使色偷偷av一区二区| 欧美午夜一区二区三区免费大片| 91.麻豆视频| 欧美精品一区二区三区视频| 久久久精品国产免大香伊| 国产精品美女久久久久av爽李琼| 亚洲精品欧美二区三区中文字幕| 亚洲国产精品久久人人爱蜜臀| 日韩国产欧美在线播放| 国产精品一级二级三级| 91美女精品福利| 欧美美女网站色| 久久午夜色播影院免费高清| 久久免费精品国产久精品久久久久| 中文在线一区二区| 亚洲电影在线播放| 日韩精品一二三四| 成人看片黄a免费看在线| 成人一区二区三区视频在线观看| 一本到不卡精品视频在线观看 | 日本精品一级二级| 69久久99精品久久久久婷婷| 久久免费午夜影院| 亚洲成人自拍偷拍| 日韩黄色一级片| 国产99久久久国产精品潘金 | 精品国产露脸精彩对白| 中文字幕巨乱亚洲| 夜夜精品视频一区二区| 久久福利视频一区二区| 99精品在线观看视频| 欧美日韩成人一区二区| 日本一区二区三区国色天香| 亚洲图片欧美综合| 精品一区二区在线视频| 色香蕉久久蜜桃| 国产亚洲综合av| 亚洲一区二区三区在线播放| 国产成人综合网| 国产成a人无v码亚洲福利| 自拍偷自拍亚洲精品播放| 欧美日韩高清在线| 99精品久久久久久| 在线观看精品一区| 色一情一伦一子一伦一区| 欧美xfplay| 成人午夜视频在线观看| 中文字幕色av一区二区三区| 精品在线亚洲视频| 一本到不卡免费一区二区| 久久精品亚洲一区二区三区浴池| 国产成人免费av在线| 亚洲福利视频导航| 美国三级日本三级久久99| 国产精品福利影院| 久久久国际精品| 久久精品在线免费观看| 国产欧美日韩亚州综合| 欧美国产日韩亚洲一区| 久久久久88色偷偷免费| 欧美成人a在线| 久久美女艺术照精彩视频福利播放| 久久综合九色欧美综合狠狠| 6080日韩午夜伦伦午夜伦| 国产精品一区二区久久精品爱涩| 中文字幕二三区不卡| 在线观看成人小视频| 国产成人小视频| 亚洲综合色自拍一区| 国产欧美一区二区在线观看| 91麻豆精品国产91久久久使用方法 | 亚洲不卡av一区二区三区| 成人理论电影网| 国产精品免费人成网站| 成人一区二区三区在线观看 | 91网页版在线| 亚洲色欲色欲www在线观看| 99久久精品国产精品久久| 国产精品久久久久久久岛一牛影视 | 精品视频一区二区不卡| 亚洲国产一区二区三区青草影视 | 偷拍亚洲欧洲综合| 欧美疯狂做受xxxx富婆| 喷水一区二区三区| 日韩精品资源二区在线| 国产又黄又大久久| 国产精品激情偷乱一区二区∴| 成人久久视频在线观看| 亚洲免费观看高清完整版在线 | 天堂va蜜桃一区二区三区漫画版| 欧美日韩的一区二区| 理论片日本一区| 久久久久高清精品| 91香蕉视频黄| 天天影视涩香欲综合网| 日韩视频在线永久播放| 国产成人精品亚洲日本在线桃色| 国产精品久久久久久久浪潮网站| 在线观看一区日韩| 美女脱光内衣内裤视频久久网站| 久久久久亚洲蜜桃| 色欧美日韩亚洲| 麻豆精品新av中文字幕| 国产精品丝袜久久久久久app| 欧美中文字幕一区| 久久精品国产亚洲高清剧情介绍| 中文无字幕一区二区三区| 色综合久久久久| 久久福利资源站| 亚洲欧美另类久久久精品| 欧美高清视频www夜色资源网| 国产综合一区二区| 亚洲精品欧美综合四区| 精品国产一区二区精华| 色悠悠久久综合| 精品亚洲成a人在线观看 | 欧美日韩欧美一区二区| 经典一区二区三区| 亚洲自拍偷拍av| 欧美成人bangbros| 色婷婷av一区二区三区大白胸| 久久66热re国产| 一区二区三区欧美| 久久久亚洲综合| 在线日韩一区二区| 丁香亚洲综合激情啪啪综合| 亚洲成年人网站在线观看| 国产日韩精品一区二区三区| 欧美二区乱c少妇| jlzzjlzz欧美大全| 丝袜亚洲另类丝袜在线| 中文字幕亚洲精品在线观看 | 国产一区二区三区免费播放| 亚洲综合色成人| 国产拍揄自揄精品视频麻豆| 欧美一区二区三区视频在线| 色婷婷综合久久久久中文| 极品少妇xxxx偷拍精品少妇| 亚洲最大成人综合| 国产精品嫩草99a| 欧美精品一区二区三区蜜桃| 欧美网站大全在线观看| 成人毛片在线观看| 国产一区二区免费看| 日韩二区在线观看| 夜夜亚洲天天久久| ㊣最新国产の精品bt伙计久久| 精品国产sm最大网站免费看| 欧美精品123区| 欧美日韩在线亚洲一区蜜芽| av在线不卡电影| 成人网在线播放| 国产老女人精品毛片久久| 人妖欧美一区二区| 性做久久久久久免费观看欧美| 亚洲欧美日韩国产中文在线| 国产精品初高中害羞小美女文 | 91免费在线播放| 成人app在线观看| 风间由美一区二区三区在线观看 | 国产欧美日韩一区二区三区在线观看| 91麻豆精品国产| 欧美高清dvd| 在线成人小视频| 欧美日韩aaaaaa| 欧美影院午夜播放| 91福利国产成人精品照片| 一本大道久久a久久精二百 | 亚洲大型综合色站| 又紧又大又爽精品一区二区| 亚洲色图欧洲色图婷婷| 亚洲欧洲综合另类| 亚洲图片激情小说| 亚洲精品免费在线播放| 一区二区视频在线看| 一区二区高清在线| 亚洲综合清纯丝袜自拍| 一区二区三区欧美亚洲| 亚洲五码中文字幕| 日韩中文字幕区一区有砖一区| 香蕉加勒比综合久久| 天天免费综合色| 久久99精品久久久| 国产一区在线观看麻豆| 国产酒店精品激情| 成人美女视频在线观看| 91社区在线播放| 欧美三级电影网| 91精品国产综合久久久久久久久久 | 亚洲婷婷综合色高清在线| 亚洲欧美在线另类| 一区二区欧美视频| 日本va欧美va瓶| 国产精华液一区二区三区| 成人av一区二区三区|