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

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

?? dptarget.c

?? vxworks的源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
        /* advance the read pointer */        if(bp->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);        }    }    /* extract the character */    ch = (unsigned int) bp->buf[bp->index++];    /* check whether we finished the buffer */    if(bp->index == bp->bufsize) {        /* invalidate the buffer */        bp->index = (-1);    }    return(ch);}/* send a message to netrom */voidchan_putmsg(chan, buf, len)int chan;uChar *buf;register int len;{    register DpChannel *cp = &channels[chan];    register int num_sent = 0;    int size, num_left = len, ovf_size;    volatile uChar dummy;    register uInt16 flags;    while(num_sent < len) {        /* wait for the buffer */        while(1) {            flags = dp_readint(cp->tx + DPM_FLAGS);            if(flags != dp_readint(cp->tx + DPM_FLAGS)) {                /* read failed on the verify, NetROM must be writing */                continue;            }            if((flags & DPMSG_READY) == 0)                 break;#ifdef DUMMY_READ	    dummy = READ_POD(cp, RA_ACK+8 );#endif            YIELD_CPU();         }	/* get the number of bytes to send in DP struct and overflow */	if(num_left >= DP_DATA_SIZE) {	    size = DP_DATA_SIZE;	    if (num_left >= MAX_MSG_SIZE)               	ovf_size = MAX_OVF_MSG_SIZE;	    else               	ovf_size = num_left - DP_DATA_SIZE;	} else {	    size = num_left;            ovf_size = 0;	}	/* fill the currently available DP buffer */	/* Put full msg size in upper bits of first size field */	if (num_sent == 0) { 	    dp_writeint(cp->tx + DPM_SIZE, (len << 6) | size);	} else	    dp_writeint(cp->tx + DPM_SIZE, size); 	dp_bwrite(buf, cp->tx + DPM_DATA, size);	/* get the flags to write */	flags = (flags & DPMSG_WRAP) | DPMSG_READY;	if(num_sent == 0) {            flags |= DPMSG_START;	    /* or in 1K bit of msg len */	    flags =  flags | (len & DPMSG_1K_BIT); 	}	num_sent += size;	num_left -= size;	if(num_sent >= len)             flags |= DPMSG_END;	dp_writeint(cp->tx + DPM_FLAGS, flags);	dp_writeint(cp->tx + DPM_FLAGS, flags); /* try writing it twice */	/* notify NetROM that the buffer is ready */	dummy = READ_POD(cp, READADDR_CTLCHAR(cp , RW_MRI));	/* adjust pointers */	buf += size;	/* advance the msg pointer */	if(flags & DPMSG_WRAP) {	    cp->tx    = cp->txbase;	    cp->txovf = cp->txovfbase;	} else {	    cp->tx    += DPM_MSGSIZE;	    cp->txovf += MAX_OVF_MSG_SIZE;	}    }}/* flush the current character-oriented tx channel */voidchan_flushtx(chan)int chan;{    DpChannel *cp = &channels[chan];    BufIo *bp = &cp->txbuf;    volatile uChar dummy;    /* if we don't own the message or there's nothing in it, just return */    bp->flags = dp_readint(cp->tx + DPM_FLAGS);    if((bp->flags & DPMSG_READY) != 0 || bp->index == 0) {        return;    }    /* send the buffer */    dp_writeint(cp->tx + DPM_SIZE, (uInt16)bp->bufsize);    dp_bwrite(bp->buf, cp->tx + DPM_DATA, (int) bp->bufsize);    bp->flags &= DPMSG_WRAP;    dp_writeint(cp->tx + DPM_FLAGS,        (uInt16)bp->flags | (DPMSG_READY|DPMSG_START|DPMSG_END));    /* notify NetROM that the buffer is ready */    dummy = READ_POD(cp, READADDR_CTLCHAR(cp, RW_MRI));    /* advance the msg pointer */    if(bp->flags & DPMSG_WRAP) {        cp->tx = cp->txbase;    } else {        cp->tx += DPM_MSGSIZE;    }    /* clear the buffer structure */    bp->index = 0;    bp->bufsize = 0;}intchan_putch(chan, ch)int chan;uChar ch;/*	Write a character into the transmit area of the readwrite	channel.*/{    DpChannel *cp = &channels[chan];    BufIo *bp = &cp->txbuf;    /* if the current tx channel is owned by the target, wait for it */    bp->flags = dp_readint(cp->tx + DPM_FLAGS);    if(bp->flags & DPMSG_READY) {        /* wait for the buffer */        while(1) {            bp->flags = dp_readint(cp->tx + DPM_FLAGS);            if(bp->flags != dp_readint(cp->tx + DPM_FLAGS)) {                /* read failed on the verify, NetROM must be writing */                continue;            }            if((bp->flags & DPMSG_READY) == 0) break;            if(cp->chanflags & CF_NOWAITIO) return(-1);            YIELD_CPU();        }        /* initialize the buffer structure */        bp->index = 0;        bp->bufsize = 0;    }    /* write the character into the buffer */    bp->buf[bp->index++] = ch;    bp->bufsize++;    /* if the buffer is full, send it */    if(bp->index == DP_DATA_SIZE) {        chan_flushtx(chan);    }    return(1);}#endif /* USE_MSGS */#endif	/* READWRITE_TARGET */#ifndef RAWRITES_ONLY/* check if a character is waiting at the channel */intchan_kbhit(chan)int chan;{    DpChannel *cp = &channels[chan];    BufIo *bp = &cp->rxbuf;    int retval;    /* see if there is a character in this buffer */    if(bp->index < 0) {        /* poll for new buffers */	if(cp->chanflags & CF_TXVALID)        	c_dpcons_hdlr(chan,RW_MSGBASE);	else        	c_dpcons_hdlr(chan,RA_MSGBASE);        /* no, check for a new buffer arriving */        if(cp->rx != (-1)) {            retval = 1;        } else {            retval = 0;        }    } else {        retval = 1;    }    return(retval);}#endif	/* ! RAWRITES_ONLY *//* returns 1 if the "active" byte for a particular channel's transmit * and/or receive paths are set, returns 0 otherwise */intdp_chanready(chan)int chan;{    DpChannel *cp = &channels[chan];    uChar val;    if(cp->chanflags & CF_TXVALID) {        /* check that the rx channel is active */        val = READ_POD(cp, RW_RX);        if(val != READ_POD(cp, RW_RX)) {            return(0);        } else if(val != 1) {            return(0);        }        /* check that the tx channel is active */        val = READ_POD(cp, RW_TX);        if(val != READ_POD(cp, RW_TX)){            return(0);        } else if(val != 1) {            return(0);        }    } else {        /* check that the NetROM is ready for interrupts */        val = READ_POD(cp, RA_RI);        if(val != 1 || val != READ_POD(cp, RA_RI)) {            /* NetROM is not receiving */            return(0);        }    }    /* NetROM is ready */    return(1);}#ifndef RAWRITES_ONLY/* if the CF_NOWAITIO bit is set in a channel's flags, the channel's get * and put character methods, will return immediately if there are no * available message structures in dualport ram.  This routine sets or * clears that bit. */voidset_dp_blockio(chan, val)int chan, val;{    DpChannel *cp = &channels[chan];    if(val == 0) {        cp->chanflags |= CF_NOWAITIO;    } else {        cp->chanflags &= ~CF_NOWAITIO;    }}/* This routine handles any messages received from NetROM. */STATIC void c_dpcons_hdlr(chan,base)int chan;uInt32 base;{    register DpChannel *cp;    register uInt16 flags;    /* volatile uChar dummy; */    /* get a pointer to the channel */    cp = &channels[0];    /* a received message indicator */    while(cp->rx != cp->rxlim) {        flags = dp_readint(cp->rxlim + DPM_FLAGS);        if(flags != dp_readint(cp->rxlim + DPM_FLAGS)) {                /* NetROM must be writing, try again */                continue;        }        if(flags & DPMSG_READY) {            /* a new message is ready */            if(cp->rx == (-1)) {                /* record that the message is ready to be read */                cp->rx = cp->rxlim;            }            /* advance the read limit pointer */            if(flags & DPMSG_WRAP) {                cp->rxlim = cp->rxbase;            } else {                cp->rxlim += DPM_MSGSIZE;            }	    /* process one message at a time if using readaddr protocol */	    if((cp->chanflags & CF_TXVALID) == 0) {		break;	    }        } else {            /* no more messages */            break;        }    }}#endif	/* ! RAWRITES_ONLY *//* configure the dual-port ram to be used in a read-only or a read-write * fashion. */intconfig_dpram(base, width, index, flags, numaccesses)uInt32 base;int width, index, flags, numaccesses;{    DpChannel *cp = &channels[0];    /* set the address of dualport ram in pod 0 */    cp->dpbase = base;    cp->width = width;    cp->index = index;    /* initialize the buffer system */    cp->txbuf.bufsize = 0;    cp->txbuf.index = 0;    cp->rxbuf.bufsize = 0;    cp->rxbuf.index = (-1);    cp->numaccess = numaccesses;    /* initialize the ack counter */    cp->rxackval = 0;    /* use the flags to set up */    switch(flags) {#ifdef READONLY_TARGET    case DPF_READONLY_TGT:        /* we can only read dualport */        cp->chanflags = CF_RXVALID | CF_NOWAITIO;        /* start the receive area after the read-address area, and the         * status/control area */        cp->rxbase = cp->rxlim = RA_MSGBASE;        cp->rx = (-1);	/* to avoid runtime divides, make this a case stmt */	switch(cp->numaccess) {	  case 4:	    cp->oobthresh = (READADDR_SIZE / 4) - RA_MAX_INDEX;	    break;	  case 2:	    cp->oobthresh = (READADDR_SIZE / 2) - RA_MAX_INDEX;	    break;	  case 1:	  default:	    cp->oobthresh = (READADDR_SIZE / 1) - RA_MAX_INDEX;	    break;	}	/* Original code with the divide	cp->oobthresh = (READADDR_SIZE / cp->numaccess) - RA_MAX_INDEX; */        /* all done */        break;#endif	/* READONLY_TARGET */#ifdef READWRITE_TARGET    case DPF_ONECHANNEL:        /* we can both read and write dualport */        cp->chanflags = CF_TXVALID | CF_RXVALID | CF_NOWAITIO;        /* start the receive area after the status/control area */        cp->rxbase = cp->rxlim = RW_MSGBASE;        cp->rx = (-1);        /* start the transmit area after the receive area */        cp->txbase = cp->tx = (RW_REC_MSGS + 1) * DPM_MSGSIZE;	cp->oobthresh = 0;        /* all done */        break;#endif	/* READWRITE_TARGET */        default:        return(-1);        break;    }    return(0);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频中文一区二区三区在线观看| 亚洲成人免费av| 一区二区国产视频| 国产麻豆精品在线观看| 欧美久久久久久久久中文字幕| 91在线无精精品入口| 国产成人在线观看免费网站| 国产高清在线精品| 色综合久久九月婷婷色综合| 欧美色老头old∨ideo| 欧美一区二区三区思思人| 国产午夜精品一区二区三区视频 | 一色桃子久久精品亚洲| 亚洲一区二区在线播放相泽| 狠狠色丁香久久婷婷综合_中| www.久久久久久久久| 欧美男同性恋视频网站| 国产日产精品一区| 丝袜诱惑制服诱惑色一区在线观看| 精品一区二区三区久久久| 高清在线不卡av| 精品奇米国产一区二区三区| 亚洲永久精品国产| 色欧美片视频在线观看| 国产欧美日韩麻豆91| 久久99热狠狠色一区二区| 欧美色图片你懂的| 亚洲激情网站免费观看| 成人精品一区二区三区中文字幕| 久久97超碰色| www欧美成人18+| 美脚の诱脚舐め脚责91| 欧美一区二区三区系列电影| 亚洲成人激情av| 欧美性xxxxxx少妇| 午夜视频久久久久久| 欧美性受极品xxxx喷水| 亚洲18色成人| 在线综合+亚洲+欧美中文字幕| 亚洲高清免费观看| 日韩视频免费观看高清完整版在线观看 | 亚洲视频一区二区在线| 91日韩在线专区| 亚洲成a天堂v人片| 制服丝袜av成人在线看| 国内精品免费在线观看| 国产色婷婷亚洲99精品小说| 粉嫩av一区二区三区在线播放| 国产精品久久久久久久久搜平片| 成年人国产精品| 性做久久久久久| 久久先锋影音av鲁色资源| 不卡的av网站| 五月婷婷综合网| 亚洲精品一区二区三区福利| 成人av中文字幕| 免费黄网站欧美| 亚洲精品视频一区| 精品国产一区二区亚洲人成毛片| 成人激情图片网| 日韩电影一区二区三区四区| 亚洲精品一区二区三区蜜桃下载| 一本久久精品一区二区| 亚洲精品视频自拍| 亚洲尤物视频在线| 日韩午夜电影av| 色婷婷久久久综合中文字幕| 亚洲欧美激情一区二区| 欧美久久免费观看| 日韩精品久久理论片| 国产aⅴ综合色| 欧美国产精品中文字幕| 国产精品18久久久久久久网站| 色综合色狠狠综合色| 国产日韩欧美在线一区| 美女视频一区二区三区| 欧美另类久久久品| 亚洲一本大道在线| 一本到不卡精品视频在线观看| 麻豆成人av在线| 久久精品一区二区三区不卡牛牛| 高清在线观看日韩| 亚洲乱码国产乱码精品精98午夜 | 国产黄人亚洲片| 国产九九视频一区二区三区| 久久精品国产精品亚洲红杏| 捆绑变态av一区二区三区| 日韩精品乱码免费| 久久精品国产99国产| 激情五月婷婷综合网| 九色综合国产一区二区三区| 国产一区二区视频在线| 国产成人亚洲综合色影视| 国产suv精品一区二区6| 色综合视频在线观看| 在线视频一区二区三区| 欧美日韩黄色一区二区| 日韩一区二区三区免费看| 日韩欧美国产麻豆| 欧美激情一区二区三区在线| 国产精品日韩成人| 亚洲最大成人网4388xx| 日韩在线观看一区二区| 精品一区二区久久| 国产一区二区三区在线观看免费| 成人免费观看av| 色爱区综合激月婷婷| 日韩女同互慰一区二区| 国产精品美女久久久久高潮| 亚洲免费av高清| 蜜臀精品久久久久久蜜臀 | 国产亚洲欧洲一区高清在线观看| 日韩美女视频19| 免费一级欧美片在线观看| 国产传媒欧美日韩成人| 欧美视频一区二| 精品日产卡一卡二卡麻豆| 亚洲免费观看高清完整版在线观看| 欧美aa在线视频| 成人国产在线观看| 制服丝袜日韩国产| 综合色中文字幕| 亚洲午夜一区二区三区| 国产精品一区二区在线观看网站 | 国产午夜精品一区二区| 一区二区三区四区在线| 激情另类小说区图片区视频区| 95精品视频在线| 日韩欧美激情在线| 亚洲一级片在线观看| 国产91精品一区二区| 欧美一区二区三区在线看| 亚洲同性同志一二三专区| 久久99热狠狠色一区二区| 欧美综合一区二区三区| 国产欧美精品一区aⅴ影院 | 久久亚洲综合av| 亚洲成人午夜影院| 91免费精品国自产拍在线不卡| 精品欧美一区二区在线观看| 亚洲一区二区欧美日韩 | 岛国一区二区在线观看| 91精品婷婷国产综合久久| 亚洲色欲色欲www在线观看| 国产一区二区三区在线观看免费视频| 欧美吞精做爰啪啪高潮| 亚洲欧美偷拍三级| 国产69精品久久久久毛片| 精品国产乱子伦一区| 亚洲成av人片一区二区| 一本色道亚洲精品aⅴ| 国产亚洲一区二区在线观看| 美女国产一区二区三区| 欧美日韩aaa| 夜夜爽夜夜爽精品视频| 91小视频在线免费看| 国产精品蜜臀在线观看| 丰满白嫩尤物一区二区| 久久久久久黄色| 国产一区欧美二区| 日韩欧美中文字幕制服| 丝袜亚洲另类欧美| 欧美日本精品一区二区三区| 亚洲一区影音先锋| 欧美伊人精品成人久久综合97| 亚洲欧美精品午睡沙发| 一本大道久久a久久综合| 亚洲免费视频中文字幕| 色婷婷国产精品久久包臀| 亚洲激情一二三区| 在线观看视频一区| 亚洲一区二区三区四区五区中文 | 美女在线视频一区| 欧美成人三级电影在线| 麻豆高清免费国产一区| 2020国产精品久久精品美国| 国产麻豆精品95视频| 国产日韩欧美综合一区| 成人av在线播放网址| 亚洲欧美日韩在线| 欧美午夜精品电影| 天涯成人国产亚洲精品一区av| 日韩一级黄色片| 国产一区二区精品久久| 欧美国产欧美综合| 色婷婷久久久久swag精品| 午夜av电影一区| 久久综合久久综合九色| 成人精品小蝌蚪| 一区二区在线观看av| 欧美精品久久99久久在免费线| 蜜臀va亚洲va欧美va天堂| 国产欧美日韩另类视频免费观看| 99免费精品在线观看| 亚洲一区中文日韩| 精品国产网站在线观看| 东方aⅴ免费观看久久av| 樱花草国产18久久久久| 91精品国产91久久久久久一区二区 | 国产精品久久久爽爽爽麻豆色哟哟|