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/pridataq.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-2016 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 *
     
    335335        p_pdqmb = pk_cpdq->pdqmb;
    336336
    337         CHECK_RSATR(pdqatr, TA_TPRI);
     337        CHECK_VALIDATR(pdqatr, TA_TPRI);
    338338        CHECK_PAR(VALID_DPRI(maxdpri));
     339        if (p_pdqmb != NULL) {
     340                CHECK_PAR(MB_ALIGN(p_pdqmb));
     341        }
    339342
    340343        lock_cpu();
     
    344347        else {
    345348                if (pdqcnt != 0 && p_pdqmb == NULL) {
    346                         p_pdqmb = kernel_malloc(sizeof(PDQMB) * pdqcnt);
     349                        p_pdqmb = malloc_mpk(sizeof(PDQMB) * pdqcnt);
    347350                        pdqatr |= TA_MBALLOC;
    348351                }
     
    405408                p_pdqinib = (PDQINIB *)(p_pdqcb->p_pdqinib);
    406409                if ((p_pdqinib->pdqatr & TA_MBALLOC) != 0U) {
    407                         kernel_free(p_pdqinib->p_pdqmb);
     410                        free_mpk(p_pdqinib->p_pdqmb);
    408411                }
    409412                p_pdqinib->pdqatr = TA_NOEXS;
     
    431434snd_pdq(ID pdqid, intptr_t data, PRI datapri)
    432435{
    433         PDQCB   *p_pdqcb;
    434         WINFO_SPDQ winfo_spdq;
    435         ER              ercd;
     436        PDQCB           *p_pdqcb;
     437        WINFO_SPDQ      winfo_spdq;
     438        ER                      ercd;
    436439
    437440        LOG_SND_PDQ_ENTER(pdqid, data, datapri);
     
    460463                winfo_spdq.data = data;
    461464                winfo_spdq.datapri = datapri;
    462                 p_runtsk->tstat = TS_WAITING_SPDQ;
    463                 wobj_make_wait((WOBJCB *) p_pdqcb, (WINFO_WOBJ *) &winfo_spdq);
     465                wobj_make_wait((WOBJCB *) p_pdqcb, TS_WAITING_SPDQ,
     466                                                                                        (WINFO_WOBJ *) &winfo_spdq);
    464467                dispatch();
    465468                ercd = winfo_spdq.winfo.wercd;
     
    504507                        }
    505508                        else {
    506                                 request_dispatch();
     509                                request_dispatch_retint();
    507510                        }
    508511                }
     
    529532tsnd_pdq(ID pdqid, intptr_t data, PRI datapri, TMO tmout)
    530533{
    531         PDQCB   *p_pdqcb;
    532         WINFO_SPDQ winfo_spdq;
    533         TMEVTB  tmevtb;
    534         ER              ercd;
     534        PDQCB           *p_pdqcb;
     535        WINFO_SPDQ      winfo_spdq;
     536        TMEVTB          tmevtb;
     537        ER                      ercd;
    535538
    536539        LOG_TSND_PDQ_ENTER(pdqid, data, datapri, tmout);
     
    563566                winfo_spdq.data = data;
    564567                winfo_spdq.datapri = datapri;
    565                 p_runtsk->tstat = TS_WAITING_SPDQ;
    566                 wobj_make_wait_tmout((WOBJCB *) p_pdqcb, (WINFO_WOBJ *) &winfo_spdq,
    567                                                                                                                 &tmevtb, tmout);
     568                wobj_make_wait_tmout((WOBJCB *) p_pdqcb, TS_WAITING_SPDQ,
     569                                                                (WINFO_WOBJ *) &winfo_spdq, &tmevtb, tmout);
    568570                dispatch();
    569571                ercd = winfo_spdq.winfo.wercd;
     
    586588rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri)
    587589{
    588         PDQCB   *p_pdqcb;
    589         WINFO_RPDQ winfo_rpdq;
    590         ER              ercd;
     590        PDQCB           *p_pdqcb;
     591        WINFO_RPDQ      winfo_rpdq;
     592        ER                      ercd;
    591593
    592594        LOG_RCV_PDQ_ENTER(pdqid, p_data, p_datapri);
     
    609611        }
    610612        else {
    611                 p_runtsk->tstat = TS_WAITING_RPDQ;
    612                 make_wait(&(winfo_rpdq.winfo));
     613                make_wait(TS_WAITING_RPDQ, &(winfo_rpdq.winfo));
    613614                queue_insert_prev(&(p_pdqcb->rwait_queue), &(p_runtsk->task_queue));
    614615                winfo_rpdq.p_pdqcb = p_pdqcb;
     
    676677trcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri, TMO tmout)
    677678{
    678         PDQCB   *p_pdqcb;
    679         WINFO_RPDQ winfo_rpdq;
    680         TMEVTB  tmevtb;
    681         ER              ercd;
     679        PDQCB           *p_pdqcb;
     680        WINFO_RPDQ      winfo_rpdq;
     681        TMEVTB          tmevtb;
     682        ER                      ercd;
    682683
    683684        LOG_TRCV_PDQ_ENTER(pdqid, p_data, p_datapri, tmout);
     
    704705        }
    705706        else {
    706                 p_runtsk->tstat = TS_WAITING_RPDQ;
    707                 make_wait_tmout(&(winfo_rpdq.winfo), &tmevtb, tmout);
     707                make_wait_tmout(TS_WAITING_RPDQ, &(winfo_rpdq.winfo), &tmevtb, tmout);
    708708                queue_insert_prev(&(p_pdqcb->rwait_queue), &(p_runtsk->task_queue));
    709709                winfo_rpdq.p_pdqcb = p_pdqcb;
Note: See TracChangeset for help on using the changeset viewer.