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

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

?? dptarget.c

?? vxworks的源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
    register volatile uChar dummy, expval, val;    register DpChannel *cp = &channels[0];    uChar *srcp;    int tmp;    void (*sendvalp)();    if(emoffonwrite_set == 1) { 	do_emoffonwrite(); 	emoffonwrite_set = 0;    }    /* wait for the NetROM to be ready */    while(1) {        val = READ_POD(cp, RA_RI);        if(val == 1 && val == READ_POD(cp, RA_RI)) {            /* NetROM is receiving */	    cp->rxackval = READ_POD(cp, RA_ACK);	/* AMP */            break;        }    }    /* send the set memory character */    dummy = READ_POD(cp, READADDR_CTLCHAR(cp, RA_SET_INDEX));    /* wait for it to be acked */    expval = ++cp->rxackval;    while(1) {        val = READ_POD(cp, RA_ACK);        if(val == expval && val == READ_POD(cp, RA_ACK)) {            /* got an ack for our last character */            break;        }    }    /* send the offset */    ra_putch((uChar) ((addr >> 24) & 0xFF));    ra_putch((uChar) ((addr >> 16) & 0xFF));    ra_putch((uChar) ((addr >> 8) & 0xFF));    ra_putch((uChar) (addr & 0xFF));    /* copy our sendval routine to ram */    tmp = (uInt32) buf & 0x03;		/* force 32-bit alignment */    if(tmp != 0)  buf += (4 - tmp);    srcp = (uChar *) ra_setmem_sendval;    sendvalp = (void (*)()) buf;    for(tmp = 0; tmp < RA_SETMEM_RTN_SIZE; tmp++) {	*buf = *srcp;	buf++;	srcp++;    }    /* call the sendval routine */    (*sendvalp)(ch);}/* sends a request to NetROM to reset the target      returns 0 if NetROM not ready*/intra_reset(){    register volatile uChar dummy, expval, val;    register DpChannel *cp = &channels[0];    /* check for the NetROM to be ready for interrupts */        val = READ_POD(cp, RA_RI);        if(val == !1 || val != READ_POD(cp, RA_RI)) {            /* NetROM is not receiving */		return(0);	}	cp->rxackval = READ_POD(cp, RA_ACK);        /* AMP */    /* send  the 1st sequence character */    dummy = READ_POD(cp, READADDR_CTLCHAR(cp, RA_RESET));    /* wait for it to be acked */    expval = ++cp->rxackval;    while(1) {        val = READ_POD(cp, RA_ACK);        if(val == expval && val == READ_POD(cp, RA_ACK)) {            /* got an ack for our last character */            break;        }    }    /* send the 2nd sequence char  */    ra_putch((uChar) (0x01));    /* send  the 3rd sequence character */    dummy = READ_POD(cp, READADDR_CTLCHAR(cp, RA_RESET));    /* wait for it to be acked */    expval = ++cp->rxackval;    while(1) {        val = READ_POD(cp, RA_ACK);        if(val == expval && val == READ_POD(cp, RA_ACK)) {            /* got an ack for our last character */            break;        }    }    /* send the 4th sequence char  */    dummy = READ_POD(cp, READADDR_CTLCHAR(cp, RA_RESET));    ra_putch((uChar) (0x02));    /* send  the last sequence character */    dummy = READ_POD(cp, READADDR_CTLCHAR(cp, RA_RESET));    /*  don't wait for it to be acked */    return(1);}/* sends a request to NetROM to re-initalize (resync) the dualport parameters      returns 0 if NetROM not ready, returns 1 when done */intra_resync(){    register volatile uChar dummy, expval, val;    register DpChannel *cp = &channels[0];    /* check for the NetROM to be ready for interrupts */        val = READ_POD(cp, RA_RI);        if(val == !1 || val != READ_POD(cp, RA_RI)) {            /* NetROM is not receiving */		return(0);	}	cp->rxackval = READ_POD(cp, RA_ACK);        /* AMP */    /* send  the 1st sequence character */    dummy = READ_POD(cp, READADDR_CTLCHAR(cp, RA_RESYNC));    /* wait for it to be acked */    expval = ++cp->rxackval;    while(1) {        val = READ_POD(cp, RA_ACK);	dummy = READ_POD(cp, RA_ACK+8);         if(val == expval && val == READ_POD(cp, RA_ACK)) {            /* got an ack for our last character */            break;        }    }    /* send the 2nd sequence char  */    ra_putch((uChar) (0x01));    /* send  the 3rd sequence character */    dummy = READ_POD(cp, READADDR_CTLCHAR(cp, RA_RESYNC));    /* wait for it to be acked */    expval = ++cp->rxackval;    while(1) {        val = READ_POD(cp, RA_ACK);	dummy = READ_POD(cp, RA_ACK+8);        if(val == expval && val == READ_POD(cp, RA_ACK)) {            /* got an ack for our last character */            break;        }    }    /* send the 4th sequence char  */    ra_putch((uChar) (0x02));    /* send  the last sequence character */    dummy = READ_POD(cp, READADDR_CTLCHAR(cp, RA_RESYNC));    /* wait for it to be acked */    expval = ++cp->rxackval;    while(1) {        val = READ_POD(cp, RA_ACK);	dummy = READ_POD(cp, RA_ACK+8);         if(val == expval && val == READ_POD(cp, RA_ACK)) {            /* got an ack for our last character */            break;        }    }    /* Wait for NetROM to turn RA_RI back on before completing,       so that we won't try anything else before NetROM has resynced.        Requires NetROM firmware version 1.3.1 or later. */    while(1) {        val = READ_POD(cp, RA_RI);        if(val == 1 && val == READ_POD(cp, RA_RI)) {            break;        }    }    return(1);}/* acknowledges a receive interrupt       returns 0 if NetROM not ready, returns 1 when done */intra_rx_intr_ack(){    register volatile uChar dummy, expval, val;    register DpChannel *cp = &channels[0];    /* check for the NetROM to be ready for interrupts */        val = READ_POD(cp, RA_RI);        if(val == !1 || val != READ_POD(cp, RA_RI)) {            /* NetROM is not receiving */		return(0);	}	cp->rxackval = READ_POD(cp, RA_ACK);        /* AMP */    /* send  the 1st sequence character */    dummy = READ_POD(cp, READADDR_CTLCHAR(cp, RA_MISC));    /* wait for it to be acked */    expval = ++cp->rxackval;    while(1) {        val = READ_POD(cp, RA_ACK);#ifdef DUMMY_READ	dummy = READ_POD(cp, RA_ACK +8);#endif        if(val == expval && val == READ_POD(cp, RA_ACK)) {            /* got an ack for our last character */            break;        }    }    /* send the 2nd sequence char  */    ra_putch((uChar) (RX_INTR_ACK));    return(1);}/* tells netrom to turn off emulation before writing to memory       returns 0 if NetROM not ready, returns 1 when done */voidra_emoffonwrite(){	emoffonwrite_set=1; 	/* set global so ra_setmem can first call do_emoffonwrite just in case         	debug connection was not connected at the time		of this call */}intdo_emoffonwrite(){    register volatile uChar dummy, expval, val;    register DpChannel *cp = &channels[0];    /* check for the NetROM to be ready for interrupts */        val = READ_POD(cp, RA_RI);        if(val == !1 || val != READ_POD(cp, RA_RI)) {            /* NetROM is not receiving */		return(0);	}	cp->rxackval = READ_POD(cp, RA_ACK);        /* AMP */    /* send  the 1st sequence character */    dummy = READ_POD(cp, READADDR_CTLCHAR(cp, RA_MISC));    /* wait for it to be acked */    expval = ++cp->rxackval;    while(1) {        val = READ_POD(cp, RA_ACK);#ifdef DUMMY_READ	dummy = READ_POD(cp, RA_ACK+8);#endif        if(val == expval && val == READ_POD(cp, RA_ACK)) {            /* got an ack for our last character */            break;        }    }    /* send the 2nd sequence char  */    ra_putch((uChar) (EMOFFONWRITE));    return(1);}#endif	/* READONLY_TARGET */#ifdef READWRITE_TARGET#ifdef USE_MSGS/* this routine reads message from dualport ram.  It returns different * statuses, depending on whether or not message data is present, the message * is complete, the message is not complete but data was present, or * the message overflows the buffer.  The number of bytes read into the  * message buffer is changed by side effect.  *  * This routine doesn't use the buffer pointers in the channel structure.  * Note that GM_NODATA will only be returned if we are not in a blocking I/O * mode. */intchan_getmsg(chan, buf, len, bytesread)int chan;uChar *buf;int len, *bytesread;{    register DpChannel *cp = &channels[0];    int done = 0;    int nbytes = 0;    register uInt16 flags, size;    int msg_len = 0;    /* look for the whole message */    while(done == 0) {        /* wait for the buffer to become valid */        while(cp->rx == (-1)) {            /* poll for new buffers */            c_dpcons_hdlr(chan, RW_MSGBASE);	    /* did we get a message? */	    if(cp->rx == (-1)) {#ifdef VETHER		if((cp->chanflags & CF_NOWAITIO) || (nbytes == 0)) {#else		if(cp->chanflags & CF_NOWAITIO) {#endif		    *bytesread = nbytes;		    return(nbytes == 0 ? GM_NODATA : GM_NOTDONE);		}		YIELD_CPU();	    }        }	/* read the status and size of the new message block */        flags = dp_readint(cp->rx + DPM_FLAGS);        size = dp_readint(cp->rx + DPM_SIZE);#ifdef VETHER	/* get whole msg len from first pkt of msg */	if (nbytes == 0) {	    /* if ((flags & DPMSG_START) == 0)		 printf("no START: %04x ", flags & 0xffff); */	    msg_len = (size >> 6) | (flags & DPMSG_1K_BIT);	    size = size & 0x3f;	}#endif	/* copy data into the buffer */	if(size > len) {	    *bytesread = nbytes;	    return(GM_MSGOVERFLOW);	}        dp_bread(cp->rx + DPM_DATA, buf, (int) size);        /* return the buffer */        dp_writeint(cp->rx + DPM_FLAGS, flags & ~DPMSG_READY);	/* update our buffer pointers */	buf += size;	nbytes += size;	len -= size;        /* advance the read pointer */        if(flags & DPMSG_WRAP) {            cp->rx = cp->rxbase;        } else {            cp->rx += DPM_MSGSIZE;        }        /* see if there are more messages waiting */        if(cp->rx == cp->rxlim) {            cp->rx = (-1);        }	/* was this the end of the message? */	if((flags & DPMSG_END) != 0) done = 1;    }    *bytesread = nbytes;#ifdef VETHER    if (nbytes != msg_len) {	/* printf("chan_getmsg: 1st pkt len=%d, got %d\n", msg_len, nbytes); */	return(GM_NOTDONE);    } else #endif    	return(GM_MSGCOMPLETE);}intchan_getch(chan)int chan;/* This routine attempts to read a character from the receive msg buffers  * of the readwrite channel.  */{    DpChannel *cp = &channels[chan];    BufIo *bp = &cp->rxbuf;    int ch;    /* see if there is a character in this buffer */    if(bp->index < 0) {        /* wait for the buffer to become valid */        while(cp->rx == (-1)) {            /* poll for new buffers */            c_dpcons_hdlr(chan, RW_MSGBASE);	    /* did we get a message? */	    if(cp->rx == (-1)) {		if(cp->chanflags & CF_NOWAITIO) return(-1);		YIELD_CPU();	    }        }        /* make sure that the message is ready by reading the flags byte 	 * of the next receive msg.  */        bp->flags = dp_readint(cp->rx + DPM_FLAGS);	/* Re-read the flags because the NetROM may have been modifying 	 * them while we read them. */        if(bp->flags != dp_readint(cp->rx + DPM_FLAGS)) {            /* read failed on the verify, NetROM must be writing */            bp->flags = dp_readint(cp->rx + DPM_FLAGS);        }        if((bp->flags & DPMSG_READY) == 0) {            return(-1);        }        /* set up the i/o buffer for the message */        bp->bufsize = dp_readint(cp->rx + DPM_SIZE);        if(bp->bufsize > DP_DATA_SIZE) {            bp->bufsize = DP_DATA_SIZE;        }        dp_bread(cp->rx + DPM_DATA, bp->buf, (int) bp->bufsize);        bp->index = 0;        /* return the buffer */        dp_writeint(cp->rx + DPM_FLAGS, (uInt16)bp->flags & ~DPMSG_READY);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品电影一区二区三区 | 色婷婷久久久久swag精品| 91视频免费观看| 4438成人网| 欧美国产精品中文字幕| 亚洲综合色噜噜狠狠| 国产一区二三区好的| 91成人免费在线视频| 欧美成人一区二区| 亚洲精品高清在线观看| 精品影院一区二区久久久| 99re热视频精品| 日韩欧美在线一区二区三区| 成人免费在线播放视频| 免费久久精品视频| 一本到不卡精品视频在线观看| 777奇米四色成人影色区| 国产精品入口麻豆原神| 日韩电影在线看| 99精品视频在线免费观看| 91精品国产丝袜白色高跟鞋| 国产精品网曝门| 日韩精品一二三四| 99re视频精品| 久久精品人人做人人爽人人| 五月天国产精品| 成人动漫精品一区二区| 精品日韩欧美一区二区| 一区二区三区中文字幕| 国产一区二区导航在线播放| 欧美日高清视频| 亚洲精品免费在线| 国产成人综合精品三级| 51精品秘密在线观看| 亚洲自拍偷拍图区| 成av人片一区二区| 国产亚洲欧美激情| 蜜桃精品视频在线观看| 欧美午夜片在线看| 亚洲精品老司机| 国产精品18久久久久| 日韩午夜在线观看视频| 亚洲成在线观看| 日本电影亚洲天堂一区| 国产精品久久久久久久久免费樱桃 | 美国十次综合导航| 欧美三级日韩三级| 亚洲女女做受ⅹxx高潮| 不卡一卡二卡三乱码免费网站| 久久免费电影网| 精品一二三四在线| 911精品产国品一二三产区| 一区二区三区在线观看欧美| av成人免费在线观看| 国产喷白浆一区二区三区| 老司机免费视频一区二区| 欧美一区在线视频| 日韩高清不卡一区二区三区| 欧美理论在线播放| 亚洲午夜久久久| 在线观看国产91| 一区二区三区四区在线| 91成人国产精品| 亚洲一区二区三区自拍| 在线精品视频免费播放| 一区二区三区在线视频播放| 色呦呦一区二区三区| 亚洲欧美另类在线| 色婷婷综合久久久久中文 | 欧美精品一二三四| 婷婷综合五月天| 久久久三级国产网站| 美女视频黄a大片欧美| 日韩视频在线一区二区| 免费观看30秒视频久久| 欧美不卡一区二区三区| 国产在线精品一区在线观看麻豆| 精品黑人一区二区三区久久| 国产一区二区三区日韩| 久久久精品国产免费观看同学| 国产成人综合在线播放| 国产精品久久久久久久浪潮网站| 99这里只有久久精品视频| 亚洲欧美影音先锋| 欧美在线视频日韩| 午夜影视日本亚洲欧洲精品| 91麻豆精品国产91久久久久久| 水蜜桃久久夜色精品一区的特点| 91精品国产综合久久蜜臀| 麻豆国产一区二区| 久久久影视传媒| 成人动漫一区二区三区| 亚洲另类中文字| 精品视频全国免费看| 天堂va蜜桃一区二区三区漫画版| 欧美不卡一区二区| 成人免费高清在线观看| 一区二区激情小说| 欧美一级艳片视频免费观看| 久久91精品久久久久久秒播| 久久精品夜夜夜夜久久| 99久久国产综合色|国产精品| 亚洲亚洲精品在线观看| 精品国产一区久久| 成人免费视频网站在线观看| 亚洲亚洲人成综合网络| 久久蜜桃av一区二区天堂| 91在线视频在线| 午夜精品久久久久久久久久| 日韩午夜av电影| av中文字幕亚洲| 视频一区欧美精品| 亚洲国产精华液网站w| 欧美揉bbbbb揉bbbbb| 麻豆精品国产传媒mv男同| 国产欧美综合在线观看第十页| 色婷婷精品大视频在线蜜桃视频| 日韩国产欧美在线观看| 国产欧美日韩亚州综合| 欧美三级电影在线看| 国产精品中文字幕日韩精品 | 国产一区二区成人久久免费影院| 亚洲激情自拍偷拍| 精品国一区二区三区| 色女孩综合影院| 精品一区二区日韩| 亚洲一区二区在线视频| 日韩你懂的在线观看| 色噜噜狠狠色综合欧洲selulu| 久久99精品久久久久久动态图| 亚洲另类色综合网站| 精品成人a区在线观看| 91网址在线看| 精品亚洲国产成人av制服丝袜| 亚洲激情男女视频| 久久精品欧美日韩| 欧美剧情电影在线观看完整版免费励志电影| 国产一区二区三区四| 三级成人在线视频| 亚洲精品日韩一| 亚洲国产成人在线| 亚洲精品一线二线三线无人区| 日本电影欧美片| eeuss国产一区二区三区| 国内久久婷婷综合| 免费观看久久久4p| 午夜在线成人av| 一区二区三区av电影| 中文字幕不卡在线观看| 2017欧美狠狠色| 在线成人免费观看| 99精品在线观看视频| 国内精品国产成人| 久久99久久久欧美国产| 亚洲成av人片在www色猫咪| 亚洲视频一区二区在线观看| 久久精品欧美一区二区三区不卡| 91麻豆精品国产无毒不卡在线观看| 91黄视频在线观看| 91丝袜呻吟高潮美腿白嫩在线观看| 国产自产2019最新不卡| 免费三级欧美电影| 午夜一区二区三区视频| 亚洲乱码日产精品bd| 中文字幕视频一区| 国产精品免费观看视频| 欧美国产综合色视频| 久久精品欧美一区二区三区不卡| 精品欧美一区二区久久| 日韩欧美在线一区二区三区| 91麻豆精品国产自产在线 | 日本vs亚洲vs韩国一区三区 | 91精品国产综合久久精品| 欧美日韩亚洲国产综合| 欧美日韩在线电影| 欧美视频精品在线观看| 欧美主播一区二区三区| 欧美视频一二三区| 欧美女孩性生活视频| 欧美性色黄大片手机版| 欧美日韩一卡二卡| 欧美美女喷水视频| 欧美精品一卡二卡| 日韩午夜小视频| 久久夜色精品国产噜噜av| 一区二区三区精品在线观看| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲欧美日韩中文字幕一区二区三区| 最新欧美精品一区二区三区| 亚洲同性gay激情无套| 亚洲黄色录像片| 午夜激情一区二区| 美女www一区二区| 国内精品在线播放| 成人性生交大片免费看中文| 成人app网站| 欧美在线看片a免费观看| 欧美日韩国产一级| 日韩一区二区三| 国产欧美一区二区精品性色|