Ignore:
Timestamp:
Jul 3, 2020, 7:19:17 PM (4 years ago)
Author:
coas-nagasima
Message:

ASP3, TINET, mbed を更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/kernel/eventflag.c

    r321 r429  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2005-2017 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2005-2018 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    216216        flgatr = pk_cflg->flgatr;
    217217
    218         CHECK_RSATR(flgatr, TA_TPRI|TA_WMUL|TA_CLR);
     218        CHECK_VALIDATR(flgatr, TA_TPRI|TA_WMUL|TA_CLR);
    219219
    220220        lock_cpu();
     
    292292set_flg(ID flgid, FLGPTN setptn)
    293293{
    294         FLGCB   *p_flgcb;
    295         QUEUE   *p_queue;
    296         TCB             *p_tcb;
    297         WINFO_FLG *p_winfo_flg;
    298         ER              ercd;
     294        FLGCB           *p_flgcb;
     295        QUEUE           *p_queue;
     296        TCB                     *p_tcb;
     297        WINFO_FLG       *p_winfo_flg;
     298        bool_t          lock;
     299        ER                      ercd;
    299300
    300301        LOG_SET_FLG_ENTER(flgid, setptn);
    301         CHECK_UNL();
     302        lock = sense_lock();
    302303        CHECK_ID(VALID_FLGID(flgid));
    303304        p_flgcb = get_flgcb(flgid);
    304305
    305         lock_cpu();
     306        if (!lock)
     307                lock_cpu();
    306308        if (p_flgcb->p_flginib->flgatr == TA_NOEXS) {
    307309                ercd = E_NOEXS;
     
    328330                        }
    329331                        else {
    330                                 request_dispatch();
     332                                request_dispatch_retint();
    331333                        }
    332334                }
    333335                ercd = E_OK;
    334336        }
    335         unlock_cpu();
     337        if (!lock)
     338                unlock_cpu();
    336339
    337340  error_exit:
     
    351354{
    352355        FLGCB   *p_flgcb;
     356        bool_t lock;
    353357        ER              ercd;
    354358
    355359        LOG_CLR_FLG_ENTER(flgid, clrptn);
    356         CHECK_TSKCTX_UNL();
     360        lock = sense_lock();
    357361        CHECK_ID(VALID_FLGID(flgid));
    358362        p_flgcb = get_flgcb(flgid);
    359363
    360         lock_cpu();
     364        if (!lock)
     365                lock_cpu();
    361366        if (p_flgcb->p_flginib->flgatr == TA_NOEXS) {
    362367                ercd = E_NOEXS;
     
    366371                ercd = E_OK;
    367372        }
    368         unlock_cpu();
     373        if (!lock)
     374                unlock_cpu();
    369375
    370376  error_exit:
     
    383389wai_flg(ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn)
    384390{
    385         FLGCB   *p_flgcb;
    386         WINFO_FLG winfo_flg;
    387         ER              ercd;
     391        FLGCB           *p_flgcb;
     392        WINFO_FLG       winfo_flg;
     393        ER                      ercd;
    388394
    389395        LOG_WAI_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn);
     
    411417                winfo_flg.waiptn = waiptn;
    412418                winfo_flg.wfmode = wfmode;
    413                 p_runtsk->tstat = TS_WAITING_FLG;
    414                 wobj_make_wait((WOBJCB *) p_flgcb, (WINFO_WOBJ *) &winfo_flg);
     419                wobj_make_wait((WOBJCB *) p_flgcb, TS_WAITING_FLG,
     420                                                                                        (WINFO_WOBJ *) &winfo_flg);
    415421                dispatch();
    416422                ercd = winfo_flg.winfo.wercd;
     
    477483twai_flg(ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn, TMO tmout)
    478484{
    479         FLGCB   *p_flgcb;
    480         WINFO_FLG winfo_flg;
    481         TMEVTB  tmevtb;
    482         ER              ercd;
     485        FLGCB           *p_flgcb;
     486        WINFO_FLG       winfo_flg;
     487        TMEVTB          tmevtb;
     488        ER                      ercd;
    483489
    484490        LOG_TWAI_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn, tmout);
     
    510516                winfo_flg.waiptn = waiptn;
    511517                winfo_flg.wfmode = wfmode;
    512                 p_runtsk->tstat = TS_WAITING_FLG;
    513                 wobj_make_wait_tmout((WOBJCB *) p_flgcb, (WINFO_WOBJ *) &winfo_flg,
    514                                                                                                                 &tmevtb, tmout);
     518                wobj_make_wait_tmout((WOBJCB *) p_flgcb, TS_WAITING_FLG,
     519                                                                (WINFO_WOBJ *) &winfo_flg, &tmevtb, tmout);
    515520                dispatch();
    516521                ercd = winfo_flg.winfo.wercd;
     
    575580        FLGCB   *p_flgcb;
    576581        ER              ercd;
    577    
     582        bool_t lock;
     583
    578584        LOG_REF_FLG_ENTER(flgid, pk_rflg);
    579         CHECK_TSKCTX_UNL();
     585        lock = sense_lock();
    580586        CHECK_ID(VALID_FLGID(flgid));
    581587        p_flgcb = get_flgcb(flgid);
    582588
    583         lock_cpu();
     589        if (!lock)
     590                lock_cpu();
    584591        if (p_flgcb->p_flginib->flgatr == TA_NOEXS) {
    585592                ercd = E_NOEXS;
     
    590597                ercd = E_OK;
    591598        }
    592         unlock_cpu();
     599        if (!lock)
     600                unlock_cpu();
    593601
    594602  error_exit:
Note: See TracChangeset for help on using the changeset viewer.