#include "kernel_impl.h"
#include "check.h"
#include "task.h"
#include "interrupt.h"
マクロ定義 | |
#define | LOG_DIS_INT_ENTER(intno) |
#define | LOG_DIS_INT_LEAVE(ercd) |
#define | LOG_ENA_INT_ENTER(intno) |
#define | LOG_ENA_INT_LEAVE(ercd) |
#define | LOG_CHG_IPM_ENTER(intpri) |
#define | LOG_CHG_IPM_LEAVE(ercd) |
#define | LOG_GET_IPM_ENTER(p_intpri) |
#define | LOG_GET_IPM_LEAVE(ercd, intpri) |
関数 | |
void | initialize_interrupt (void) |
ER | chg_ipm (PRI intpri) |
ER | get_ipm (PRI *p_intpri) |
#define LOG_CHG_IPM_ENTER | ( | intpri | ) |
#define LOG_CHG_IPM_LEAVE | ( | ercd | ) |
#define LOG_DIS_INT_ENTER | ( | intno | ) |
interrupt.c の 56 行で定義されています。
#define LOG_DIS_INT_LEAVE | ( | ercd | ) |
interrupt.c の 60 行で定義されています。
#define LOG_ENA_INT_ENTER | ( | intno | ) |
interrupt.c の 64 行で定義されています。
#define LOG_ENA_INT_LEAVE | ( | ercd | ) |
interrupt.c の 68 行で定義されています。
#define LOG_GET_IPM_ENTER | ( | p_intpri | ) |
#define LOG_GET_IPM_LEAVE | ( | ercd, | |||
intpri | ) |
interrupt.c の 193 行で定義されています。
参照先 CHECK_INTPRI_CHGIPM, CHECK_TSKCTX, disdsp, dispatch, dspflg, E_OK, LOG_CHG_IPM_ENTER, LOG_CHG_IPM_LEAVE, p_runtsk, p_schedtsk, t_lock_cpu, t_sense_lock, t_set_ipm, t_unlock_cpu, と TIPM_ENAALL.
00194 { 00195 bool_t locked; 00196 ER ercd; 00197 00198 LOG_CHG_IPM_ENTER(intpri); 00199 CHECK_TSKCTX(); 00200 CHECK_INTPRI_CHGIPM(intpri); 00201 00202 locked = t_sense_lock(); 00203 if (!locked) { 00204 t_lock_cpu(); 00205 } 00206 t_set_ipm(intpri); 00207 if (intpri != TIPM_ENAALL) { 00208 dspflg = false; 00209 } 00210 else if (!disdsp) { 00211 dspflg = true; 00212 if (p_runtsk != p_schedtsk) { 00213 dispatch(); 00214 } 00215 } 00216 ercd = E_OK; 00217 if (!locked) { 00218 t_unlock_cpu(); 00219 } 00220 00221 error_exit: 00222 LOG_CHG_IPM_LEAVE(ercd); 00223 return(ercd); 00224 }
interrupt.c の 234 行で定義されています。
参照先 CHECK_TSKCTX, E_OK, LOG_GET_IPM_ENTER, LOG_GET_IPM_LEAVE, t_get_ipm, t_lock_cpu, t_sense_lock, と t_unlock_cpu.
00235 { 00236 bool_t locked; 00237 ER ercd; 00238 00239 LOG_GET_IPM_ENTER(p_intpri); 00240 CHECK_TSKCTX(); 00241 00242 locked = t_sense_lock(); 00243 if (!locked) { 00244 t_lock_cpu(); 00245 } 00246 *p_intpri = t_get_ipm(); 00247 ercd = E_OK; 00248 if (!locked) { 00249 t_unlock_cpu(); 00250 } 00251 00252 error_exit: 00253 LOG_GET_IPM_LEAVE(ercd, *p_intpri); 00254 return(ercd); 00255 }
void initialize_interrupt | ( | void | ) |
interrupt.c の 94 行で定義されています。
参照先 inhinib_table, interrupt_handler_initialization_block::inhno, interrupt_handler_initialization_block::int_entry, interrupt_request_initialization_block::intatr, intinib_table, interrupt_request_initialization_block::intno, interrupt_request_initialization_block::intpri, tnum_inhno, tnum_intno, x_config_int, と x_define_inh().
00095 { 00096 uint_t i; 00097 const INHINIB *p_inhinib; 00098 const INTINIB *p_intinib; 00099 00100 for (p_inhinib = inhinib_table, i = 0; i < tnum_inhno; p_inhinib++, i++) { 00101 x_define_inh(p_inhinib->inhno, p_inhinib->int_entry); 00102 } 00103 for (p_intinib = intinib_table, i = 0; i < tnum_intno; p_intinib++, i++) { 00104 x_config_int(p_intinib->intno, p_intinib->intatr, p_intinib->intpri); 00105 } 00106 }
Copyright © 2008 by Kijineko Inc.