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

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

?? diti.c

?? 這是單板上DPRAM的驅(qū)動程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
    /* Check to see if there is still data in a message block that was */
    /* gotten previously. If not get one.                              */
    /*-----------------------------------------------------------------*/
    if (!chancfg->rdmblk)
        {

        /*-------------------------------------------------------------*/
        /* Check to see if the q_receive call should wait if there is  */
        /* nothing in the queue.                                       */
        /* q_receive should not wait if the channel is in non          */
        /* canonical mode and MinChar and MaxTime are both zero.       */
        /*-------------------------------------------------------------*/
        if((!(chancfg->termio.c_lflag & ICANON) &&
            (!chancfg->termio.c_cc[VMIN] &&
            !chancfg->termio.c_cc[VTIME])))
            wait = Q_NOWAIT;
        else
            wait = Q_WAIT;

        /*-------------------------------------------------------------*/
        /* Set the q_receive time out value if the channel is in non   */
        /* canonical mode and MinChar = 0 and MaxTime has value.       */
        /* If the above is not true we will wait forever.              */
        /*-------------------------------------------------------------*/
        if (!(chancfg->termio.c_lflag & ICANON) &&
            (!chancfg->termio.c_cc[VMIN] &&
            chancfg->termio.c_cc[VTIME]))
            {
            wait = Q_WAIT;
            timeout_ticks = (anchor->psosct->kc_ticks2sec/10)
                            * (ULONG)chancfg->termio.c_cc[VTIME];
            }
        else if (!(chancfg->termio.c_lflag & ICANON) &&
            (chancfg->termio.c_cc[VMIN] &&
            chancfg->termio.c_cc[VTIME]))
            {
            /*---------------------------------------------------------*/
            /* Get starting ticks for timed input.                     */
            /*---------------------------------------------------------*/
            if(tm_get(&date, &time, &ticks))

                /*-----------------------------------------------------*/
                /* If call fails set start_ticks to 0 to indicate no   */
                /* timer.                                              */
                /*-----------------------------------------------------*/
                start_ticks = 0;

            else
                {
                start_ticks = ticks;

                /*-----------------------------------------------------*/
                /* Compute vtime in ticks.                             */
                /*-----------------------------------------------------*/
                vtime = (anchor->psosct->kc_ticks2sec/10)
                         * (ULONG)chancfg->termio.c_cc[VTIME];
                }

            if(characters_received)
                {
                /*-----------------------------------------------------*/
                /* At lease one character has been received. The       */
                /* should not wait more then VTIME without receiving   */
                /* a character.                                        */
                /*-----------------------------------------------------*/
                wait = Q_WAIT;
                timeout_ticks = (anchor->psosct->kc_ticks2sec/10)
                                * (ULONG)chancfg->termio.c_cc[VTIME];
                }
            }

        else
            timeout_ticks = 0;

        /*-------------------------------------------------------------*/
        /* Get the next message block off the queue.                   */
        /*-------------------------------------------------------------*/
        error = q_receive(chancfg->rxq_id, wait, timeout_ticks, msg);
        if (error != 0) 
            {
            if(error != ERR_TIMEOUT)
                parms->err = TERM_QUE;
            else
                parms->err = error;

            /*---------------------------------------------------------*/
            /* Free the semaphore which controls access to the device. */
            /*---------------------------------------------------------*/
            parms->out_retval = conio->length - length;
            sm_v(chancfg->rda_id);
            return;
            }

        /*-------------------------------------------------------------*/
        /* Check status. (index 1 of message)                          */
        /*-------------------------------------------------------------*/
        imask = splx(MAX_ILEV);
        chancfg->rqhead = chancfg->rqhead->b_next;
        splx(imask);
        if(msg[1])
            {
            if(msg[1] & SIOCLGFRAME)
                parms->err = TERM_OUTSYNC;
            else if(msg[1] & SIOCFRAMING)
                parms->err = TERM_FRAMING;
            else if(msg[1] & SIOCPARITY)
                parms->err = TERM_PARITY;
            else if(msg[1] & SIOCOVERRUN)
                parms->err = TERM_OVERRUN;
             if(msg[1] & (SIOCLGFRAME | SIOCFRAMING
                         | SIOCPARITY | SIOCOVERRUN))
                {
                parms->out_retval = conio->length - length;
                gs_freemsg((mblk_t *)msg[0]);
                SerialIoctl((Lid)chancfg->lid, SIOCREPLENISH, (void *)0);

                /*-----------------------------------------------------*/
                /* Free the semaphore which controls the device.       */
                /*-----------------------------------------------------*/
                sm_v(chancfg->rda_id);

                return;
                }
            }

        /*-------------------------------------------------------------*/
        /* Save the pointers to the message block (index 0 of message) */
        /* and save status.                                            */
        /*-------------------------------------------------------------*/
        chancfg->rdmblk = (mblk_t *)msg[0];
        chancfg->rdbflg = msg[1];
        }

    mblk = (mblk_t *)chancfg->rdmblk;
    b_flags = chancfg->rdbflg;

    /*-----------------------------------------------------------------*/
    /* Now copy the characters to the callers buffer                   */
    /*-----------------------------------------------------------------*/
    while((mblk->b_rptr < mblk->b_wptr) && (length > 0))
        {
        character = *mblk->b_rptr++;

        if(chancfg->termio.c_iflag & IXON)
            if(character == chancfg->termio.c_cc[VSTART] ||
               character == chancfg->termio.c_cc[VSTOP] )
                continue;

        /*-------------------------------------------------------------*/
        /* Check for in-put processing                                 */
        /*-------------------------------------------------------------*/
        if((c_iflag = chancfg->termio.c_iflag) & IPOST)
            {
            /*---------------------------------------------------------*/
            /* INLCR NL to CR conversion?                              */
            /*---------------------------------------------------------*/
            if(c_iflag & INLCR && character == NL)
                character = CR;
 
            /*---------------------------------------------------------*/
            /* IGNCR (Ignore CR)?                                      */
            /*---------------------------------------------------------*/
            if(c_iflag & IGNCR && character == CR)
                continue;

            /*---------------------------------------------------------*/
            /* ICRNL CR to NL conversion?                              */
            /*---------------------------------------------------------*/
            else if(c_iflag & ICRNL && character == CR)
                character = NL;

            /*---------------------------------------------------------*/
            /* IUCLC Upper to Lower case conversion?                   */
            /*---------------------------------------------------------*/
            else if(c_iflag & IUCLC)
                character = tolower(character);
            }

        /*-------------------------------------------------------------*/
        /* If the channel is in canonical mode and character is an     */
        /* erase character back over last character.                   */
        /*-------------------------------------------------------------*/
        if((chancfg->termio.c_lflag & ICANON) &&
           (character == chancfg->termio.c_cc[VERASE]))
            {
            if (characters_received <= 0)
                continue;

            buffp--;
            characters_received--;

            /*---------------------------------------------------------*/
            /* If ECHO is set then rub out last character on screen.   */
            /*---------------------------------------------------------*/
            if(chancfg->termio.c_lflag & ECHO)
                {
                echo_mblk = chancfg->echo_mblk;

                /*-----------------------------------------------------*/
                /* Back up and rubout last character.                  */
                /*-----------------------------------------------------*/
                *echo_mblk->b_wptr++ = BS;
                *echo_mblk->b_wptr++ = SPACE;
                *echo_mblk->b_wptr++ = BS;

                /*-----------------------------------------------------*/
                /* Send rubout and wait for it to happen.              */
                /* NOTE semaphore released by data conformation        */
                /* function,  term_datacnf.                            */
                /*-----------------------------------------------------*/
                /* Request to write to device, and wait until          */
                /* availability.                                       */
                /*-----------------------------------------------------*/
                if (sm_p(chancfg->wra_id, SM_WAIT, FOREVER))
                    {
                    parms->err = TERM_SEM;
                    return;
                    }

                chancfg->dflags |= WAITING;
                SerialSend((Lid)chancfg->lid, echo_mblk);
                if(parms->out_retval =
                    sm_p(chancfg->txc_id, SM_WAIT, FOREVER))
                    {
                    chancfg->dflags &= ~WAITING;
                    parms->err = TERM_SEM;
                    parms->out_retval = conio->length - length;

                    /*-------------------------------------------------*/
                    /* Restore echo mblock pointer so it can be reused */
                    /*-------------------------------------------------*/
                    echo_mblk->b_wptr = chancfg->echo_rwprt;
                    echo_mblk->b_rptr = chancfg->echo_rwprt;

                    /*-------------------------------------------------*/
                    /* Free the message block if it is empty.          */
                    /*-------------------------------------------------*/
                    if(mblk->b_rptr >= mblk->b_wptr)
                        {
                        gs_freemsg(mblk);
                        chancfg->rdmblk = 0;
                        SerialIoctl((Lid)chancfg->lid, SIOCREPLENISH, (void *)0);
                        }

                    /*-------------------------------------------------*/
                    /* Free the semaphores which control the device.   */
                    /*-------------------------------------------------*/
                    sm_v(chancfg->rda_id);
                    sm_v(chancfg->wra_id);
                    return;
                    }

                chancfg->dflags &= ~WAITING;

                /*-----------------------------------------------------*/
                /* Free write semphore so others can write.            */
                /*-----------------------------------------------------*/
                sm_v(chancfg->wra_id);

                /*-----------------------------------------------------*/
                /* Restore echo mblock pointer so it can be reused.    */
                /*-----------------------------------------------------*/
                echo_mblk->b_wptr = chancfg->echo_rwprt;
                echo_mblk->b_rptr = chancfg->echo_rwprt;

                }
            continue;
            }

        /*-------------------------------------------------------------*/
        /* If ECHO echo the character.                                 */
        /*-------------------------------------------------------------*/
        if((chancfg->termio.c_lflag & ECHO) ||
           ((chancfg->termio.c_lflag & ECHONL) && 
            (character == chancfg->termio.c_cc[VEOL])))
            {
            echo_mblk = chancfg->echo_mblk;
            if((c_oflag = chancfg->termio.c_oflag) & OPOST)

                /*-----------------------------------------------------*/
                /* Out-put needs post processing.                      */
                /*-----------------------------------------------------*/
                opost(&character, echo_mblk, 1, c_oflag);

            else
                *echo_mblk->b_wptr++ = character;

            /*---------------------------------------------------------*/
            /* Send character out and wait for send to complete.       */
            /* NOTE semaphore released by data conformation function,  */
            /* term_datacnf.                                           */
            /*---------------------------------------------------------*/
            /* Request to write to device, and wait until              */
            /* availability.                                           */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久综合精品| 国产精品色一区二区三区| 国产偷v国产偷v亚洲高清| 亚洲午夜久久久久久久久电影网 | av影院午夜一区| 91精品国产免费久久综合| 中文字幕日韩欧美一区二区三区| 蜜臀va亚洲va欧美va天堂| 一道本成人在线| 日本一区二区视频在线观看| 麻豆极品一区二区三区| 91麻豆视频网站| 国产精品视频麻豆| 国产一区二区福利视频| 日韩片之四级片| 天天综合色天天综合色h| 日本黄色一区二区| 国产日韩三级在线| 亚洲高清久久久| 91国偷自产一区二区开放时间 | 91麻豆精品国产91久久久久 | 日韩一区二区在线观看视频| 最新不卡av在线| 国产呦精品一区二区三区网站| 欧美日韩你懂得| 精品电影一区二区| 日韩av一级片| 日韩区在线观看| 免费在线观看一区| 91精品国产综合久久福利软件| 亚洲国产成人高清精品| 日本高清不卡视频| 一区二区免费看| 91国内精品野花午夜精品| 一区二区在线观看av| 91久久线看在观草草青青| 亚洲免费在线观看| 在线精品亚洲一区二区不卡| 亚洲综合久久久久| 欧美日韩国产综合草草| 午夜精品久久久久影视| 91精品国产福利在线观看| 日产国产欧美视频一区精品| 久久综合九色综合欧美98| 国产精品一卡二| **网站欧美大片在线观看| 色婷婷久久久久swag精品 | 一区二区三区免费| 欧美日韩激情一区二区三区| 天堂一区二区在线| 欧美变态tickling挠脚心| 国产在线麻豆精品观看| 日本一区二区高清| 在线一区二区三区四区五区 | 亚洲影视资源网| 欧美一个色资源| 国产福利电影一区二区三区| 亚洲丝袜另类动漫二区| 欧美老人xxxx18| 国产盗摄女厕一区二区三区| 中文字幕永久在线不卡| 欧美日韩国产首页| 黄色精品一二区| 亚洲免费大片在线观看| 欧美一级电影网站| va亚洲va日韩不卡在线观看| 舔着乳尖日韩一区| 国产女主播一区| 欧美影视一区二区三区| 国产在线视频精品一区| 亚洲综合一区在线| 2020国产精品久久精品美国| 色av综合在线| 国产一区欧美一区| 亚洲图片激情小说| 精品国产91洋老外米糕| 欧美乱妇一区二区三区不卡视频| 久久国产精品免费| 亚洲欧美国产三级| 久久久www成人免费毛片麻豆| 成人动漫精品一区二区| 另类小说一区二区三区| 欧美激情在线观看视频免费| 欧美日韩高清不卡| 国产精品1024| 久久精品国产99久久6| 亚洲欧美一区二区视频| 欧美成人a∨高清免费观看| aaa欧美日韩| 国产成人精品一区二| 青青草原综合久久大伊人精品 | 亚洲精品国产品国语在线app| 欧美电影免费观看高清完整版在线| 国产成人免费视频| 久久精品噜噜噜成人av农村| 亚洲一级二级在线| 亚洲欧洲性图库| 国产亚洲精品aa| 久久久蜜臀国产一区二区| 在线播放中文字幕一区| 欧美亚洲禁片免费| 国产精品香蕉一区二区三区| 久久国产三级精品| 日产欧产美韩系列久久99| 亚洲成人www| 一区二区三区四区国产精品| 中文字幕视频一区| 欧美激情综合网| 国产目拍亚洲精品99久久精品| 欧美一级生活片| 91麻豆精品国产91久久久久久 | 免费观看日韩av| 日本中文字幕不卡| 五月天欧美精品| 视频一区二区三区中文字幕| 亚洲综合视频网| 亚洲国产你懂的| 日韩精彩视频在线观看| 青青国产91久久久久久| 韩国三级电影一区二区| 久久电影国产免费久久电影| 日产国产欧美视频一区精品| 日韩福利电影在线观看| 国产综合久久久久影院| 国产精品综合视频| 国产一区二区中文字幕| 丁香婷婷综合五月| 国产成人精品免费| 99国内精品久久| 欧美在线你懂的| 欧美成va人片在线观看| 久久精品亚洲精品国产欧美kt∨| 久久网站热最新地址| 国产精品美女久久久久av爽李琼| 中文字幕日韩精品一区| 亚洲电影第三页| 日韩在线a电影| 国产在线乱码一区二区三区| 国产美女精品人人做人人爽| 国产91精品精华液一区二区三区| 99久久精品国产导航| 欧美精品一卡两卡| 日韩欧美国产精品一区| 国产精品你懂的在线欣赏| 夜夜嗨av一区二区三区网页| 日韩成人av影视| 日本美女视频一区二区| 男男成人高潮片免费网站| 日韩无一区二区| 欧美日韩国产美| 国产三级三级三级精品8ⅰ区| 国产精品久久久久久福利一牛影视 | 亚洲自拍偷拍九九九| 蜜乳av一区二区| 色老头久久综合| 精品三级av在线| 亚洲最新视频在线播放| 激情深爱一区二区| 色妹子一区二区| 久久久国产精华| 日本女优在线视频一区二区| 国产凹凸在线观看一区二区| 欧美精品1区2区3区| 中文av一区二区| 日本午夜精品视频在线观看| 成人精品高清在线| 欧美一二三区在线| 亚洲欧美日韩成人高清在线一区| 久久99精品国产91久久来源| 色天使色偷偷av一区二区| 欧美精品一区二区精品网| 一区二区三区中文免费| 激情综合色播五月| 欧美日韩免费高清一区色橹橹 | 色哟哟国产精品| 久久久久97国产精华液好用吗| 午夜在线成人av| 日本道色综合久久| 亚洲日本中文字幕区| 国产一区二区三区在线观看免费 | 国产精品综合久久| 欧美一级片免费看| 一区二区三区精密机械公司| 成人激情黄色小说| 国产午夜精品理论片a级大结局| 婷婷开心久久网| 欧美日韩在线电影| 一区二区三区中文在线| 91美女片黄在线观看| 中文字幕一区二区在线播放| 国产黄色精品网站| 精品成人在线观看| 琪琪久久久久日韩精品| 欧美视频一区二区在线观看| 亚洲欧洲一区二区三区| 成+人+亚洲+综合天堂| 久久久www免费人成精品| 韩国视频一区二区| 久久综合九色综合97_久久久| 美美哒免费高清在线观看视频一区二区 |