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/interrupt.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-2019 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    9393#endif /* LOG_ENA_INT_LEAVE */
    9494
     95#ifndef LOG_CLR_INT_ENTER
     96#define LOG_CLR_INT_ENTER(intno)
     97#endif /* LOG_CLR_INT_ENTER */
     98
     99#ifndef LOG_CLR_INT_LEAVE
     100#define LOG_CLR_INT_LEAVE(ercd)
     101#endif /* LOG_CLR_INT_LEAVE */
     102
     103#ifndef LOG_RAS_INT_ENTER
     104#define LOG_RAS_INT_ENTER(intno)
     105#endif /* LOG_RAS_INT_ENTER */
     106
     107#ifndef LOG_RAS_INT_LEAVE
     108#define LOG_RAS_INT_LEAVE(ercd)
     109#endif /* LOG_RAS_INT_LEAVE */
     110
     111#ifndef LOG_PRB_INT_ENTER
     112#define LOG_PRB_INT_ENTER(intno)
     113#endif /* LOG_PRB_INT_ENTER */
     114
     115#ifndef LOG_PRB_INT_LEAVE
     116#define LOG_PRB_INT_LEAVE(ercd)
     117#endif /* LOG_PRB_INT_LEAVE */
     118
    95119#ifndef LOG_CHG_IPM_ENTER
    96120#define LOG_CHG_IPM_ENTER(intpri)
     
    108132#define LOG_GET_IPM_LEAVE(ercd, p_intpri)
    109133#endif /* LOG_GET_IPM_LEAVE */
     134
     135/*
     136 *  割込み番号の範囲の判定
     137 */
     138#ifndef VALID_INTNO_DISINT
     139#define VALID_INTNO_DISINT(intno)       VALID_INTNO(intno)
     140#endif /* VALID_INTNO_DISINT */
     141
     142#ifndef VALID_INTNO_CLRINT
     143#define VALID_INTNO_CLRINT(intno)       VALID_INTNO(intno)
     144#endif /* VALID_INTNO_CLRINT */
     145
     146#ifndef VALID_INTNO_RASINT
     147#define VALID_INTNO_RASINT(intno)       VALID_INTNO(intno)
     148#endif /* VALID_INTNO_RASINT */
     149
     150#ifndef VALID_INTNO_PRBINT
     151#define VALID_INTNO_PRBINT(intno)       VALID_INTNO(intno)
     152#endif /* VALID_INTNO_PRBINT */
     153
     154#ifndef VALID_INTNO_CREISR
     155#define VALID_INTNO_CREISR(intno)       VALID_INTNO(intno)
     156#endif /* VALID_INTNO_CREISR */
     157
     158/*
     159 *  割込み優先度の範囲の判定
     160 */
     161#ifndef VALID_INTPRI_CHGIPM
     162#define VALID_INTPRI_CHGIPM(intpri)     \
     163                                        (TMIN_INTPRI <= (intpri) && (intpri) <= TIPM_ENAALL)
     164#endif /* VALID_INTPRI_CHGIPM */
    110165
    111166/*
     
    266321        isrpri = pk_cisr->isrpri;
    267322
    268         CHECK_RSATR(isratr, TARGET_ISRATR);
     323        CHECK_VALIDATR(isratr, TARGET_ISRATR);
    269324        CHECK_PAR(VALID_INTNO_CREISR(intno));
    270325        CHECK_PAR(FUNC_ALIGN(isr));
     
    384439                lock_cpu();
    385440        }
    386         if (disable_int(intno)) {                                       /*[NGKI3086]*/
     441        if (check_intno_cfg(intno)) {
     442                disable_int(intno);                                             /*[NGKI3086]*/
    387443                ercd = E_OK;
    388444        }
     
    421477                lock_cpu();
    422478        }
    423         if (enable_int(intno)) {                                        /*[NGKI3099]*/
     479        if (check_intno_cfg(intno)) {
     480                enable_int(intno);                                              /*[NGKI3099]*/
    424481                ercd = E_OK;
    425482        }
     
    438495#endif /* TOPPERS_SUPPORT_ENA_INT */
    439496#endif /* TOPPERS_ena_int */
     497
     498/*
     499 *  割込み要求のクリア[NGKI3920]
     500 */
     501#ifdef TOPPERS_clr_int
     502#ifdef TOPPERS_SUPPORT_CLR_INT                                  /*[NGKI3927]*/
     503
     504ER
     505clr_int(INTNO intno)
     506{
     507        bool_t  locked;
     508        ER              ercd;
     509
     510        LOG_CLR_INT_ENTER(intno);
     511        CHECK_PAR(VALID_INTNO_CLRINT(intno));           /*[NGKI3921][NGKI3930]*/
     512
     513        locked = sense_lock();
     514        if (!locked) {
     515                lock_cpu();
     516        }
     517        if (check_intno_cfg(intno) && check_intno_clear(intno)) {
     518                clear_int(intno);                                               /*[NGKI3924]*/
     519                ercd = E_OK;
     520        }
     521        else {
     522                ercd = E_OBJ;                                                   /*[NGKI3923][NGKI3929]*/
     523        }
     524        if (!locked) {
     525                unlock_cpu();
     526        }
     527
     528  error_exit:
     529        LOG_CLR_INT_LEAVE(ercd);
     530        return(ercd);
     531}
     532
     533#endif /* TOPPERS_SUPPORT_CLR_INT */
     534#endif /* TOPPERS_clr_int */
     535
     536/*
     537 *  割込みの要求[NGKI3932]
     538 */
     539#ifdef TOPPERS_ras_int
     540#ifdef TOPPERS_SUPPORT_RAS_INT                                  /*[NGKI3939]*/
     541
     542ER
     543ras_int(INTNO intno)
     544{
     545        bool_t  locked;
     546        ER              ercd;
     547
     548        LOG_RAS_INT_ENTER(intno);
     549        CHECK_PAR(VALID_INTNO_RASINT(intno));           /*[NGKI3933][NGKI3942]*/
     550
     551        locked = sense_lock();
     552        if (!locked) {
     553                lock_cpu();
     554        }
     555        if (check_intno_cfg(intno) && check_intno_raise(intno)) {
     556                raise_int(intno);                                               /*[NGKI3936]*/
     557                ercd = E_OK;
     558        }
     559        else {
     560                ercd = E_OBJ;                                                   /*[NGKI3935][NGKI3941]*/
     561        }
     562        if (!locked) {
     563                unlock_cpu();
     564        }
     565
     566  error_exit:
     567        LOG_RAS_INT_LEAVE(ercd);
     568        return(ercd);
     569}
     570
     571#endif /* TOPPERS_SUPPORT_RAS_INT */
     572#endif /* TOPPERS_ras_int */
     573
     574/*
     575 *  割込み要求のチェック[NGKI3944]
     576 */
     577#ifdef TOPPERS_prb_int
     578#ifdef TOPPERS_SUPPORT_PRB_INT                                  /*[NGKI3951]*/
     579
     580ER_BOOL
     581prb_int(INTNO intno)
     582{
     583        bool_t  locked;
     584        ER_BOOL ercd;
     585
     586        LOG_PRB_INT_ENTER(intno);
     587        CHECK_PAR(VALID_INTNO_PRBINT(intno));           /*[NGKI3945][NGKI3952]*/
     588
     589        locked = sense_lock();
     590        if (!locked) {
     591                lock_cpu();
     592        }
     593        if (check_intno_cfg(intno)) {
     594                ercd = (ER_BOOL) probe_int(intno);              /*[NGKI3948]*/
     595        }
     596        else {
     597                ercd = E_OBJ;                                                   /*[NGKI3947]*/
     598        }
     599        if (!locked) {
     600                unlock_cpu();
     601        }
     602
     603  error_exit:
     604        LOG_PRB_INT_LEAVE(ercd);
     605        return(ercd);
     606}
     607
     608#endif /* TOPPERS_SUPPORT_PRB_INT */
     609#endif /* TOPPERS_prb_int */
    440610
    441611/*
     
    456626        t_set_ipm(intpri);                                                      /*[NGKI3111]*/
    457627        if (intpri == TIPM_ENAALL && enadsp) {
    458                 dspflg = true;
    459                 p_schedtsk = search_schedtsk();
     628                set_dspflg();
    460629                if (p_runtsk->raster && p_runtsk->enater) {
    461630                        task_terminate(p_runtsk);
Note: See TracChangeset for help on using the changeset viewer.