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

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

?? ss_task.c

?? 中國石油二期加油站IC系統后臺通訊軟件
?? C
?? 第 1 頁 / 共 4 頁
字號:
        RETVALUE(RFAILED);
    }

    /* initialize the system task entry lock */
    if (SInitLock(&sTsk->lock, SS_STSKENTRY_LOCK) != ROK)
    {
        ssDestroyDmndQ(&sTsk->dQ);
        SUnlock(&osCp.sTskTblLock);

#if (ERRCLASS & ERRCLS_DEBUG)
        SSLOGERROR(ERRCLS_DEBUG, ESS486, (ErrVal) ret,
                   "Could not initialize system task entry lock");
#endif

        RETVALUE(RFAILED);
    }


    /* we ask the implementation to start this system task */
    ret = ssdCreateSTsk(sTsk);
    if (ret != ROK)
    {
        /* failed, clean up */
        SDestroyLock(&sTsk->lock);
        ssDestroyDmndQ(&sTsk->dQ);
        sTsk->tskPrior = 0;

        SUnlock(&osCp.sTskTblLock);

#if (ERRCLASS & ERRCLS_DEBUG)
        SSLOGERROR(ERRCLS_DEBUG, ESS487, (ErrVal) ret,
                   "Could not create system task");
#endif

        RETVALUE(RFAILED);
    }

    /* success, update the table */
    *tskId = osCp.nxtSTskEntry;
    sTsk->tskId       = osCp.nxtSTskEntry;
    sTsk->used        = TRUE;
    sTsk->termPend    = FALSE;
    osCp.nxtSTskEntry = sTsk->nxt;
    osCp.numSTsks++;

    /* unlock the system task table */
    SUnlock(&osCp.sTskTblLock);

    RETVALUE(ROK);

} /* SCreateSTsk */



/*
*
*       Fun:   Destroy system task
*
*       Desc:  This function is used to destroy a system task. The
*              entry is located in the system task table and the
*              implementation-specific function is called.
*
*       Ret:   ROK      - ok
*              RFAILED  - failed, general (optional)
*
*       Notes:
*
*       File:  ss_task.c
*
*/
#ifdef ANSI
PUBLIC S16 SDestroySTsk
(
SSTskId tskId                   /* system task to be destroyed */
)
#else
PUBLIC S16 SDestroySTsk(tskId)
SSTskId tskId;                  /* system task to be destroyed */
#endif
{
    S16 ret;
    S16 i;
    SsIdx idx;
    SsSTskEntry *sTsk;


    TRC1(SDestroySTsk);


#if (ERRCLASS & ERRCLS_INT_PAR)

    /* validate the system task ID */
    if (tskId >= SS_MAX_STSKS)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS488, (ErrVal) tskId, "Invalid task ID");
        RETVALUE(RFAILED);
    }
#endif


    /* lock the system task table */
    ret = SLock(&osCp.sTskTblLock);
    if (ret != ROK)
    {

#if (ERRCLASS & ERRCLS_DEBUG)
        SSLOGERROR(ERRCLS_DEBUG, ESS489, (ErrVal) ret,
                   "Could not lock system task table");
#endif

        RETVALUE(RFAILED);
    }


    idx = (SsIdx) tskId;
    sTsk = &osCp.sTskTbl[idx];


#if (ERRCLASS & ERRCLS_INT_PAR)

    /* 
     * check to see this system task exists and it is not already scheduled
     *  for termination 
     */
    if (sTsk->used != TRUE)
    {
        SUnlock(&osCp.sTskTblLock);

        SSLOGERROR(ERRCLS_INT_PAR, ESS490, (ErrVal) idx,
                   "Invalid system task ID");
        RETVALUE(RFAILED);
    } else if (sTsk->termPend != FALSE)
    {
        SUnlock(&osCp.sTskTblLock);

        SSLOGERROR(ERRCLS_INT_PAR, ESS491, (ErrVal) idx,
                   "Invalid system task ID");
        RETVALUE(RFAILED);
    }
#endif


    /* lock this system task entry */
    if (!SS_CHECK_CUR_STSK(sTsk))
    {
        ret = SLock(&sTsk->lock);
        if (ret != ROK)
        {
            SUnlock(&osCp.sTskTblLock);

#if (ERRCLASS & ERRCLS_DEBUG)
            SSLOGERROR(ERRCLS_DEBUG, ESS492, (ErrVal) ret,
                       "Could not lock system task entry");
#endif

            RETVALUE(RFAILED);
        }
    }

    /* lock the TAPA task table */
    SS_ACQUIRE_ALL_SEMA(&osCp.tTskTblSem, ret);
    if (ret != ROK)
    {
        if (!SS_CHECK_CUR_STSK(sTsk))
        {
            SUnlock(&sTsk->lock);
        }
        SUnlock(&osCp.sTskTblLock);

#if (ERRCLASS & ERRCLS_DEBUG)
        SSLOGERROR(ERRCLS_DEBUG, ESS493, ERRZERO,
                   "Could not lock TAPA task table");
#endif

        RETVALUE(RFAILED);
    }


    /* If this system task entry has any TAPA tasks attached,
     *  we have to detach them
     */
    if (sTsk->numTTsks)
    {
        /* detach all TAPA tasks that are attached here */
        for (i = 0;  i < SS_MAX_TTSKS;  i++)
        {
            if (sTsk->tTsks[i] == SS_INVALID_IDX)
                continue;

            osCp.tTskTbl[sTsk->tTsks[i]].sTsk = NULLP;
            sTsk->tTsks[i] = SS_INVALID_IDX;
            sTsk->numTTsks--;
        }
    }


    /* set the termination pending flag to TRUE */
    sTsk->termPend = TRUE;


    /* unlock everything */
    SS_RELEASE_ALL_SEMA(&osCp.tTskTblSem);

    if (!SS_CHECK_CUR_STSK(sTsk))
    {
        SUnlock(&sTsk->lock);
    }

    SUnlock(&osCp.sTskTblLock);


    /* We call this after unlocking because it is possible that the
     *  caller is this very system task and we need to take care of
     *  that. The actual mechanism of notifying the thread that it
     *  has to die, or actually killing the thread is left to the
     *  implementation.
     */
    ret = ssdDestroySTsk(sTsk);
    if (ret != ROK)
    {
        /* Here, we're a little messed up. We've pretty much made this
         *  system task unusable, but now, its not going to die. So..??
         */

#if (ERRCLASS & ERRCLS_DEBUG)
        SSLOGERROR(ERRCLS_DEBUG, ESS494, (ErrVal) ret,
                   "Could not destroy system task");
#endif

        RETVALUE(RFAILED);
    }


    RETVALUE(ROK);
} /* SDestroySTsk */



/*
*
*       Fun:   Attach TAPA task
*
*       Desc:  This function is used to attach a TAPA task to a
*              system task. The system task will begin to execute
*              the TAPA task.
*
*       Ret:   ROK      - ok
*              RFAILED  - failed, general (optional)
*              ROUTRES  - failed, out of resources (optional)
*
*       Notes:
*
*       File:  ss_task.c
*
*/
#ifdef ANSI
PUBLIC S16 SAttachTTsk
(
Ent ent,                        /* entity ID of the task */
Inst inst,                      /* instance ID of the task */
SSTskId sTskId                  /* system task to use */
)
#else
PUBLIC S16 SAttachTTsk(ent, inst, sTskId)
Ent ent;                        /* entity ID of the task */
Inst inst;                      /* instance ID of the task */
SSTskId sTskId;                 /* system task to use */
#endif
{
    S16 ret;
    S16 i;
    SsIdx idx;
    SsSTskEntry *sTsk;


    TRC1(SAttachTTsk);


#if (ERRCLASS & ERRCLS_INT_PAR)

    /* check entity and instance range */
    if (ent >= SS_MAX_ENT ||  inst >= SS_MAX_INST)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS495, ERRZERO, "Invalid entity/instance");
        RETVALUE(RFAILED);
    }

    /* check the system task index */
    if ((SsIdx)sTskId >= SS_MAX_STSKS)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS496, (ErrVal) sTskId,
                   "Invalid system task ID");
        RETVALUE(RFAILED);
    }
#endif


    /* lock the system task table */
    ret = SLock(&osCp.sTskTblLock);
    if (ret != ROK)
    {

#if (ERRCLASS & ERRCLS_DEBUG)
        SSLOGERROR(ERRCLS_DEBUG, ESS497, (ErrVal) ret,
                   "Could not lock system task table");
#endif

        RETVALUE(RFAILED);
    }


    sTsk = &osCp.sTskTbl[(SsIdx)sTskId];


#if (ERRCLASS & ERRCLS_INT_PAR)

    /* verify that this system task exists */
    if (sTsk->used == FALSE)
    {
        SUnlock(&osCp.sTskTblLock);

        SSLOGERROR(ERRCLS_INT_PAR, ESS498, (ErrVal) sTskId,
                   "Unknown system task ID");
        RETVALUE(RFAILED);
    }
#endif


    /* lock the system task entry */
    if (!SS_CHECK_CUR_STSK(sTsk))
    {
        ret = SLock(&sTsk->lock);
        if (ret != ROK)
        {
            SUnlock(&osCp.sTskTblLock);

#if (ERRCLASS & ERRCLS_DEBUG)
            SSLOGERROR(ERRCLS_DEBUG, ESS499, (ErrVal) ret,
                       "Could not lock system task entry");
#endif

            RETVALUE(RFAILED);
        }
    }


    /* if this system task is about to die, we don't attach */
    if (sTsk->termPend == TRUE)
    {
        if (!SS_CHECK_CUR_STSK(sTsk))
        {
            SUnlock(&sTsk->lock);
        }
        SUnlock(&osCp.sTskTblLock);

        RETVALUE(RFAILED);
    }


    /* lock the TAPA task table */
    SS_ACQUIRE_ALL_SEMA(&osCp.tTskTblSem, ret);
    if (ret != ROK)
    {
        if (!SS_CHECK_CUR_STSK(sTsk))
        {
            SUnlock(&sTsk->lock);
        }
        SUnlock(&osCp.sTskTblLock);

#if (ERRCLASS & ERRCLS_DEBUG)
        SSLOGERROR(ERRCLS_DEBUG, ESS500, ERRZERO,
                   "Could not lock TAPA task table");
#endif

        RETVALUE(RFAILED);
    }


    /* get the index of the TAPA task entry in the table */
    idx = osCp.tTskIds[ent][inst];


#if (ERRCLASS & ERRCLS_INT_PAR)

    /* check out the TAPA task ID */
    if (idx == SS_TSKNC)
    {
        SS_RELEASE_ALL_SEMA(&osCp.tTskTblSem);
        if (!SS_CHECK_CUR_STSK(sTsk))
        {
            SUnlock(&sTsk->lock);
        }
        SUnlock(&osCp.sTskTblLock);

        SSLOGERROR(ERRCLS_INT_PAR, ESS501, ERRZERO, "Unknown task");
        RETVALUE(RFAILED);
    }
#endif


    /* verify that this TAPA task is not already attached */
    if (osCp.tTskTbl[idx].sTsk != NULLP)
    {
        SS_RELEASE_ALL_SEMA(&osCp.tTskTblSem);
        if (!SS_CHECK_CUR_STSK(sTsk))
        {
            SUnlock(&sTsk->lock);
        }
        SUnlock(&osCp.sTskTblLock);

        RETVALUE(RFAILED);
    }


    /* verify that there is space for another TAPA task */
    if (sTsk->numTTsks == SS_MAX_TTSKS)
    {
        SS_RELEASE_ALL_SEMA(&osCp.tTskTblSem);
        if (!SS_CHECK_CUR_STSK(sTsk))
        {
            SUnlock(&sTsk->lock);
        }
        SUnlock(&osCp.sTskTblLock);

        RETVALUE(ROUTRES);
    }


    /*  Find place for this TAPA task in the system task's list
     *  of TAPA tasks to run. Plug in this TAPA task.
     */
    for (i = 0;  i < SS_MAX_TTSKS;  i++)
    {
        if (sTsk->tTsks[i] == SS_INVALID_IDX)
        {
            sTsk->tTsks[i] = idx;
            sTsk->numTTsks++;
            break;
        }
    }


    /* Fill in the system task info in the TAPA task entry, so
     *  the TAPA task knows who's running it.
     */
    osCp.tTskTbl[idx].sTsk = sTsk;

    
    


    /* call the implementation to do anything implementation-specific */
    ret = ssdAttachTTsk(&osCp.tTskTbl[idx]);


    /* unlock the tables; we're done */
    SS_RELEASE_ALL_SEMA(&osCp.tTskTblSem);
    if (!SS_CHECK_CUR_STSK(sTsk))
    {
        SUnlock(&sTsk->lock);
    }
    SUnlock(&osCp.sTskTblLock);


    /* If the implementation didn't succeed, we have to undo everything.
     *  We call SDetachTTsk, to make it easier.
     */
    if (ret != ROK)
    {
        SDetachTTsk(ent, inst);
        RETVALUE(RFAILED);
    }


    RETVALUE(ROK);
} /* SAttachTTsk */


/*
*
*       Fun:   Detach TAPA task
*
*       Desc:  This function is used to detach a TAPA task from a
*              system task. The system task will stop executing
*              the TAPA task.
*
*       Ret:   ROK      - ok
*              RFAILED  - failed, general (optional)
*
*       Notes:
*
*       File:  ss_task.c
*
*/
#ifdef ANSI
PUBLIC S16 SDetachTTsk
(
Ent ent,                        /* entity ID of the task */
Inst inst                       /* instance ID of the task */
)
#else
PUBLIC S16 SDetachTTsk(ent, inst)
Ent ent;                        /* entity ID of the task */
Inst inst;                      /* instance ID of the task */
#endif
{
    S16 ret;
    S16 i;
    SsIdx idx;
    SsTTskEntry *tTsk;
    SsSTskEntry *sTsk;


    TRC1(SDetachTTsk);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩另类一区| 午夜精品影院在线观看| 91丨porny丨户外露出| 亚洲私人影院在线观看| 欧美综合一区二区| 午夜视频久久久久久| 欧美一级免费观看| 国产一区二区三区高清播放| 国产色综合一区| 97久久精品人人做人人爽50路| 亚洲精品国久久99热| 欧美日韩精品福利| 精品亚洲国产成人av制服丝袜| 国产午夜亚洲精品不卡| 色婷婷久久久亚洲一区二区三区| 天天av天天翘天天综合网| 日韩一区国产二区欧美三区| 国产麻豆日韩欧美久久| 中文字幕在线观看不卡| 欧美视频在线一区| 激情av综合网| 日韩美女精品在线| 欧美精品久久久久久久久老牛影院| 久久er精品视频| 国产精品久久久久7777按摩 | 99久久夜色精品国产网站| 亚洲在线视频免费观看| 欧美videossexotv100| 国产 欧美在线| 亚洲二区在线视频| 精品三级在线观看| 色综合久久88色综合天天6| 亚洲电影你懂得| 久久久久国产精品免费免费搜索| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 久久日一线二线三线suv| 99精品视频一区二区| 奇米精品一区二区三区四区| 中文字幕精品一区| 欧美三级一区二区| 国产剧情一区二区| 亚洲午夜电影在线| 久久久不卡网国产精品一区| 日本福利一区二区| 国产一区二区三区蝌蚪| 亚洲在线中文字幕| 国产欧美日韩久久| 欧美乱熟臀69xxxxxx| 国产91丝袜在线观看| 午夜精品在线看| 中文字幕一区免费在线观看| 欧美一二三区在线| 91传媒视频在线播放| 国产成人日日夜夜| 亚洲bt欧美bt精品| 亚洲欧美一区二区在线观看| 精品福利一区二区三区免费视频| 色哟哟国产精品免费观看| 精品一区二区三区av| 午夜私人影院久久久久| 日韩美女啊v在线免费观看| 亚洲精品一区在线观看| 欧美性一二三区| 成人性色生活片免费看爆迷你毛片| 免费人成黄页网站在线一区二区| 亚洲欧美激情小说另类| 久久久午夜精品理论片中文字幕| 欧美老女人第四色| 91小视频在线免费看| 国产精品一区二区视频| 免费在线看一区| 亚洲午夜电影在线观看| 亚洲桃色在线一区| 国产亚洲一二三区| 日韩精品最新网址| 欧美日韩国产综合一区二区| 色综合久久久久| 成人aa视频在线观看| 国产制服丝袜一区| 日韩电影免费在线观看网站| 亚洲国产裸拍裸体视频在线观看乱了 | 久久久久久久久久久99999| 欧美一区二区视频在线观看2022| 在线亚洲一区观看| 99久久久精品| 成人小视频免费在线观看| 国产美女精品人人做人人爽| 美女视频黄免费的久久| 五月婷婷久久丁香| 亚洲电影第三页| 亚洲一区二区五区| 亚洲精品国久久99热| 综合久久综合久久| 国产精品久久影院| 国产欧美日韩亚州综合| 久久精品人人做人人爽97| 欧美精品一区二区三区蜜桃| 欧美刺激午夜性久久久久久久| 51精品久久久久久久蜜臀| 欧美日韩国产高清一区| 欧美日韩一级二级| 欧美老年两性高潮| 欧美精品第一页| 7777精品伊人久久久大香线蕉超级流畅 | 奇米色777欧美一区二区| 日本强好片久久久久久aaa| 日日噜噜夜夜狠狠视频欧美人| 一区二区三区免费在线观看| 一区二区在线观看免费视频播放 | 亚洲韩国精品一区| 一二三四区精品视频| 一区二区理论电影在线观看| 亚洲精品免费电影| 亚洲一区二区三区四区的| 亚洲无人区一区| 日日摸夜夜添夜夜添亚洲女人| 爽好久久久欧美精品| 美女精品自拍一二三四| 国内久久精品视频| 国产毛片一区二区| 成人黄色a**站在线观看| 91首页免费视频| 日本精品一级二级| 欧美日韩综合在线免费观看| 91精品国产一区二区人妖| 日韩欧美国产wwwww| 久久一留热品黄| 久久精品无码一区二区三区| 国产精品第一页第二页第三页| 亚洲免费av观看| 亚洲国产乱码最新视频| 喷白浆一区二区| 激情久久久久久久久久久久久久久久| 国产成人午夜视频| 97se狠狠狠综合亚洲狠狠| 欧美自拍丝袜亚洲| 欧美一级专区免费大片| 2020国产成人综合网| 国产精品久久久久影院| 亚洲一线二线三线视频| 免费成人在线视频观看| 国产麻豆欧美日韩一区| 91小视频在线观看| 91精品国产综合久久久蜜臀粉嫩| 精品久久久久久久久久久久久久久 | 亚洲婷婷在线视频| 亚洲成人7777| 国产精品一区免费在线观看| 97久久精品人人澡人人爽| 欧美日韩一二三| 久久色成人在线| 亚洲乱码一区二区三区在线观看| 天天综合天天综合色| 国产超碰在线一区| 欧美日韩中文字幕一区| 精品国产污污免费网站入口 | 欧美系列在线观看| 欧美成人精品1314www| 国产精品久久久久久久久搜平片| 午夜国产精品一区| 高清在线成人网| 欧美日韩aaaaa| 国产三级一区二区三区| 亚洲综合色丁香婷婷六月图片| 精东粉嫩av免费一区二区三区| 波多野结衣亚洲| 91精品国产一区二区三区| 国产精品美女久久久久久| 天堂va蜜桃一区二区三区| 国产成人福利片| 欧美日韩国产综合一区二区三区| 欧美极品美女视频| 天天操天天干天天综合网| 成人夜色视频网站在线观看| 欧美一区午夜精品| 国产精品国产a| 美日韩黄色大片| 日本高清免费不卡视频| 久久久久亚洲综合| 亚洲444eee在线观看| 成人午夜激情视频| 日韩一区二区三区视频在线观看| 中文字幕亚洲视频| 久久97超碰色| 欧美三级中文字幕在线观看| 国产精品视频第一区| 玖玖九九国产精品| 欧美吻胸吃奶大尺度电影| 欧美国产日韩一二三区| 奇米色777欧美一区二区| 在线观看免费一区| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲.国产.中文慕字在线| 99在线精品免费| 久久久九九九九| 麻豆91小视频| 欧美日韩精品福利| 亚洲免费av在线| av网站一区二区三区| 久久先锋资源网|