00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00060 #ifndef TOPPERS_KERNEL_HPP_
00061 #define TOPPERS_KERNEL_HPP_
00062
00063 #include <toppers/complement.hpp>
00064
00065 #ifndef TOPPERS_HAS_ISR
00066 #define TOPPERS_HAS_ISR false
00067 #endif
00068
00069 namespace toppers
00070 {
00071
00073 enum function_code_type
00074 {
00075 tfn_cre_tsk = -5,
00076 tfn_del_tsk = -6,
00077 tfn_act_tsk = -7,
00078 tfn_can_act = -8,
00079 tfn_sta_tsk = -9,
00080 tfn_ext_tsk = -10,
00081 tfn_exd_tsk = -11,
00082 tfn_ter_tsk = -12,
00083 tfn_chg_pri = -13,
00084 tfn_get_pri = -14,
00085 tfn_ref_tsk = -15,
00086 tfn_ref_tst = -16,
00087
00088 tfn_slp_tsk = -17,
00089 tfn_tslp_tsk = -18,
00090 tfn_wup_tsk = -19,
00091 tfn_can_wup = -20,
00092 tfn_rel_wai = -21,
00093 tfn_sus_tsk = -22,
00094 tfn_rsm_tsk = -23,
00095 tfn_frsm_tsk = -24,
00096 tfn_dly_tsk = -25,
00097
00098 tfn_def_tex = -27,
00099 tfn_ras_tex = -28,
00100 tfn_dis_tex = -29,
00101 tfn_ena_tex = -30,
00102 tfn_sns_tex = -31,
00103 tfn_ref_tex = -32,
00104
00105 tfn_cre_sem = -33,
00106 tfn_del_sem = -34,
00107 tfn_sig_sem = -35,
00108 tfn_wai_sem = -37,
00109 tfn_pol_sem = -38,
00110 tfn_twai_sem = -39,
00111 tfn_ref_sem = -40,
00112
00113 tfn_cre_flg = -41,
00114 tfn_del_flg = -42,
00115 tfn_set_flg = -43,
00116 tfn_clr_flg = -44,
00117 tfn_wai_flg = -45,
00118 tfn_pol_flg = -46,
00119 tfn_twai_flg = -47,
00120 tfn_ref_flg = -48,
00121
00122 tfn_cre_dtq = -49,
00123 tfn_del_dtq = -50,
00124 tfn_snd_dtq = -53,
00125 tfn_psnd_dtq = -54,
00126 tfn_tsnd_dtq = -55,
00127 tfn_fsnd_dtq = -56,
00128 tfn_rcv_dtq = -57,
00129 tfn_prcv_dtq = -58,
00130 tfn_trcv_dtq = -59,
00131 tfn_ref_dtq = -60,
00132
00133 tfn_cre_mbx = -61,
00134 tfn_del_mbx = -62,
00135 tfn_snd_mbx = -63,
00136 tfn_rcv_mbx = -65,
00137 tfn_prcv_mbx = -66,
00138 tfn_trcv_mbx = -67,
00139 tfn_ref_mbx = -68,
00140
00141 tfn_cre_mpf = -69,
00142 tfn_del_mpf = -70,
00143 tfn_rel_mpf = -71,
00144 tfn_get_mpf = -73,
00145 tfn_pget_mpf = -74,
00146 tfn_tget_mpf = -75,
00147 tfn_ref_mpf = -76,
00148
00149 tfn_set_tim = -77,
00150 tfn_get_tim = -78,
00151
00152 tfn_cre_cyc = -79,
00153 tfn_del_cyc = -80,
00154 tfn_sta_cyc = -81,
00155 tfn_stp_cyc = -82,
00156 tfn_ref_cyc = -83,
00157
00158 tfn_rot_rdq = -85,
00159 tfn_get_tid = -86,
00160 tfn_loc_cpu = -89,
00161 tfn_unl_cpu = -90,
00162 tfn_dis_dsp = -91,
00163 tfn_ena_dsp = -92,
00164 tfn_sns_ctx = -93,
00165 tfn_sns_loc = -94,
00166 tfn_sns_dsp = -95,
00167 tfn_sns_dpn = -96,
00168 tfn_ref_sys = -97,
00169
00170 tfn_def_inh = -101,
00171 tfn_cre_isr = -102,
00172 tfn_del_isr = -103,
00173 tfn_ref_isr = -104,
00174 tfn_dis_int = -105,
00175 tfn_ena_int = -106,
00176 tfn_chg_ixx = -107,
00177 tfn_chg_ims = tfn_chg_ixx,
00178 tfn_get_ixx = -108,
00179 tfn_get_ims = tfn_get_ixx,
00180
00181 tfn_def_svc = -109,
00182 tfn_def_exc = -110,
00183 tfn_ref_cfg = -111,
00184 tfn_ref_ver = -112,
00185
00186 tfn_iact_tsk = -113,
00187 tfn_iwup_tsk = -114,
00188 tfn_irel_wai = -115,
00189 tfn_iras_tex = -116,
00190 tfn_isig_sem = -117,
00191 tfn_iset_flg = -118,
00192 tfn_ipsnd_dtq= -119,
00193 tfn_ifsnd_dtq= -120,
00194 tfn_irot_rdq = -121,
00195 tfn_iget_tid = -122,
00196 tfn_iloc_cpu = -123,
00197 tfn_iunl_cpu = -124,
00198 tfn_isig_tim = -125,
00199
00200 tfn_cre_mtx = -129,
00201 tfn_del_mtx = -130,
00202 tfn_unl_mtx = -131,
00203 tfn_loc_mtx = -133,
00204 tfn_ploc_mtx = -134,
00205 tfn_tloc_mtx = -135,
00206 tfn_ref_mtx = -136,
00207
00208 tfn_cre_mbf = -137,
00209 tfn_del_mbf = -138,
00210 tfn_snd_mbf = -141,
00211 tfn_psnd_mbf = -142,
00212 tfn_tsnd_mbf = -143,
00213 tfn_rcv_mbf = -145,
00214 tfn_prcv_mbf = -146,
00215 tfn_trcv_mbf = -147,
00216 tfn_ref_mbf = -148,
00217
00218 tfn_cre_por = -149,
00219 tfn_del_por = -150,
00220 tfn_cal_por = -151,
00221 tfn_tcal_por = -152,
00222 tfn_acp_por = -153,
00223 tfn_pacp_por = -154,
00224 tfn_tacp_por = -155,
00225 tfn_fwd_por = -156,
00226 tfn_rpl_rdv = -157,
00227 tfn_ref_por = -158,
00228 tfn_ref_rdv = -159,
00229
00230 tfn_cre_mpl = -161,
00231 tfn_del_mpl = -162,
00232 tfn_rel_mpl = -163,
00233 tfn_get_mpl = -165,
00234 tfn_pget_mpl = -166,
00235 tfn_tget_mpl = -167,
00236 tfn_ref_mpl = -168,
00237
00238 tfn_cre_alm = -169,
00239 tfn_del_alm = -170,
00240 tfn_sta_alm = -171,
00241 tfn_stp_alm = -172,
00242 tfn_ref_alm = -173,
00243
00244 tfn_def_ovr = -177,
00245 tfn_sta_ovr = -178,
00246 tfn_stp_ovr = -179,
00247 tfn_ref_ovr = -180,
00248
00249 tfn_acre_tsk = -193,
00250 tfn_acre_sem = -194,
00251 tfn_acre_flg = -195,
00252 tfn_acre_dtq = -196,
00253 tfn_acre_mbx = -197,
00254 tfn_acre_mtx = -198,
00255 tfn_acre_mbf = -199,
00256 tfn_acre_por = -200,
00257 tfn_acre_mpf = -201,
00258 tfn_acre_mpl = -202,
00259 tfn_acre_cyc = -203,
00260 tfn_acre_alm = -204,
00261 tfn_acre_isr = -205,
00262
00263 tfn_vxsns_ctx= -225,
00264 tfn_vxsns_loc= -226,
00265 tfn_vxsns_dsp= -227,
00266 tfn_vxsns_dpn= -228,
00267 tfn_vxsns_tex= -229,
00268 tfn_vsns_ini = -232,
00269
00270 tfn_vxget_tim= -233,
00271
00272 tfn_cal_svc = -32767
00273 };
00274
00286 template <function_code_type Fncd>
00287 struct has_svc
00288 {
00289 enum
00290 {
00292 value = true
00293 };
00294 };
00295
00296 template <> struct has_svc<tfn_cre_tsk> { enum { value = (sizeof cre_tsk(0, 0) != sizeof(large_type)) }; };
00297 template <> struct has_svc<tfn_del_tsk> { enum { value = (sizeof del_tsk(0) != sizeof(large_type)) }; };
00298 template <> struct has_svc<tfn_sta_tsk> { enum { value = (sizeof sta_tsk(0, 0) != sizeof(large_type)) }; };
00299 #ifdef exd_tsk
00300 template <> struct has_svc<tfn_exd_tsk> { enum { value = true }; }
00301 #else
00302 template <> struct has_svc<tfn_exd_tsk> { enum { value = (sizeof test_svc(exd_tsk) == sizeof(yes_type)) }; };
00303 #endif
00304 template <> struct has_svc<tfn_ref_tsk> { enum { value = (sizeof ref_tsk(0, 0) != sizeof(large_type)) }; };
00305 template <> struct has_svc<tfn_ref_tst> { enum { value = (sizeof ref_tst(0, 0) != sizeof(large_type)) }; };
00306
00307 template <> struct has_svc<tfn_def_tex> { enum { value = (sizeof def_tex(0, 0) != sizeof(large_type)) }; };
00308 template <> struct has_svc<tfn_ref_tex> { enum { value = (sizeof ref_tex(0, 0) != sizeof(large_type)) }; };
00309
00310 template <> struct has_svc<tfn_cre_sem> { enum { value = (sizeof cre_sem(0, 0) != sizeof(large_type)) }; };
00311 template <> struct has_svc<tfn_del_sem> { enum { value = (sizeof del_sem(0) != sizeof(large_type)) }; };
00312 template <> struct has_svc<tfn_ref_sem> { enum { value = (sizeof ref_sem(0, 0) != sizeof(large_type)) }; };
00313
00314 template <> struct has_svc<tfn_cre_flg> { enum { value = (sizeof cre_flg(0, 0) != sizeof(large_type)) }; };
00315 template <> struct has_svc<tfn_del_flg> { enum { value = (sizeof del_flg(0) != sizeof(large_type)) }; };
00316 template <> struct has_svc<tfn_ref_flg> { enum { value = (sizeof ref_flg(0, 0) != sizeof(large_type)) }; };
00317
00318 template <> struct has_svc<tfn_cre_dtq> { enum { value = (sizeof cre_dtq(0, 0) != sizeof(large_type)) }; };
00319 template <> struct has_svc<tfn_del_dtq> { enum { value = (sizeof del_dtq(0) != sizeof(large_type)) }; };
00320 template <> struct has_svc<tfn_ref_dtq> { enum { value = (sizeof ref_dtq(0, 0) != sizeof(large_type)) }; };
00321
00322 template <> struct has_svc<tfn_cre_mbx> { enum { value = (sizeof cre_mbx(0, 0) != sizeof(large_type)) }; };
00323 template <> struct has_svc<tfn_del_mbx> { enum { value = (sizeof del_mbx(0) != sizeof(large_type)) }; };
00324 template <> struct has_svc<tfn_ref_mbx> { enum { value = (sizeof ref_mbx(0, 0) != sizeof(large_type)) }; };
00325
00326 template <> struct has_svc<tfn_cre_mpf> { enum { value = (sizeof cre_mpf(0, 0) != sizeof(large_type)) }; };
00327 template <> struct has_svc<tfn_del_mpf> { enum { value = (sizeof del_mpf(0) != sizeof(large_type)) }; };
00328 template <> struct has_svc<tfn_ref_mpf> { enum { value = (sizeof ref_mpf(0, 0) != sizeof(large_type)) }; };
00329
00330 template <> struct has_svc<tfn_cre_cyc> { enum { value = (sizeof cre_cyc(0, 0) != sizeof(large_type)) }; };
00331 template <> struct has_svc<tfn_del_cyc> { enum { value = (sizeof del_cyc(0) != sizeof(large_type)) }; };
00332 template <> struct has_svc<tfn_ref_cyc> { enum { value = (sizeof ref_cyc(0, 0) != sizeof(large_type)) }; };
00333
00334 template <> struct has_svc<tfn_ref_sys> { enum { value = (sizeof ref_sys(0) != sizeof(large_type)) }; };
00335
00336 template <> struct has_svc<tfn_def_inh> { enum { value = (sizeof def_inh(0, 0) != sizeof(large_type)) }; };
00337 template <> struct has_svc<tfn_cre_isr> { enum { value = (sizeof cre_isr(0, 0) != sizeof(large_type)) }; };
00338 template <> struct has_svc<tfn_del_isr> { enum { value = (sizeof del_isr(0) != sizeof(large_type)) }; };
00339 template <> struct has_svc<tfn_ref_isr> { enum { value = (sizeof ref_isr(0, 0) != sizeof(large_type)) }; };
00340 template <> struct has_svc<tfn_dis_int> { enum { value = (sizeof dis_int(0) != sizeof(large_type)) }; };
00341 template <> struct has_svc<tfn_ena_int> { enum { value = (sizeof ena_int(0) != sizeof(large_type)) }; };
00342 template <> struct has_svc<tfn_chg_ixx> { enum { value = (sizeof chg_ims(0) != sizeof(large_type)) }; };
00343 template <> struct has_svc<tfn_get_ixx> { enum { value = (sizeof chg_ims(0) != sizeof(large_type)) }; };
00344 template <> struct has_svc<tfn_def_svc> { enum { value = (sizeof def_svc(0, 0) != sizeof(large_type)) }; };
00345 template <> struct has_svc<tfn_def_exc> { enum { value = (sizeof def_exc(0, 0) != sizeof(large_type)) }; };
00346 template <> struct has_svc<tfn_ref_cfg> { enum { value = (sizeof ref_cfg(0) != sizeof(large_type)) }; };
00347 template <> struct has_svc<tfn_ref_ver> { enum { value = (sizeof ref_ver(0) != sizeof(large_type)) }; };
00348
00349 template <> struct has_svc<tfn_cre_mtx> { enum { value = (sizeof cre_mtx(0, 0) != sizeof(large_type)) }; };
00350 template <> struct has_svc<tfn_del_mtx> { enum { value = (sizeof del_mtx(0) != sizeof(large_type)) }; };
00351 template <> struct has_svc<tfn_unl_mtx> { enum { value = (sizeof unl_mtx(0) != sizeof(large_type)) }; };
00352 template <> struct has_svc<tfn_loc_mtx> { enum { value = (sizeof loc_mtx(0) != sizeof(large_type)) }; };
00353 template <> struct has_svc<tfn_ploc_mtx> { enum { value = (sizeof ploc_mtx(0) != sizeof(large_type)) }; };
00354 template <> struct has_svc<tfn_tloc_mtx> { enum { value = (sizeof tloc_mtx(0, 0) != sizeof(large_type)) }; };
00355 template <> struct has_svc<tfn_ref_mtx> { enum { value = (sizeof ref_mtx(0, 0) != sizeof(large_type)) }; };
00356
00357 template <> struct has_svc<tfn_cre_mbf> { enum { value = (sizeof cre_mbf(0, 0) != sizeof(large_type)) }; };
00358 template <> struct has_svc<tfn_del_mbf> { enum { value = (sizeof del_mbf(0) != sizeof(large_type)) }; };
00359 template <> struct has_svc<tfn_snd_mbf> { enum { value = (sizeof snd_mbf(0, 0, 0) != sizeof(large_type)) }; };
00360 template <> struct has_svc<tfn_psnd_mbf> { enum { value = (sizeof psnd_mbf(0, 0, 0) != sizeof(large_type)) }; };
00361 template <> struct has_svc<tfn_tsnd_mbf> { enum { value = (sizeof tsnd_mbf(0, 0, 0, 0) != sizeof(large_type)) }; };
00362 template <> struct has_svc<tfn_rcv_mbf> { enum { value = (sizeof rcv_mbf(0, 0) != sizeof(large_type)) }; };
00363 template <> struct has_svc<tfn_prcv_mbf> { enum { value = (sizeof prcv_mbf(0, 0) != sizeof(large_type)) }; };
00364 template <> struct has_svc<tfn_trcv_mbf> { enum { value = (sizeof trcv_mbf(0, 0, 0) != sizeof(large_type)) }; };
00365 template <> struct has_svc<tfn_ref_mbf> { enum { value = (sizeof ref_mbf(0, 0) != sizeof(large_type)) }; };
00366
00367 template <> struct has_svc<tfn_cre_por> { enum { value = (sizeof cre_por(0, 0) != sizeof(large_type)) }; };
00368 template <> struct has_svc<tfn_del_por> { enum { value = (sizeof del_por(0) != sizeof(large_type)) }; };
00369 template <> struct has_svc<tfn_cal_por> { enum { value = (sizeof cal_por(0, 0, 0, 0) != sizeof(large_type)) }; };
00370 template <> struct has_svc<tfn_tcal_por> { enum { value = (sizeof tcal_por(0, 0, 0, 0, 0) != sizeof(large_type)) }; };
00371 template <> struct has_svc<tfn_acp_por> { enum { value = (sizeof acp_por(0, 0, 0, 0) != sizeof(large_type)) }; };
00372 template <> struct has_svc<tfn_pacp_por> { enum { value = (sizeof pacp_por(0, 0, 0, 0) != sizeof(large_type)) }; };
00373 template <> struct has_svc<tfn_tacp_por> { enum { value = (sizeof tacp_por(0, 0, 0, 0, 0) != sizeof(large_type)) }; };
00374 template <> struct has_svc<tfn_fwd_por> { enum { value = (sizeof fwd_por(0, 0, 0, 0, 0) != sizeof(large_type)) }; };
00375 template <> struct has_svc<tfn_rpl_rdv> { enum { value = (sizeof rpl_rdv(0, 0, 0) != sizeof(large_type)) }; };
00376 template <> struct has_svc<tfn_ref_por> { enum { value = (sizeof ref_por(0, 0) != sizeof(large_type)) }; };
00377 template <> struct has_svc<tfn_ref_rdv> { enum { value = (sizeof ref_rdv(0, 0) != sizeof(large_type)) }; };
00378
00379 template <> struct has_svc<tfn_cre_mpl> { enum { value = (sizeof cre_mpl(0, 0) != sizeof(large_type)) }; };
00380 template <> struct has_svc<tfn_del_mpl> { enum { value = (sizeof del_mpl(0) != sizeof(large_type)) }; };
00381 template <> struct has_svc<tfn_rel_mpl> { enum { value = (sizeof rel_mpl(0, 0) != sizeof(large_type)) }; };
00382 template <> struct has_svc<tfn_get_mpl> { enum { value = (sizeof get_mpl(0, 0, 0) != sizeof(large_type)) }; };
00383 template <> struct has_svc<tfn_pget_mpl> { enum { value = (sizeof pget_mpl(0, 0, 0) != sizeof(large_type)) }; };
00384 template <> struct has_svc<tfn_tget_mpl> { enum { value = (sizeof tget_mpl(0, 0, 0, 0) != sizeof(large_type)) }; };
00385 template <> struct has_svc<tfn_ref_mpl> { enum { value = (sizeof ref_mpl(0, 0) != sizeof(large_type)) }; };
00386
00387 template <> struct has_svc<tfn_cre_alm> { enum { value = (sizeof cre_alm(0, 0) != sizeof(large_type)) }; };
00388 template <> struct has_svc<tfn_del_alm> { enum { value = (sizeof del_alm(0) != sizeof(large_type)) }; };
00389 template <> struct has_svc<tfn_sta_alm> { enum { value = (sizeof sta_alm(0, 0) != sizeof(large_type)) }; };
00390 template <> struct has_svc<tfn_stp_alm> { enum { value = (sizeof stp_alm(0) != sizeof(large_type)) }; };
00391 template <> struct has_svc<tfn_ref_alm> { enum { value = (sizeof ref_alm(0, 0) != sizeof(large_type)) }; };
00392
00393 template <> struct has_svc<tfn_def_ovr> { enum { value = (sizeof def_ovr(0) != sizeof(large_type)) }; };
00394 template <> struct has_svc<tfn_sta_ovr> { enum { value = (sizeof sta_ovr(0, 0) != sizeof(large_type)) }; };
00395 template <> struct has_svc<tfn_stp_ovr> { enum { value = (sizeof stp_ovr(0) != sizeof(large_type)) }; };
00396 template <> struct has_svc<tfn_ref_ovr> { enum { value = (sizeof ref_ovr(0, 0) != sizeof(large_type)) }; };
00397
00398 template <> struct has_svc<tfn_acre_tsk> { enum { value = (sizeof acre_tsk(0) != sizeof(large_type)) }; };
00399 template <> struct has_svc<tfn_acre_sem> { enum { value = (sizeof acre_sem(0) != sizeof(large_type)) }; };
00400 template <> struct has_svc<tfn_acre_flg> { enum { value = (sizeof acre_flg(0) != sizeof(large_type)) }; };
00401 template <> struct has_svc<tfn_acre_dtq> { enum { value = (sizeof acre_dtq(0) != sizeof(large_type)) }; };
00402 template <> struct has_svc<tfn_acre_mbx> { enum { value = (sizeof acre_mbx(0) != sizeof(large_type)) }; };
00403 template <> struct has_svc<tfn_acre_mtx> { enum { value = (sizeof acre_mtx(0) != sizeof(large_type)) }; };
00404 template <> struct has_svc<tfn_acre_mbf> { enum { value = (sizeof acre_mbf(0) != sizeof(large_type)) }; };
00405 template <> struct has_svc<tfn_acre_por> { enum { value = (sizeof acre_por(0) != sizeof(large_type)) }; };
00406 template <> struct has_svc<tfn_acre_mpf> { enum { value = (sizeof acre_mpf(0) != sizeof(large_type)) }; };
00407 template <> struct has_svc<tfn_acre_mpl> { enum { value = (sizeof acre_mpl(0) != sizeof(large_type)) }; };
00408 template <> struct has_svc<tfn_acre_cyc> { enum { value = (sizeof acre_cyc(0) != sizeof(large_type)) }; };
00409 template <> struct has_svc<tfn_acre_alm> { enum { value = (sizeof acre_alm(0) != sizeof(large_type)) }; };
00410 template <> struct has_svc<tfn_acre_isr> { enum { value = (sizeof acre_isr(0) != sizeof(large_type)) }; };
00411
00412 template <> struct has_svc<tfn_vxget_tim> { enum { value = (sizeof vxget_tim(0) != sizeof(large_type)) }; };
00413
00414 template <> struct has_svc<tfn_cal_svc> { enum { value = (sizeof cal_svc(0, 0, 0, 0, 0, 0) != sizeof(large_type)) }; };
00415
00417 enum object_type
00418 {
00419 obj_semaphore = 128,
00420 obj_eventflag = 129,
00421 obj_dataqueue = 130,
00422 obj_mailbox = 131,
00423 obj_mutex = 132,
00424 obj_messagebuffer = 133,
00425 obj_rendezvousport = 135,
00426 obj_rendezvous = 136,
00427 obj_fmempool = 137,
00428 obj_vmempool = 138,
00429 obj_task = 139,
00430 obj_readyqueue = 141,
00431 obj_timerqueue = 142,
00432 obj_cyclichandler = 144,
00433 obj_alarmhandler = 145,
00434 obj_overrunhandler = 146,
00435 obj_isr = 147,
00436 obj_kernelstatus = 148,
00437 obj_taskexception = 149,
00438 obj_cpuexception = 150,
00439 obj_all = -1,
00440 obj_none = 0
00441 };
00442
00453 template <object_type ObjType>
00454 struct has_obj
00455 {
00456 enum
00457 {
00459 value = true
00460 };
00461 };
00462
00463 template <> struct has_obj<obj_mutex> { enum { value = has_svc<tfn_loc_mtx>::value }; };
00464 template <> struct has_obj<obj_messagebuffer> { enum { value = has_svc<tfn_snd_mbf>::value }; };
00465 template <> struct has_obj<obj_rendezvousport> { enum { value = has_svc<tfn_cal_por>::value }; };
00466 template <> struct has_obj<obj_rendezvous> { enum { value = has_svc<tfn_rpl_rdv>::value }; };
00467 template <> struct has_obj<obj_vmempool> { enum { value = has_svc<tfn_get_mpl>::value }; };
00468 template <> struct has_obj<obj_alarmhandler> { enum { value = has_svc<tfn_sta_alm>::value }; };
00469 template <> struct has_obj<obj_overrunhandler> { enum { value = has_svc<tfn_sta_ovr>::value }; };
00470 template <> struct has_obj<obj_isr> { enum { value = has_svc<tfn_cre_isr>::value || TOPPERS_HAS_ISR }; };
00471
00473 enum task_context_tag
00474 {
00476 task_context = 1
00477 };
00478
00480 enum non_task_context_tag
00481 {
00483 non_task_context = 2
00484 };
00485
00487 enum context_independent_tag
00488 {
00490 context_independent = 0
00491 };
00492
00494 enum forever_tag
00495 {
00497 forever = TMO_FEVR
00498 };
00499
00501 enum polling_tag
00502 {
00504 polling = TMO_POL
00505 };
00506
00508 enum normal_tag
00509 {
00511 normal = 0
00512 };
00513
00515 enum forced_tag
00516 {
00518 forced = -3
00519 };
00520
00529 template <bool Sense>
00530 inline bool sense_kernel()
00531 {
00532 return vsns_ini();
00533 }
00534
00535 template <>
00536 inline bool sense_kernel<false>()
00537 {
00538 return false;
00539 }
00540
00541 }
00542
00543 #endif // ! TOPPERS_KERNEL_HPP_