#include "kernel_impl.h"
#include "check.h"
#include "task.h"
マクロ定義 | |
#define | LOG_RAS_TEX_ENTER(tskid, rasptn) |
#define | LOG_RAS_TEX_LEAVE(ercd) |
#define | LOG_IRAS_TEX_ENTER(tskid, rasptn) |
#define | LOG_IRAS_TEX_LEAVE(ercd) |
#define | LOG_DIS_TEX_ENTER() |
#define | LOG_DIS_TEX_LEAVE(ercd) |
#define | LOG_ENA_TEX_ENTER() |
#define | LOG_ENA_TEX_LEAVE(ercd) |
#define | LOG_SNS_TEX_ENTER() |
#define | LOG_SNS_TEX_LEAVE(state) |
#define | LOG_REF_TEX_ENTER(tskid, pk_rtex) |
#define | LOG_REF_TEX_LEAVE(ercd, pk_rtex) |
関数 | |
ER | ras_tex (ID tskid, TEXPTN rasptn) |
ER | iras_tex (ID tskid, TEXPTN rasptn) |
ER | dis_tex (void) |
ER | ena_tex (void) |
bool_t | sns_tex (void) |
ER | ref_tex (ID tskid, T_RTEX *pk_rtex) |
#define LOG_DIS_TEX_ENTER | ( | ) |
#define LOG_DIS_TEX_LEAVE | ( | ercd | ) |
#define LOG_ENA_TEX_ENTER | ( | ) |
#define LOG_ENA_TEX_LEAVE | ( | ercd | ) |
#define LOG_IRAS_TEX_ENTER | ( | tskid, | |||
rasptn | ) |
#define LOG_IRAS_TEX_LEAVE | ( | ercd | ) |
#define LOG_RAS_TEX_ENTER | ( | tskid, | |||
rasptn | ) |
#define LOG_RAS_TEX_LEAVE | ( | ercd | ) |
#define LOG_REF_TEX_ENTER | ( | tskid, | |||
pk_rtex | ) |
#define LOG_REF_TEX_LEAVE | ( | ercd, | |||
pk_rtex | ) |
#define LOG_SNS_TEX_ENTER | ( | ) |
#define LOG_SNS_TEX_LEAVE | ( | state | ) |
ER dis_tex | ( | void | ) |
task_except.c の 182 行で定義されています。
参照先 CHECK_TSKCTX_UNL, E_OBJ, E_OK, LOG_DIS_TEX_ENTER, LOG_DIS_TEX_LEAVE, NULL, p_runtsk, t_lock_cpu, と t_unlock_cpu.
参照元 task().
00183 { 00184 ER ercd; 00185 00186 LOG_DIS_TEX_ENTER(); 00187 CHECK_TSKCTX_UNL(); 00188 00189 t_lock_cpu(); 00190 if (p_runtsk->p_tinib->texrtn == NULL) { 00191 ercd = E_OBJ; 00192 } 00193 else { 00194 p_runtsk->enatex = false; 00195 ercd = E_OK; 00196 } 00197 t_unlock_cpu(); 00198 00199 error_exit: 00200 LOG_DIS_TEX_LEAVE(ercd); 00201 return(ercd); 00202 }
ER ena_tex | ( | void | ) |
task_except.c の 212 行で定義されています。
参照先 call_texrtn, CHECK_TSKCTX_UNL, E_OBJ, E_OK, LOG_ENA_TEX_ENTER, LOG_ENA_TEX_LEAVE, NULL, p_runtsk, t_lock_cpu, と t_unlock_cpu.
参照元 task().
00213 { 00214 ER ercd; 00215 00216 LOG_ENA_TEX_ENTER(); 00217 CHECK_TSKCTX_UNL(); 00218 00219 t_lock_cpu(); 00220 if (p_runtsk->p_tinib->texrtn == NULL) { 00221 ercd = E_OBJ; 00222 } 00223 else { 00224 p_runtsk->enatex = true; 00225 if (p_runtsk->texptn != 0U) { 00226 call_texrtn(); 00227 } 00228 ercd = E_OK; 00229 } 00230 t_unlock_cpu(); 00231 00232 error_exit: 00233 LOG_ENA_TEX_LEAVE(ercd); 00234 return(ercd); 00235 }
task_except.c の 145 行で定義されています。
参照先 CHECK_INTCTX_UNL, CHECK_PAR, CHECK_TSKID, E_OBJ, E_OK, get_tcb, i_lock_cpu, i_unlock_cpu, LOG_IRAS_TEX_ENTER, LOG_IRAS_TEX_LEAVE, NULL, p_runtsk, task_control_block::p_tinib, reqflg, task_control_block::texptn, task_initialization_block::texrtn, task_control_block::tstat, と TSTAT_DORMANT.
00146 { 00147 TCB *p_tcb; 00148 ER ercd; 00149 00150 LOG_IRAS_TEX_ENTER(tskid, rasptn); 00151 CHECK_INTCTX_UNL(); 00152 CHECK_TSKID(tskid); 00153 CHECK_PAR(rasptn != 0U); 00154 p_tcb = get_tcb(tskid); 00155 00156 i_lock_cpu(); 00157 if (TSTAT_DORMANT(p_tcb->tstat) || p_tcb->p_tinib->texrtn == NULL) { 00158 ercd = E_OBJ; 00159 } 00160 else { 00161 p_tcb->texptn |= rasptn; 00162 if (p_tcb == p_runtsk && p_runtsk->enatex) { 00163 reqflg = true; 00164 } 00165 ercd = E_OK; 00166 } 00167 i_unlock_cpu(); 00168 00169 error_exit: 00170 LOG_IRAS_TEX_LEAVE(ercd); 00171 return(ercd); 00172 }
task_except.c の 108 行で定義されています。
参照先 call_texrtn, CHECK_PAR, CHECK_TSKCTX_UNL, CHECK_TSKID_SELF, E_OBJ, E_OK, get_tcb_self, LOG_RAS_TEX_ENTER, LOG_RAS_TEX_LEAVE, NULL, p_runtsk, task_control_block::p_tinib, t_lock_cpu, t_unlock_cpu, task_control_block::texptn, task_initialization_block::texrtn, task_control_block::tstat, と TSTAT_DORMANT.
参照元 main_task().
00109 { 00110 TCB *p_tcb; 00111 ER ercd; 00112 00113 LOG_RAS_TEX_ENTER(tskid, rasptn); 00114 CHECK_TSKCTX_UNL(); 00115 CHECK_TSKID_SELF(tskid); 00116 CHECK_PAR(rasptn != 0U); 00117 p_tcb = get_tcb_self(tskid); 00118 00119 t_lock_cpu(); 00120 if (TSTAT_DORMANT(p_tcb->tstat) || p_tcb->p_tinib->texrtn == NULL) { 00121 ercd = E_OBJ; 00122 } 00123 else { 00124 p_tcb->texptn |= rasptn; 00125 if (p_tcb == p_runtsk && p_runtsk->enatex) { 00126 call_texrtn(); 00127 } 00128 ercd = E_OK; 00129 } 00130 t_unlock_cpu(); 00131 00132 error_exit: 00133 LOG_RAS_TEX_LEAVE(ercd); 00134 return(ercd); 00135 }
task_except.c の 263 行で定義されています。
参照先 CHECK_TSKCTX_UNL, CHECK_TSKID_SELF, E_OBJ, E_OK, task_control_block::enatex, get_tcb_self, LOG_REF_TEX_ENTER, LOG_REF_TEX_LEAVE, NULL, task_control_block::p_tinib, t_rtex::pndptn, t_lock_cpu, t_unlock_cpu, task_control_block::texptn, task_initialization_block::texrtn, t_rtex::texstat, task_control_block::tstat, TSTAT_DORMANT, TTEX_DIS, と TTEX_ENA.
00264 { 00265 TCB *p_tcb; 00266 ER ercd; 00267 00268 LOG_REF_TEX_ENTER(tskid, pk_rtex); 00269 CHECK_TSKCTX_UNL(); 00270 CHECK_TSKID_SELF(tskid); 00271 p_tcb = get_tcb_self(tskid); 00272 00273 t_lock_cpu(); 00274 if (TSTAT_DORMANT(p_tcb->tstat) || p_tcb->p_tinib->texrtn == NULL) { 00275 ercd = E_OBJ; 00276 } 00277 else { 00278 pk_rtex->texstat = (p_tcb->enatex) ? TTEX_ENA : TTEX_DIS; 00279 pk_rtex->pndptn = p_tcb->texptn; 00280 ercd = E_OK; 00281 } 00282 t_unlock_cpu(); 00283 00284 error_exit: 00285 LOG_REF_TEX_LEAVE(ercd, pk_rtex); 00286 return(ercd); 00287 }
bool_t sns_tex | ( | void | ) |
task_except.c の 245 行で定義されています。
参照先 LOG_SNS_TEX_ENTER, LOG_SNS_TEX_LEAVE, NULL, と p_runtsk.
00246 { 00247 bool_t state; 00248 00249 LOG_SNS_TEX_ENTER(); 00250 state = (p_runtsk != NULL && p_runtsk->enatex) ? false : true; 00251 LOG_SNS_TEX_LEAVE(state); 00252 return(state); 00253 }
Copyright © 2008 by Kijineko Inc.