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/dataqueue.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 *
     
    356356        p_dtqmb = pk_cdtq->dtqmb;
    357357
    358         CHECK_RSATR(dtqatr, TA_TPRI);
     358        CHECK_VALIDATR(dtqatr, TA_TPRI);
     359        if (p_dtqmb != NULL) {
     360                CHECK_PAR(MB_ALIGN(p_dtqmb));
     361        }
    359362
    360363        lock_cpu();
     
    364367        else {
    365368                if (dtqcnt != 0 && p_dtqmb == NULL) {
    366                         p_dtqmb = kernel_malloc(sizeof(DTQMB) * dtqcnt);
     369                        p_dtqmb = malloc_mpk(sizeof(DTQMB) * dtqcnt);
    367370                        dtqatr |= TA_MBALLOC;
    368371                }
     
    423426                p_dtqinib = (DTQINIB *)(p_dtqcb->p_dtqinib);
    424427                if ((p_dtqinib->dtqatr & TA_MBALLOC) != 0U) {
    425                         kernel_free(p_dtqinib->p_dtqmb);
     428                        free_mpk(p_dtqinib->p_dtqmb);
    426429                }
    427430                p_dtqinib->dtqatr = TA_NOEXS;
     
    449452snd_dtq(ID dtqid, intptr_t data)
    450453{
    451         DTQCB   *p_dtqcb;
    452         WINFO_SDTQ winfo_sdtq;
    453         ER              ercd;
     454        DTQCB           *p_dtqcb;
     455        WINFO_SDTQ      winfo_sdtq;
     456        ER                      ercd;
    454457
    455458        LOG_SND_DTQ_ENTER(dtqid, data);
     
    473476        else {
    474477                winfo_sdtq.data = data;
    475                 p_runtsk->tstat = TS_WAITING_SDTQ;
    476                 wobj_make_wait((WOBJCB *) p_dtqcb, (WINFO_WOBJ *) &winfo_sdtq);
     478                wobj_make_wait((WOBJCB *) p_dtqcb, TS_WAITING_SDTQ,
     479                                                                                        (WINFO_WOBJ *) &winfo_sdtq);
    477480                dispatch();
    478481                ercd = winfo_sdtq.winfo.wercd;
     
    513516                        }
    514517                        else {
    515                                 request_dispatch();
     518                                request_dispatch_retint();
    516519                        }
    517520                }
     
    538541tsnd_dtq(ID dtqid, intptr_t data, TMO tmout)
    539542{
    540         DTQCB   *p_dtqcb;
    541         WINFO_SDTQ winfo_sdtq;
    542         TMEVTB  tmevtb;
    543         ER              ercd;
     543        DTQCB           *p_dtqcb;
     544        WINFO_SDTQ      winfo_sdtq;
     545        TMEVTB          tmevtb;
     546        ER                      ercd;
    544547
    545548        LOG_TSND_DTQ_ENTER(dtqid, data, tmout);
     
    567570        else {
    568571                winfo_sdtq.data = data;
    569                 p_runtsk->tstat = TS_WAITING_SDTQ;
    570                 wobj_make_wait_tmout((WOBJCB *) p_dtqcb, (WINFO_WOBJ *) &winfo_sdtq,
    571                                                                                                                 &tmevtb, tmout);
     572                wobj_make_wait_tmout((WOBJCB *) p_dtqcb, TS_WAITING_SDTQ,
     573                                                                (WINFO_WOBJ *) &winfo_sdtq, &tmevtb, tmout);
    572574                dispatch();
    573575                ercd = winfo_sdtq.winfo.wercd;
     
    612614                        }
    613615                        else {
    614                                 request_dispatch();
     616                                request_dispatch_retint();
    615617                        }
    616618                }
    617         ercd = E_OK;
     619                ercd = E_OK;
    618620        }
    619621        unlock_cpu();
     
    634636rcv_dtq(ID dtqid, intptr_t *p_data)
    635637{
    636         DTQCB   *p_dtqcb;
    637         WINFO_RDTQ winfo_rdtq;
    638         ER              ercd;
     638        DTQCB           *p_dtqcb;
     639        WINFO_RDTQ      winfo_rdtq;
     640        ER                      ercd;
    639641
    640642        LOG_RCV_DTQ_ENTER(dtqid, p_data);
     
    657659        }
    658660        else {
    659                 p_runtsk->tstat = TS_WAITING_RDTQ;
    660                 make_wait(&(winfo_rdtq.winfo));
     661                make_wait(TS_WAITING_RDTQ, &(winfo_rdtq.winfo));
    661662                queue_insert_prev(&(p_dtqcb->rwait_queue), &(p_runtsk->task_queue));
    662663                winfo_rdtq.p_dtqcb = p_dtqcb;
     
    723724trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout)
    724725{
    725         DTQCB   *p_dtqcb;
    726         WINFO_RDTQ winfo_rdtq;
    727         TMEVTB  tmevtb;
    728         ER              ercd;
     726        DTQCB           *p_dtqcb;
     727        WINFO_RDTQ      winfo_rdtq;
     728        TMEVTB          tmevtb;
     729        ER                      ercd;
    729730
    730731        LOG_TRCV_DTQ_ENTER(dtqid, p_data, tmout);
     
    751752        }
    752753        else {
    753                 p_runtsk->tstat = TS_WAITING_RDTQ;
    754                 make_wait_tmout(&(winfo_rdtq.winfo), &tmevtb, tmout);
     754                make_wait_tmout(TS_WAITING_RDTQ, &(winfo_rdtq.winfo), &tmevtb, tmout);
    755755                queue_insert_prev(&(p_dtqcb->rwait_queue), &(p_runtsk->task_queue));
    756756                winfo_rdtq.p_dtqcb = p_dtqcb;
Note: See TracChangeset for help on using the changeset viewer.