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

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

?? cm_bdy5.c

?? 中國石油二期加油站IC系統后臺通訊軟件
?? C
字號:

/********************************************************************20**

     Name:     common functions - 5

     Type:     C source file

     Desc:     C source code for common timer routines;

     File:     cm_bdy5.c

     Sid:      cm_bdy5.c 1.13  -  10/14/98 14:29:44

     Prg:      na

*********************************************************************21*/


/* header include files -- defines (.h) */
#include "envopt.h"        /* environment options */
#include "envdep.h"        /* environment dependent */
#include "envind.h"        /* environment independent */

#include "gen.h"           /* general */
#include "cm5.h"           /* common functions */
#include "ssi.h"           /* system services */

/* header/extern include files (.x) */

#include "gen.x"           /* general */
#include "cm5.x"           /* common functions */
#include "ssi.x"           /* system services */

/* local defines */

/* local externs */

/* forward references */

/* functions in other modules */


/*
*
*       Fun:   cmPrcTmr
*
*       Desc:  Handle a timer entry
*
*       Ret:   RETVOID
*
*       Notes: Connection Oriented Control
*
*       File:  cm_bdy5.c
*
*/

#ifdef ANSI
PUBLIC Void cmPrcTmr
(
CmTqCp *tqCp,          /* timing que control point */
CmTqType *tq,          /* timing queue */
PFV func               /* function */
)
#else
PUBLIC Void cmPrcTmr(tqCp, tq, func)
CmTqCp *tqCp;          /* connection control block */
CmTqType *tq;          /* message buffer */
PFV func;              /* function */
#endif
{
    U16 expire;
    U16 entry;
    S16 event;
    PTR cb;
    CmTimer *tmp1;
    CmTimer **tmp2;

    TRC2(cmPrcTmr)

#ifdef CMDBG
    {
        DateTime dt;
        Txt prntBuf[PRNTSZE];

        SGetDateTime(&dt);
        sprintf(prntBuf,"%s: date: %02d/%02d/%02d time: %02d:%02d:%02d\n",
                msArgv[0],dt.month,dt.day,dt.year,dt.hour,dt.min,dt.sec);
        SPrint(prntBuf);
    }
#endif

    ++tqCp->nxtEnt;
    expire = tqCp->nxtEnt;
    entry = (U16) (expire % (U16)(tqCp->tmrLen));

    tmp2 = &tq[entry].first;
    while ((tmp1 = *tmp2) != NULLP)
    {
        if (tmp1->tqExpire == expire)
        {
            event = tmp1->tmrEvnt;
            cb = tmp1->cb;
            /* remove and reset this timer control block */
            (*tmp2) = tmp1->next;
            tmp1->tmrEvnt = TMR_NONE;
            tmp1->tqExpire = 0;
            tmp1->cb = NULLP;
            tmp1->next = NULLP;
            func(cb, event);
        } else
            tmp2 = &tmp1->next;
    }
    RETVOID;
} /* end of cmPrcTmr */


/*
*
*       Fun:   cmInitTimers
*
*       Desc:  initialize timers
*
*       Ret:   RETVOID
*
*       Notes: Connection Oriented Control
*
*       File:  cm_bdy5.c
*
*/
#ifdef ANSI
PUBLIC Void cmInitTimers
(
CmTimer *timers,     /* timer list */
U8 max               /* maximum tmrs */
)
#else
PUBLIC Void cmInitTimers(timers, max)
CmTimer *timers;     /* timer list */
U8 max;              /* maximum tmrs */
#endif
{
    CmTimer *tPtr;
    REG1 U8 i;

    TRC2(cmInitTimers)

    for (i = 0, tPtr = timers; i < max; i++, tPtr++)
    {
        tPtr->tmrEvnt = TMR_NONE;
        tPtr->tqExpire = 0;
        tPtr->cb = 0;
        tPtr->next = (struct cmTimer *)NULLP;
    }
    RETVOID;
} /* end of cmInitTimers */

/*
*
*       Fun:    cmPlcCbTq
*
*       Desc:   Places Control Block on Timing Queue
*
*       Ret:    RETVOID
*
*       Notes:  None
*
*       File:   cm_bdy5.c
*
*/

#ifdef ANSI
PUBLIC Void cmPlcCbTq
(
CmTmrArg *arg
)
#else
PUBLIC Void cmPlcCbTq(arg)
CmTmrArg *arg;
#endif
{
    REG1 U8 tmrNum;
    U16 ent;
    U16 expire;
    CmTimer **tmp;

    TRC2(cmPlcCbTq)

    expire = (arg->tqCp->nxtEnt + arg->wait);
    ent = (U16)(expire % (U16)(arg->tqCp->tmrLen));

    for (tmrNum = 0; tmrNum < arg->max; tmrNum++)
    {
        if (arg->timers[tmrNum].tmrEvnt == TMR_NONE)
        {
            arg->timers[tmrNum].tmrEvnt = arg->evnt;
            arg->timers[tmrNum].tqExpire = expire;
            arg->timers[tmrNum].cb = arg->cb;
            arg->timers[tmrNum].next = NULLP;

            tmp = &(arg->tq[ent].first);
            while (*tmp)
                tmp = &((*tmp)->next);
            *tmp = &arg->timers[tmrNum];

            RETVOID;
        }
    }
    RETVOID;
} /* end of cmPlcCbTq */

/*
*
*       Fun:    cmRmvCbTq
*
*       Desc:   Removes control block from Timing Queue
*
*       Ret:    RETVOID
*
*       Notes:  None
*
*       File:   cm_bdy5.c
*
*/

#ifdef ANSI
PUBLIC Void cmRmvCbTq
(
CmTmrArg *arg
)
#else
PUBLIC Void cmRmvCbTq(arg)
CmTmrArg *arg;
#endif
{
    U16 ent;
    CmTimer *target;
    CmTimer *tmp1;
    CmTimer **tmp2;

    TRC2(cmRmvCbTq)

    target = &arg->timers[arg->tNum];
    if (target->tmrEvnt != TMR_NONE)
    {
        ent = (U16) (target->tqExpire % (U16)(arg->tqCp->tmrLen));
        tmp2 = &arg->tq[ent].first;

        while ((tmp1 = *tmp2) != NULLP)
        {
            if (tmp1 == target)
            {
                /* find the timer control block to be removed */
                (*tmp2) = tmp1->next;
                tmp1->tmrEvnt = TMR_NONE;
                tmp1->tqExpire = 0;
                tmp1->cb = NULLP;
                tmp1->next = NULLP;
                break;
            } else
                /* find the next timer control block */
                tmp2 = &tmp1->next;
        }
    }
    RETVOID;
} /* end of cmRmvCbTq */

/********************************************************************30**
  
         End of file: cm_bdy5.c 1.13  -  10/14/98 14:29:44
   
*********************************************************************31*/


/********************************************************************40**
  
        Notes:
  
*********************************************************************41*/

/********************************************************************50**
 
*********************************************************************51*/


/********************************************************************60**
  
        Revision history:
  
*********************************************************************61*/

/********************************************************************80**
 
  version    pat  init                   description
----------- ----- ----  ------------------------------------------------
1.1          ---  fmg   1. initial release

1.2          ---  fmg   1. fixed inconsistent use of Void/RETVOID
             ---  mc    1. replace (tqCp->tmrLen -1) with (tqCp->tmrLen)
                           when using % operator.
             ---  fmg   2. add ERRCHK to cmPlcCbTq
             ---  fmg   3. add CMDBG to cmPrcTmr

1.3          ---  mc    1. remove lm_pt.h and lm_pt.x include files.
             ---  mc    2. replace ss_pt.? and ss_ms.? with ssi.?.

1.4          ---  mc    1. change the order of include files ssi.[hx] and
                           gen.[hx].
1.5          ---  fmg   1. removed redundant function prototypes

1.6          ---  mc    1. declared event to be S16 in cmPrcTmr.

1.7          ---  rg    1. change cmPlcCbTq to add new timer to the end of
                           the list, to preserve order of expiry of timers.

1.8         ---   aa    1. Removed the checks for parameter inconsistency
                           and hence the SErrors. The caller of such 
                           functions now should ensure that it is not 
                           passing the bad value to the routines. 

1.9         ---   ada   1. In cmPrcTmr the next entry is increamented
                           *++tqCp->nxtEnt* and then used in *expire*

*********************************************************************81*/
/********************************************************************90**
 
     ver       pat    init                  description
------------ -------- ---- ----------------------------------------------
1.10         ---      bbk  1. Changed copyright header date.
  
1.12         ---      ada  1. Corrected file for chksrc utility

1.13         ---      kp   1. Removed include of cm_err.h, not
                              required

*********************************************************************91*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品麻豆欧美日韩ww| 亚洲欧洲制服丝袜| 欧美一级久久久| 国产精品电影院| 一区二区三区四区不卡在线| 极品销魂美女一区二区三区| 国产精品一二三在| 欧美日韩高清一区二区三区| 精品免费视频一区二区| 老司机免费视频一区二区三区| 精品国产乱码久久久久久图片| 国产精品一二三四区| 国产精品传媒入口麻豆| 一本久久a久久免费精品不卡| 一区二区三区四区五区视频在线观看 | 日韩毛片精品高清免费| 成人午夜激情影院| 亚洲欧美另类在线| 欧美美女bb生活片| 久久国产精品一区二区| 国产亚洲欧美在线| 91精品在线麻豆| 免费观看在线综合| 久久久久久免费网| 一本色道综合亚洲| 午夜视频一区在线观看| 精品女同一区二区| 91色视频在线| 免费精品视频在线| 最新热久久免费视频| 制服丝袜日韩国产| 成人午夜又粗又硬又大| 香蕉成人啪国产精品视频综合网| 精品欧美乱码久久久久久1区2区| 99国内精品久久| 美女视频黄免费的久久| 中文av一区二区| 精品日韩av一区二区| 中文一区在线播放| 欧美色综合久久| 国产精品1区2区3区| 一区二区三区在线观看动漫 | 欧美日韩高清不卡| 成人中文字幕合集| 日本欧美一区二区| 亚洲三级在线播放| 26uuu精品一区二区三区四区在线| 99国产精品久| 国产麻豆91精品| 午夜av区久久| 中文字幕视频一区| 亚洲精品一区二区三区影院| 欧美性猛片aaaaaaa做受| 国产成人免费视| 日本欧洲一区二区| 高清视频一区二区| 舔着乳尖日韩一区| 亚洲激情综合网| 中文字幕免费一区| 久久综合久久久久88| 欧美日韩高清影院| 亚洲柠檬福利资源导航| 色呦呦日韩精品| 亚洲男女一区二区三区| 国产高清不卡二三区| 日本一区二区三级电影在线观看| 欧美日高清视频| 91社区在线播放| 成人美女视频在线看| 国产麻豆一精品一av一免费| 日韩高清在线一区| 午夜精品一区在线观看| 亚洲精品欧美在线| 国产精品久久久99| 国产精品美女久久久久久2018| 久久亚洲一区二区三区四区| 欧美一区二区三区免费大片| 欧美日韩国产一二三| 欧美视频完全免费看| 欧美日韩另类一区| 欧美色偷偷大香| 欧美区在线观看| 欧美日韩免费视频| 日韩一级完整毛片| 欧美疯狂做受xxxx富婆| 91国偷自产一区二区三区成为亚洲经典 | 成人午夜在线视频| 成人国产免费视频| 99久久国产免费看| 91精品福利在线| 欧美午夜一区二区三区| 欧美浪妇xxxx高跟鞋交| 欧美高清视频不卡网| 国产精品初高中害羞小美女文| 国产精品私人自拍| 亚洲免费色视频| 亚洲午夜激情av| 日韩成人一级大片| 韩国女主播成人在线观看| 国产高清精品久久久久| 91免费版在线看| 欧美午夜电影网| 欧美一区二区精品| 久久久久久久久99精品| 国产精品黄色在线观看| 亚洲精品亚洲人成人网在线播放| 亚洲一区二区在线视频| 青青草97国产精品免费观看 | 欧美日韩亚洲综合在线 | 亚洲黄色小说网站| 日韩电影免费在线| 国产成人日日夜夜| 91网页版在线| 欧美一区二区成人6969| 国产日韩三级在线| 一区二区三区国产| 久久精品国产亚洲高清剧情介绍| 国产一区欧美二区| 色婷婷久久久久swag精品| 日韩欧美电影在线| 国产精品久久777777| 日韩成人精品在线观看| 国产精品一区一区| 欧美日韩专区在线| 国产午夜精品一区二区三区四区| 一区二区三区日韩欧美精品| 美女任你摸久久| 97成人超碰视| 精品美女在线播放| 亚洲综合av网| 国产成人免费在线视频| 欧美日韩国产美| 中文字幕在线一区免费| 日本中文在线一区| av亚洲精华国产精华精华 | 日本欧美在线观看| 一本到高清视频免费精品| 精品久久一区二区三区| 亚洲综合色成人| 国产成都精品91一区二区三| 欧美视频在线一区二区三区| 欧美激情中文不卡| 久草热8精品视频在线观看| 日本精品一区二区三区高清| 国产性色一区二区| 久久av资源网| 777午夜精品免费视频| 亚洲综合在线第一页| 成人看片黄a免费看在线| 日韩一级片网站| 亚洲综合图片区| 91在线免费播放| 欧美激情艳妇裸体舞| 日本视频一区二区| 欧美日韩国产成人在线91| 亚洲精品国产a久久久久久| 夫妻av一区二区| 久久久久久久久伊人| 国产一区二区三区在线看麻豆| 91精品午夜视频| 日韩国产一区二| 91精品国产综合久久香蕉麻豆| 一区二区三区国产| 91欧美一区二区| 亚洲婷婷综合色高清在线| 成人丝袜视频网| 国产欧美精品国产国产专区| 国产呦精品一区二区三区网站| 精品国产sm最大网站| 另类中文字幕网| 欧美精品一区二区在线观看| 精品一区二区三区在线播放| 日韩一区二区免费在线电影| 日本成人在线视频网站| 日韩亚洲欧美一区二区三区| 蜜臀久久久99精品久久久久久| 91精品国产免费久久综合| 日本大胆欧美人术艺术动态| 欧美一个色资源| 国产最新精品精品你懂的| 国产欧美日韩久久| 成人爽a毛片一区二区免费| 国产精品拍天天在线| 91丨porny丨首页| 一区二区三区免费| 在线电影欧美成精品| 久久超碰97人人做人人爱| 国产亚洲一区二区三区在线观看| 岛国av在线一区| 亚洲精品美腿丝袜| 欧美日韩色一区| 久草中文综合在线| 国产精品理论片| 色欲综合视频天天天| 日本aⅴ亚洲精品中文乱码| 久久久久久久久伊人| 色悠悠亚洲一区二区| 蜜臀99久久精品久久久久久软件 | 国产精品国产三级国产普通话99| 91香蕉视频污在线|