
		TOPPERS/FMPͥ
		ѹ

		бС: Release 1.2.0
		ǽ: 2011ǯ31

ΥɥȤϡTOPPERS/FMPͥRelease 0.A.0ʹߤѹ
˵ҤΤǤ롥

----------------------------------------------------------------------
 TOPPERS/FMP Kernel
     Toyohashi Open Platform for Embedded Real-Time Systems/
     Flexible MultiProcessor Kernel

 Copyright (C) 2005-2011 by Embedded and Real-Time Systems Laboratory
             Graduate School of Information Science, Nagoya Univ., JAPAN
 
 嵭Ԥϡʲ(1)(4)ξ˸¤ꡤܥեȥ
 ܥեȥѤΤޤࡥʲƱˤѡʣ
 ѡۡʰʲѤȸƤ֡ˤ뤳Ȥ̵ǵ롥
 (1) ܥեȥ򥽡ɤηѤˤϡ嵭
     ɽѾ浪Ӳ̵ݾڵ꤬Τޤޤηǥ
     ˴ޤޤƤ뤳ȡ
 (2) ܥեȥ򡤥饤֥ʤɡ¾Υեȥȯ˻
     ѤǤǺۤˤϡۤȼɥȡ
     ԥޥ˥奢ʤɡˤˡ嵭ɽѾ浪Ӳ
     ̵ݾڵǺܤ뤳ȡ
 (3) ܥեȥ򡤵Ȥ߹ʤɡ¾Υեȥȯ˻
     ѤǤʤǺۤˤϡΤ줫ξ
     ȡ
   (a) ۤȼɥȡѼԥޥ˥奢ʤɡˤˡ嵭
       ɽѾ浪Ӳ̵ݾڵǺܤ뤳ȡ
   (b) ۤη֤̤ˡˤäơTOPPERSץȤ
       𤹤뤳ȡ
 (4) ܥեȥѤˤľŪޤϴŪ뤤ʤ»
     ⡤嵭ԤTOPPERSץȤդ뤳ȡ
     ޤܥեȥΥ桼ޤϥɥ桼Τʤ
     ͳ˴Ťᤫ⡤嵭ԤTOPPERSץȤ
     դ뤳ȡ
 
 ܥեȥϡ̵ݾڤ󶡤ƤΤǤ롥嵭Ԥ
 TOPPERSץȤϡܥեȥ˴ؤơλŪ
 ФŬޤơʤݾڤԤʤޤܥեȥ
 ѤˤľŪޤϴŪʤ»˴ؤƤ⡤
 Ǥʤ
 
 @(#) $Id: version.txt 785 2011-03-01 06:45:14Z ertl-honda $
----------------------------------------------------------------------
        TOPPERS/FMPͥ
        Release 1.1.1  1.2.0 ؤѹ
        ꡼ 2010-xx-xx

ѹΥꥹ

ASP ͥ 1.6.0ɽ
	cfgοС1.6ˤб
		- offsetof_TINIB_stkszoffsetof_TINIB_stkμҤ򥿡å
		  ¸˰ư
	
	桼ƥƥν
		- genoffsetˡǥå뵡ǽɲáκݤˡ
		  ɤ
	
	¾ν
		- TCBpriorityեɤ򡤾郎uint_8褦˽
		- åȰ¸SIL_ENDIAN_BIGSIL_ENDIAN_LITTLEƤ
		  ʤˡsil.hǥ顼򸡽Ф褦˽
		- ƥǽsysog_logmasksyslog_lowmask_notνͤ
		- makerelease򡤥եνʣå褦˽
		- test_utm1Υ顼å
	
	ɥȤν¡Ȥν
	
	Сֹι
		- ͥΥСֹ򹹿
	
	åȰ¸׽ս1.5.0  1.6.0
	
	(1) makeoffset.cν
		- makeoffset.cˡsil_endianؿɲäʤˤꡤgenoffset
		  ǥå뵡ǽͭˤʤˡ
		- Хϥɥĥѥåбˤϡleftotmե
		  ɤޤޤƤ뤫ǧ롥
		- offset.hѲʤȤǧ롥
	
	(2) ͼܥơ֥ΥåȰ¸ν
		- ʲ2Ԥtarget_def.csvʤޤϤեˤ롥
			offsetof_TINIB_stksz,"offsetof(TINIB,stksz)"
			offsetof_TINIB_stk,"offsetof(TINIB,stk)"
		 Release 1.5.0ˤ뽤򸵤᤹
	
	(3) target_fput_logμ¤γǧʻͤ줿櫓ǤϤʤ
		- target_fput_logߥå֤ǸƤӽФ褦ˤʤäƤ뤫
		  ǧ롥

ASP ͥ 1.5.0ɽ
	ͥγߤCPU㳰ΰθľ
		- ͥγߤˡĥ
		- ͥγߥϥɥϡͥνͳ
		  ʤȤܤȤʥåȰ¸ˡ
		- CPU㳰ϥɥνˤ륫ͥCPU㳰ΰ
		  ꡥ
	
	chg_ipmget_ipmλѹ
		- chg_ipmget_ipmϡCPUå֤ǤϸƤ٤ʤΤȤ
	- ȼäƥƥȥץ
	
	޳߽ǸƤӽФialm_timδ֤ѹ
		- current_timeιˡ।٥ȤνԤ褦ѹ
		- ͭʺǾΥƥȤmin_timeƳ
		- pend_updateѻߡ
	
	ΥåκǾͥåɲ
		- å0ξΥ顼򡤥å¸ǸС
		- åȰ¸ǡΥåκǾͤǤ褦
		  ˤ
	
	ƥȥ֥åɲ
		- åȰ¸ǡƥȥ֥åTSKINICTXB
		  ѤǤ褦ˤ
	
	åȰ¸̾ΤΥ͡ˡѹ
		- åȰ¸å¸黲Ȥ̾ΤΥ
		  ͡൭Ҥ򡤥åȰ¸˰ư
	
	ĥѥåɲ
		- ߥ塼ƥåǽĥѥåХϥɥ鵡ǽĥѥ
		  ͥٳĥѥå򡤰̸եɲá
		- Хϥɥ鵡ǽĥؤбˡ򡤥ݡƥ󥰥ɤ˵ܡ
	
	ݡȤ뵡ǽ̤ޥˡѹ
		- åȰ¸TOPPERS_TARGET_SUPPORT_XXXXXޥ
		  Сkernel.hTOPPERS_SUPPORT_XXXXXޥˡѹ
	
	ƥǽν
		- syslog_initializeƤФΥνϤб
		- sysog_logmasksyslog_lowmask_notνͤ
	
	ƥȥ饤֥ν
		- test_lib.htest_lib.ctestǥ쥯ȥ꤫顤줾include
		  libraryǥ쥯ȥ˰ư
		- syslog_flushؿɲálogtask_flush˻ѡ
		- test_finishؿɲáƥȥץext_ker˻ѡ
		- ʾȼäƥƥȥץ
	
	configureγĥ
		- MakefileΥƥץ졼Ȥꤹ뤿Υץɲá
	
	¾ΥХեå
		- kernel_impl.hΥޥ̾ν
		- kernel.tfʸˡߥν
	
	¾ν
		- CTXBTSKCTXB̾ѹ
		- ext_tskǡʤϤνäˤϡE_SYS֤
		- call_texrtndispatchƤӽФ
		- make_non_waitwait.cwait.h˰ư
		- xsns_xpnξĹʾＰ
		- TA_DISINTTA_LEVELitron.h
		- LOG_TEX_LEAVE2ѥ᡼
		- ץMakefileˡOMIT_WARNING_ALLOMIT_OPTIMIZATIONɲá
		- get_utm˴ؤƥ(1)test_utm1ˤɲá
		- test_dlynse.cɽ
	
	ɥȤν¡Ȥν
		- ǽĥ塼˥󥰥ɤ˴ؤơ桼ޥ˥奢˵ܡ
		- 塼饤֥ؿ˴ؤơ桼ޥ˥奢˵ܡ
		- ƥεưν˴ؤơ桼ޥ˥奢˵ܡ
		- ߷ץȽ
	
	Сֹι
		- ͥͤΥСֹ桤ͥΥСֹ򹹿
	
	åȰ¸׽ս1.4.0  1.5.0
	
	(1) ͥγߤΰѹ
		- ͥγߥϥɥθƤӽФˤĤơޤǤι
		  ѹ֥åȰ¸ ݡƥ󥰥ɡפ6.6.7
		  ε̤˼Ƥ뤫å롥
		- TA_NONKERNELѤǤ褦ˤˤϡtarget.tfǡ
		  TARGET_INHATRTA_NONKERNELꤹ롥
		- ѥ2Υƥץ졼ȥեΥå¸ˡ
		  INTNO_FIX_KERNELINHNO_FIX_KERNELINTNO_FIX_NONKERNEL
		  INHNO_FIX_NONKERNELUSE_INHINIB_TABLEUSE_INTINIB_TABLEΥݡ
		  Ȥɲä줿ΤǡѤǤˤϻѤ褦˽롥
		- ͥγߥϥɥνˤĤơ֥åȰ
		  ¸ ݡƥ󥰥ɡפ6.6.1ε̤˼Ƥ뤳
		  ǧ롥
	
	(2) ͥCPU㳰ΰѹ
		- ͥCPU㳰ϥɥθƤӽФˤĤơޤǤι
		  ѹ֥åȰ¸ ݡƥ󥰥ɡפ6.7.1
		  εҤ򻲾Ȥơ롥
	
	(3) åȰ¸̾ΤΥ͡ɲ
		- åȰ¸å¸黲Ȥ̾ΤΥ
		  ͡൭Ҥ򡤥åȰ¸ɲä롥åȰ¸ȥ
		  װ¸δ֤ǤƱͤѹԤȤ˾ޤ
		  arch/logtrace/trace_config.c̾ΤˤĤƤϡ
		  Ȱ¸ǥ͡ह롥
	
	(4) åȰ¸ǥݡȤ뵡ǽ򼨤ޥѹ
		- åȰ¸ƤTOPPERS_SUPPORT_DIS_INT
		  TOPPERS_TARGET_SUPPORT_DIS_INTˡTOPPERS_SUPPORT_ENA_INT
		  TOPPERS_TARGET_SUPPORT_ENA_INTˡTOPPERS_SUPPORT_GET_UTM
		  TOPPERS_TARGET_SUPPORT_GET_UTMˡ줾ѹ롥
	
	(5) ƥȥ֥åη̾ѹ
		- CTXBTSKCTXB̾ѹ롥
	
	(6) ͼܥơ֥ΥåȰ¸ν
		- ʲ2Ԥtarget_def.csvʤޤϤեˤ˲ä롥
			offsetof_TINIB_stksz,"offsetof(TINIB,stksz)"
			offsetof_TINIB_stk,"offsetof(TINIB,stk)"
		 ߤ줿USE_TSKINICTXBȤˤɬפʤ
		 Release 1.6ʹߤѤˤϡνɬפϤʤ
	
	(7) ޥν
		- LOG_TEX_LEAVE2ѥ᡼줿ΤǡLOG_TEX_LEAVE
		  Ƥˤϡѹ롥
	
	(8) ȥåץ⥸塼νbssΥꥢάƤ
		Τߡ
		- ƥǽѤˤϡȥåץ⥸塼ˡ
		  syslog_logmasksyslog_lowmask_not0˽륳ɤɲä롥
		- ȥ졼ϿΥץ륳ɤȤ߹Ǥˤϡ
	      ȥåץ⥸塼ˡtrace_mode0˽륳ɤɲä롥
	
	(9) ΥåκǾͥåʥץ
		- åȰ¸ˡΥåκǾͤå
		  ˤϡǾͤTARGET_MIN_STKSZ롥
	
	(10) Хϥɥ鵡ǽĥؤбʥץ
		- Хϥɥ鵡ǽĥѥåб롥бˡˤĤ
		  ϡ֥åȰ¸ ݡƥ󥰥ɡΡ#ifdef
		  TOPPERS_SUPPORT_OVRHDRפսȡ5.76.14򻲾Ȥ뤳ȡ

ե졼(kernel.tf)ν
  DEF_INHΥѥ᡼顼åʤν  
  顼åASPȤ졥
  ʳֹDEF_INH()/CFG_INT()/ATT_ISR()ˤƤ
    ɤ֤ʤν
  󥿥ΥåƬɥ쥹Υåʤʤ  
        
ter_tsk()Υǥåɥå򥳡ɤν

dly_tsk()T_CHECK_DISPATCH(my_p_pcb)ѤƥǥѥåΥå
  򤹤褦ѹ
  
ǥѥåػ߾֤ǸƤӽФǽAPIپ֤ǸƤӽФ̵¥
  פȤʤ 

MakefileǤΥץåޥɲá

åβؿǹԤäƤdspreqΥåȥǥѥå
  ƤӽФAPIǵҤ褦ѹ
  Хåμδط
  ؿ
    release_tsk_lock_and_dispatch
    release_obj_lock_and_dispatch
    release_dual_tsk_lock_and_dispatch

γ٥åκݡ֥ȥåνؿְ̾äƸƤӽФ
  Ƥν
  
åؿǡwhile()򵭽ҤƤ硤Хåμᡤ
  ʬľܥ꥿󤻤breakwhile()ȴ褦˽

ΨΤᡤcall_texrtn()ΰPCB *my_p_pcb ɲá
      
ץץΥСIDɽͤѹ

iras_tex()i_lock_cpu()ǤϤʤi_unlock_cpu()ƤӽФ
  
  
iset_flg()i_lock_cpu()ǤϤʤt_lock_cpu()ƤӽФƤ
  
  
ͥƥiunl_spn()CPUå롼

ter_tsk()(ץåγ٥å)ǡ֥Ԥʳ
  ξ֤ξΥ롼ǡԤ֡ʥ֥ԤʳˤΥ
  ФƤwait_dequeue_tmevtb()ƤӽФƤ

ter_tsk()(ץåγ٥å)ǡư׵ᥭ塼
  ꡤ¾ץå˥ޥ졼󤢤Υɤǡ
  dispatch_request()ͤåƤΥѥǤɬפʤ
  
  
ter_tsk()(㥤ȥå)ǡ¾ؤΥ塼󥰤
  ڥǥ󥰤Ƥ硤ޥ졼ȵưθ塤ǥѥå
  Ȥ׵᤹ɬפ硤dispatch_request()ΰ˥ޥ
  PCBꤷƤ

ץץǥХ륿ξΥ4Ѥμϥ
  ȥ顼ϥɥsample.cfgǤ

ter_tsk()(ץåγ٥å)ǡư׵ᥭ塼
  ꡤ¾ץå˥ޥ졼󤢤Υɤǡоݥ
  Ԥ֤ξ˥ȥ饤ƤԶ
  
DEF_EXC()ˤơCPU㳰ϥɥֹ椬ץåIDȽե
  åۤʤΥåȴ
  
CRE_SPN()ˤơԥå°TA_NULLʳꤷƤ⡤
  E_RSATR顼ȯʤ  
  
CFG_INT()ˤơATT_ISRCFG_INTۤʤ륯饹˽°Ƥ
  Υ顼ɤE_RSATR˽

DEF_INH()/CFG_INT()/ATT_ISR()ˤơֹ桦ߥϥɥ
  Ƚ°륯饹֤礬Υ顼ɤE_RSATR˽
  
ATT_ISR()ˤơֹ椬ʾΥ顼Ϥʤ
  cfg顼򵯤
  
ATT_ISR()ˤơƱֹФATT_ISR()ۤʤ륯饹°
  ƤΥ顼Ϥ˥顼ֹ椬ȴƤ

CFG_INTǻꤵ줿ֹդǽʥץåꤵ
  饹γդǽץå˴ޤޤ뤫Υå򤷤ʤ褦
  ʻͤǤATT_ISR/DEF_INHΤߥåˡ

irel_wai() Υץååγ٥åλΥɤ̵̤ʥǥ
  ѥå׵Υɤä
  
chg_pri() Υץååγ٥åλΥɤ
  change_priority() Υѥ¹Ԥʤäᡤɤι¤ 
  ter_tsk() ȹ碌ơchange_priority() ƤΥѥ̤褦ѹ
  

Ͼ֤ext_tskƤӽФϡå˳ߤĤ
  ʤ褦ѹext_tskμ¹Ի֤ĹʤǽΤա
  
ԥåAPI(ͥƥ)ˤơåȰ¸Υԥ
  åؿƤӽФƲˡOSǡѹƤ
  

ter_tsk()(ץåγ٥å)ǡư׵ᥭ塼
  ꡤ¾ץå˥ޥ졼󤢤Υɤǡdispatch_request()
  ͤåƤΥѥǤɬפʤ.
  
ena_tex()/ras_tex()ˤơΥ㳰롼Ƥ
  Ф¾Υץåإޥ졼󤷤ˡ㳰
  󤫤꥿󤹤åʤ

åȰ¸νɬפѹ

VALID_INTNO_DISINT()/VALID_INTNO_CFGINT()ΰprcidɲä
  prciddis_int()/ena_int()ʤCFG_INTƤӽФʤˤfalse
  ֤褦ѹ   

Х륿ξΥ।٥ȥϥɥϿ륯饹
  ̾ TCL_ADMIN_PRC  TCL_SYSTIM_PRC ѹ
  
դǽץåդץåΤߤΥ饹ɲá
    
ATT_ISRintnoȥ饹γդǽץåΥå
  Ͽߥӥ롼°륯饹γդǽץå
  intnoǻꤷ׵饤³줿ץåν˴ޤޤ
  Ƥ뤫å褦˽
  
åȰ¸ATT_ISRΥ饹դåƥץ졼ȥ
  δؿ TARGET_CHECK_ATT_ISR ɲá
  
----------------------------------------------------------------------
        TOPPERS/FMPͥ
        Release 1.1.0  1.1.1 ؤѹ
        ꡼ 2010-05-12

ѹΥꥹ
ƥϤζͭΥǻѤݡֹΥޥ
 LOGTASK_PORTID_G_SYSLOGˤߡ

EXCNO_VALIDCPUֹޤ褦ѹ

åȰ¸CPUEXCxʤäϡץץ
  бCPU㳰ϥɥʤ褦ѹ

ץץΥХ륿Υݡ

TOPPERS_SUPPORT_MULTI_PRCޥɲ

init_wait_queue()ν
  p_tcbp_pcb򻲾ȤƤսѿp_pcbľܻȤ
    褦ѹ

ras_tex()ν
  get_my_p_pcb()CPUåǼƤ
  ̵̤ѿp_runtskˤν

t_rtskμεưγդץåIDǼ̾ν
  ͽ˹碌ơactprcid顤actprc˽

ƥϤΥޥ졼б
  ߥå˻ѤݡȤ褦ѹ

ƥϤζͭб
  ԥåˤꡤץå֤¾Ԥ褦ѹ
  
Х륿޻Υ।٥ȥϥɥδ֥åν꽤#394  
  ֥åϿPCBޥץåȤƤᡤ
    ץåPCBϿ褦˽

åȰ¸νɬפѹ

----------------------------------------------------------------------
        TOPPERS/FMPͥ
        Release 1.0.1  1.1.0 ؤѹ
        ꡼ 2010-02-08

ѹΥꥹ
barrier_sync()ν
  ɤΤ褦ʾ֤Ǥ¹Բǽʤ褦ˡץåIDμˡ
  sil_get_pid()Ѥ褦ѹ

ext_ker()ν
  ץåPCBߵľ֤ǻȤƤ  

TPRC_NONE ɲ
  ref_tsk() ͤΥСǤ actprc μ͡ 
  actprcνTPRC_NONEꤹ褦ѹ

kernel_impl.hν
  #ifdef TOPPRES_ISTKPT  #ifdef TOPPERS_ISTKPT ˽

ter_tsk()ν
  G_KLOCKΥɤǡp_runtskѤƤ

ref_tsk()ν
  ưդץåξɲá

rel_mpf()ν
  ֥ȥå˥ǥѥåɬåƤʤ
  

iset_flg()ν
  å꡼Ƥʤ

ưx_initialize_giant_lock()ޥץåΤߤƤӽФ
  ѹ

ԤΥޥ졼λ֤ΰ
  (current_time)л֤ˤäƻꤷʾλ֤вᤷ
  Ȥʤ褦ѹ

chg_pri/rel_waiΥǥåɥåΥåΤretry
  ν

logtask.cOSδؿx_prc_index()ѤƤν
  sil_get_pid()ѹ

mig_tskǥޥ졼ΥץåƱץåξ
  
  ¾ꤷ硤ƱͥǺͥ٤Ȥʤ褦˽
  ˡƱͥ٤Ǻ̤ͥȤʤؿɲá

mact_tsk׵᤬塼󥰤Ƥ֤mig_tskȯԤ줿
  
  
ter_tsk
  ȥ饤CPUåԤѥäὤ

my_xxxޥѻ
  get_my_p_pcb()/get_mp_p_pcb()˻

åޥåؿѹ

kernel.tfǳֹ桤ߥϥɥֹ桤㳰ֹμξĹ
  Ҥ
  INH.INHNO[inhno]  inhno
  INT.INTNO[intno]  intno
  EXC.EXCNO[excno]  excno 
 
kernel_cfg.cINTHDR/EXCHDR_ENTRYΥϥɥֹ桿CPU㳰ϥɥֹ
  16ʤѹ

߽ǥͽؤɽ
  ̥ӥåȤˡץåIDΥӥåȥޥǤϤʤץåID
  褦ѹʣΥץåդ׵饤ϡ
  ̥ӥåȤ0Ȥ롥

slp_tsk/wup_tskμ¹Իַ¬ץɲ

åȰ¸νɬפѹ

SIL_LOC_SPNλͤѹ
  åԤĴ֤ϡߤޥʤ褦ѹ

󥿥ƥѥåΥȥåפΥɥ쥹ФƤ
  ν
  󥿥ƥѥåΥǥեȤΥ
  (TOPPERS_PRCx_ISTKSZ:xϥץåID) ϥХȻȤ롥

TNUM_PRCTNUM_PRCIDѹ

SIL_LOC_SPNλѹ
  SIL_LOC_INTεǽޤ롥
  ˤϡSIL_PRE_LOC 򵭽Ҥɬפ롥

ԥåΥåȰ¸δؿλѹ
  åޥѹƱͤˡ¸δؿǳߤĤ褦
    ѹ  
    void   t_lock_spin(SPNLOCK *p_spn_lock)
    void   i_lock_spin(SPNLOCK *p_spn_lock)
    bool_t try_lock_spin(SPNLOCK *p_spn_lock)

åޥåؿѹ
  åؿ target_config.h ʤϤ饤󥯥롼ɤ
    ե롥
     void t_acquire_lock(LOCK *p_lock)
     bool_t t_acquire_nested_lock(LOCK *p_lock)
     void i_acquire_lock(LOCK *p_lock)
     bool_t i_acquire_nested_lock(LOCK *p_lock)
     void release_lock(LOCK *p_lock)
     void acquire_lock_without_preemption(LOCK *p_lock)
  åη LOCK ΤߤȤ롥
  ץååγ٥åξ硤ߥȥ꡼ǥå
    Ƥв롥

ץå˻ĥåȰ¸ξPCBؤ
  target_pcb.h ڤӤ饤󥯥롼ɤեơ
    ˡʲƤ򵭺ܡtarget_config.hϥ󥯥롼ɤʤȡ
    TPCBtarget_processor_control_blockˤ
    åη
    ͥåλ
    x_prc_index()

߽ǥͽؤɽ
  ֹ桦ߥϥɥֹλͤͽ˹碌롥
  .cfg/.h/.c γֹ桦ߥϥɥֹι
    ץåֳ/ޡ/UART
  xxx.tfι
    INTNO_VALIDINHNO_VALID
    ¾ֹξ̥ӥåȤåƤսꡥ

----------------------------------------------------------------------
        TOPPERS/FMPͥ
        Release 1.0.1  1.0.2 ؤѹ
        ꡼ 2009-09-07

ѹΥꥹ
porting.txt νɵ

CHECK_DISPATCH() Ѳսѹ
  CHECK_TSKCTX_UNL() ⤷ CHECK_INTCTX_UNL() ѹ
  ǥѥåǽ֡dspflgˤΥåCPUåָ˥
  å褦ѹAPIϰʲ̤ꡥ

    dataqueue.c: snd_dtq()
    dataqueue.c: tsnd_dtq()
    dataqueue.c: rcv_dtq()
    dataqueue.c: trcv_dtq()

    eventflag.c: wai_flg()
    eventflag.c: twai_flg()

    mailbox.c: rcv_mbx()
    mailbox.c: trcv_mbx()

    mempfix.c: get_mpf()
    mempfix.c: tget_mpf()

    pridataq.c: snd_pdq()
    pridataq.c: tsnd_pdq()
    pridataq.c: rcv_pdq()
    pridataq.c: trcv_pdq()

    semaphore.c: wai_sem()
    semaphore.c: twai_sem()

    task_sync.c: slp_tsk()
    task_sync.c: tslp_tsk()
    task_sync.c: dly_tsk()

CHECK_DISPATCH() κ

CHECK_TSKCTX_UNL()/CHECK_INTCTX_UNL() ѹ
  sense_tskctx_unl()/sense_intctx_unl() ƤӽФ褦ѹ

sense_tskctx_unl()/sense_intctx_unl() ɲ

sense_context()/[tix]_sense_lock()Υޥ졼б
  CPUå֤ǸƤӽФ뤿ᡤ¹˥ޥ졼󤵤
  ʤ褦˽ŪˤϡCPU ID CPUͭΥǡ
  սCPUå֤Ǽ¹Ԥ褦ѹ

CHECK_NONSELF()κȻѲսν
  ߶ػ˥åȡޥ졼󤵤줿ˡۤʤ
  åͤɤ߹ǽ뤿ᡤCPUå˥å
  ѹAPIϰʲ̤ꡥ

   task_manage.c : ter_tsk() : 㥤ȥå
   task_manage.c : ter_tsk() : ץååγ٥å

CHECK_LOCSPN()κ
  ѤƤʤ

----------------------------------------------------------------------
        TOPPERS/FMPͥ
        Release 1.0.0  1.0.1 ؤѹ
        ꡼ 2009-07-17

ѹΥꥹ

test/test_mact_tsk{1,2,3} ڤ test/test_mig_tsk{1,2}ưʤ
  

ǥѥåػ߾֤ΥץåΥǥѥåľ֤
  ץå mrot_rdq ƤơȤʤ

call_texrtn()¾Υ˥ǥѥåݤ
  åޤޡǥѥåƤᡤƸ
  ӽФ褦ѹ

ԥɤLF

CPU㳰ֹפʤϡ㳰ֹפCPU㳰ϥɥֹפ

imact_tskǥץåIDΥåȴƤ

ץååT_ACQUIRE_NESTED_LOCK_AND_CHECK_RUNNABLEν
  RUNNABLEǤʤ˥֥ȥåƤʤ

msta_cycTA_PHS°Ǥʤϥɥεưư˽

mact_tskˤ굯ư׵᤬塼󥰤줿 ter_tsk Ƥ
  ޥ졼󤵤ʤ
  make_dormant()  actprc ʤ褦ѹ
  actprc  actque Ʊսǽ褦ѹ

ХꥢƱϢΥɤΥ롼ѿ volatile ղ

ext_tskǥޥ졼󤹤˥ޥ졼׵᤬ꥢ
  ʤ

ƥȥץϢ
 ƥȥ饤֥˥ХꥢƱؿɲ
 åݥɽ˥ץåIDƱɽ
 åݥȴؿߥå˥ץåIDƤ
 åݥȴؿȴλåݥȤǤPRCIDμsilؿѹ
 test_spin_lock.c ν
   try_spn/itry_spnΥåԻΥ顼ɤE_OBJ˽줿
     Ȥȼ
   ƥȽλ check_finish() ƤӽФ褦˽
 test_mact_tsk2.c ν
   ץå2ǽλ check_finish() ƤӽФ褦˽
 CPU㳰Υƥȡʥ󥰥ץåˤɲ
 㳰Υƥȡʥ󥰥ץåˤɲ
 ޥեΥƥȡʥ󥰥ץåˤɲ
 ƥ֤˴ؤƥȡʥ󥰥ץåˤɲ

sig_semμ¹Իַ¬ץɲ

ref_spnCPUå֤ｪλ
  E_CTXȤʤ褦˽  

get_pid/iget_pidCPUå֤ｪλ
  E_CTXȤʤ褦˽  

msta_alm()/imsta_alm()/msta_cyc()TPRC_INIȯԤ E_ID 
  ֤

imsta_alm()  TPRC_INI ȯԤƤоݥ顼ϥɥ餬ư
  ʤ

ԥå֤ǡloc_cpu()/iloc_cpu()/unl_cpu() 
  /iunl_cpu()ȯԤ E_CTX 顼Ȥʤ
  ֤ѹʤ褦˽

try_spn/itry_spnǴ˥åƤΥ顼ɤ 
  E_TMOUT ˤʤν

ref_spn¾饹ԥåξ֤򻲾ȤǤʤ

ޥ̾ѹ(TPRC_INIT -> TPRC_INI)

unl_spn/iunl_spnΥ顼ɤν
  оݤΥԥå unl_spn(), iunl_spn()  
  E_CTX 顼֤äƤᡤE_ILUSE֤褦˽

ena_int/dis_intΥå˴ؤ뽤
  ޥ졼θơ߶ػ߸˳ֹΥåԤ
  褦˽

sus_tskΥåޥѹ
  оݤξϡ¾sus_tskȥ졼󥰤ȡE_QOVR ֤뤳
  Ȥ롥

T_ACQUIRE_NESTED_DUAL_LOCK_AND_CHECK_MIG()ν
  CPUåƤ
  
wait_tmoutѤåޥѹ
  I_ACQUIRE_NESTED_LOCK() -> I_ACQUIRE_NESTED_LOCK_AND_CHECK_MIG()
  ˽

ext_tskλѤåޥѹ
  T_ACQUIRE_TSK_LOCK_AND_CHECK_MIG(my_p_runtsk->p_pcb) -> 
  T_ACQUIRE_TSK_LOCK_AND_CHECK_RUNNABLE()
  ˽

sus_tskλѤåޥѹ
  T_ACQUIRE_TSK_LOCK() -> T_ACQUIRE_TSK_LOCK_AND_CHECK_MIG()
  ˽

stp_cyc/ref_cycλѤåޥѹ
  T_ACQUIRE_TSK_LOCK() -> T_ACQUIRE_TSK_LOCK_AND_CHECK_MIG
  ˽

mrot_rdqǻѤåޥν
  T_ACQUIRE_NESTED_LOCK_AND_CHECK_MIG() -> T_ACQUIRE_TSK_LOCK(p_pcb) 
  ˽

fsnd_dtqǤλѤåޥν
  I_ACQUIRE_NESTED_LOCK_AND_CHECK_MIG() -> T_ACQUIRE_NESTED_LOCK_AND_CHECK_MIG()
  ˽

can_wupǤλѤåޥν
  I_ACQUIRE_TSK_LOCK_AND_CHECK_MIG() -> T_ACQUIRE_TSK_LOCK_AND_CHECK_MIG() 
  ˽

̥ץå˳դƤ¹Ծ֤ΥФref_tskȯԤ
  ν
  ȯԤȡ֤ȤTTS_RUNǤϤʤTTS_RDY֤äƤƤᡤ
  TTS_RUN֤褦˽

̤Ѥδ֥å
  ƥ֥ȤȤʤ kernel_cfg.c 롤
  ʲΥ֥TOPPERS_EMPTY_LABEL()ΰְäƤ
   * ޥե, ٥ȥե饰, ǡ塼, ͥ٥ǡ塼
     ᡼ܥå, Ĺס, ϥɥ, 顼ϥɥ 

----------------------------------------------------------------------
        TOPPERS/FMPͥ
        Release 0.B.0  1.0.0 ؤѹ
        ꡼ 2009-05-13

ѹΥꥹ

ѹΤäǽ
  fmp_sepc.txt ΰǽλѹ򹹿

rel_waiΥ顼ɤν
  ǥåɥå롼ǡоݥԤ줿Υ顼
  ɤE_OKE_OBJ˽

ASP ͥ 1.4.0ɽ
  call_atexitѻ
    å¸call_atexitƤӽФΤ롥
    call_atexitǹԤäƤɸŪˤsoftware_term_hookƤӽ
    ˤϡɬפǤtarget_exitƬǹԤȤȤ롥

  TSZ_MPF

  get_utmν
    ϥɥ顤顼ϥɥget_utmƤ֤ȡ郎
    ֤ʤ

  ¹Իʬ۽ץ⥸塼ν
    TNUM_HISThistgram.hhistgram.c˰ư

  ȥ졼ǽβ
    LOG_TEX_ENTERLOG_TEX_LEAVEΥѥ᡼ˡp_runtskɲá

  clean˺ե
    clean˺ե򡤥åȰ¸뤿ѿ
   CLEAN_FILESˤƳ

  桼ƥƥν
    makereleaseȤǥ쥯ȥ̾aspˤ򡤥ȥǥ쥯ȥ꤫
    ꤹ褦˽
    makedepˡCygwinĶˤ롼ȥǥ쥯ȥ̾ꤹ뤿
    -RץɲáMakefileMAKEDEP_OPTSѿɲá

  ڥåȰ¸call_atexitѻ
    call_atexitѻߤᡤåȰ¸롥
    call_atexitǹԤäƤɸŪˤsoftware_term_hookƤӽ
    ˤϡɬפǤtarget_exitƬǹԤ

  ڥåȰ¸makedepƤֺݤΥץɲ
     MakefileΥåȰ¸Makefile.targetˤmakedepƤ
     ˤϡ$(MAKEDEP_OPTS)ɲä롥

     @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
             -O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend

  ڥåȰ¸ۥƥץ졼ѿͤκ
     OMIT_INITIALIZE_INTERRUPTOMIT_INITIALIZE_EXCEPTION2ĤΥƥ
     졼ѿͤ򡤥إåե鼫ư褦˽
     ᡤåȰ¸target.tfޤϤ饤󥯥롼ɤ
     եˤͤƤС롥

ƥ।󥿥ե쥤䡼API˥ץåIDAPIΥޥɲ
  void sil_get_pid(uint_t *p_id)
    -> void sil_get_pid(ID *p_prcid)

ڥåȰ¸TOPPERS_MASTER_PRCID 򥫡ͥ붦̹ޥ
   Ƴ
  
ڥåȰ¸TOPPERS_SYSTIM_ADMIN_PRC_ID ̾ѹ
  TOPPERS_SYSTIM_PRCIDѹ

ref_cyc/ref_almǤprcidμɲ

Х륿Υ顼åɲ
  ƥץåʳإ।٥ȥϥɥϿ
  ȡդǽץåإƥץåʳꤷ
  ˥顼Ȥ롥

ڥåȰ¸TOPPERS_SYSTIM_ADMIN_PRC_ID Ƴ
   ƥץåIDꡥ

ڥåȰ¸ۥޥ̾ѹ
    GENERATE_TMEVT_HEAP_G_KTIMER
    ->GENERATE_TMEVT_HEAP_SYSTIM_GLOBAL

    GENERATE_TEVTCB_G_KTIMER
    ->GENERATE_TEVTCB_SYSTIM_GLOBAL

ڥåȰ¸TTYPE_KTIMER ѻ
  ե졼ιˤꡤޥdefine.tfǼǽȤʤ
  ѻߡ

ե졼ι1.5.0-a7_2009-4-24
  饹ID˰ѥ᡼ǽ

ƥ।󥿥ե쥤䡼API˥ץåIDAPIɲ

Сֹν

ץץmsta_cycmsta_almɲá

ڥåȰ¸ۥƥδΥޥ򥫡ͥޥ
  顤ͥ빽ޥѹ

ISR/롼/λ롼¨͡ʥɥ쥹ˤꤷ˥
  顼Ȥʤ
  
psnd_pdq() ǥå塤ԤƤ˥ǥ
  åʤԶν

ӥñ̤ǥ饤֥경Υ顼ν
  ӥñ̤ǥ饤֥경ˡgiant_lockext_ker_reqflg
  ¿ȤʤäƤޤ

rcv_pdq/prcv_pdq/trcv_pdqǥХåեԤΥѥ
  
  ԤΥäƤǡ򥭥塼ϿȤͥ
  rcv_dtq/trcv_dtqϤǡͥ٤ȤʤäƤ롥
  äƤǡϿ褦˽

tmoutTMO_POLꤵ줿νʤԶν
  ʲAPIˤơtmoutTMO_POLꤵ줿νʤä
  trcv_dtq/trcv_pdq/tsnd_pdq

֥ȥå˥ǥѥåƤƤԶν
  ʲAPIˤơ֥ȥå˥ǥѥåƤ
  Ƥ
    twai_sem/tsnd_dtq/trcv_mbx/trcv_pdq/tsnd_pdq

åޥԶ罤
  ʲ2Υޥ˴ؤơåؿͤȿФȤƤ
  ᡤ
  ACQUIRE_DUAL_TSK_LOCK/ACQUIRE_NESTED_TSK_LOCK_AND_CHECK_MIG(ץ
  å)

ڥåȰ¸CPU㳰ϥɥ餫Υ꥿Υԥåΰ
  CPU㳰ȯ˥ԥåƤϡ꥿˲
  ʤ

Х륿get_utm̵

ref_spnɲ
  ԥåξ֤򻲾Ȥ ref_spn ɲá

ԥåunl_cpu/iunl_cpu/loc_cpu/iloc_cpuΰѹ
  ɤAPI⥹ԥåϸƤӽФȤϲǽ֤Ѳ
  褦ѹ

mig_tskλѹ
  оݥդƤץåƱΥץåꤷ
  ˤϡޥ졼ȯʤ̤ͥƱͥ٤Υ
  ǺȤʤ褦ѹ 

try_spnΥ顼ɤѹ
  åǤʤäΥ顼ɤE_TMOUTE_OBJѹ

ͥƥ֥ԥξ˥ԥå­Υ顼
  ѹ
  E_NOIDE_NORESѹ  

Ѹѹ
  ޥ졼 -> դǽץå

ꤷE_OBJ֤Ƥ
  can_act/get_pri/wup_tsk/can_wup/rsm_tsk/chg_pri
  FDMPͥ뤫ΰܿterflgΥå롼󤬻ĤäƤ

ޥ̾ѹCHECK_LCKSPN -> CHECK_LOCSPN

ޥ̾ѹ(PRC_INIT -> TPRC_INIT)
  ¾ȤΤѹ

TLVб
  ./arch/logtrace/trace_dump.c ѹ

饹3/4ͭˤΥ顼ν
  ./sysvc/logtask.c, ./syssvc/serial.c ˤĤơޥְä
  ᡤ饹3/4ȥ顼ȤʤäƤ

make_runnable()ѹ
  ֤ѹԤʤʤ褦ѹѹˤꡤޥ졼
  ΥץåΥ塼³뤵make_runnableƤӽФ
  ⡤ξ֤ѹ줿Ϥʤ褦ˤʤä

OMIT_KER_REQ_ON_IPI˴ؤ뽤
  OMIT_KER_REQ_ON_IPI̤ξ硤initialize_pcb()ǡ
  ext_ker_reqflgƤ补

----------------------------------------------------------------------

        TOPPERS/FMPͥ
        Release 0.A.0  0.B.0 ؤѹ
        ꡼ 2008-02-04

ѹΥꥹ

ɥȤ
  ASPͥ뤫ѹ줿ˤĤƵܤ

ͥǡΥ־ˡѹ
  ե졼ɲä줿ؿǽѤơGNUĶʳ⥵
    Ȳǽʤ褦ѹ

ƥॵӥΥ־ѥޥѹ
  GNUĶʳ⥵ݡȲǽʤ褦ˡΤߤλ꤫顤ѿ
    ΤޥǹԤ褦ѹ

ե졼եǤΥ饹IDΥåɲ

ŪAPIΥ顼ɤѹ

󥿥ƥѤΥåιѹ

󥿥ƥȤΥå롼μ

Х륷ƥΥԥåѹ
  sil饫ͥΥԥåǽѤ褦ѹ

ñ̤Υ꥿˥ԥå֤Ȥ롥 
  
  㳰롼
  ߥϥɥ/ߥӥ롼/।٥ȥϥɥ
  CPU㳰ϥɥ 

ͥܥΥ͡
  ͡वƤʤäܥ뤬äᡤ͡ࡥ

Ѹ
  "åβ"졥  

ߴϢλѹ
  ͽspec˽򤹤褦˽񤭴

롼Ƚλ롼λѹ
  饹°ʤХ롼Ƚλ롼Ƴ  

ȤѸѹ : 
  Υץåؤ"°""դ"Ѹѹ

ȥ졼γȽ : 
  ƤAPIȥϥɥ¹ԤΥȥ졼μȡϥ롼
  

ޥ졼ɲ : ./kernel/task.h ./kernel/task_manage.c
  ޥ졼˥褦ѹ

ν : ./syssvc/syslog.c
  ľ prc_index() Ȥʤ褦ѹ

ߥ졼Υԥåν : 
  ./kernel/kernel.tf, ./kernel/spin_lock.h, ./kernel/spin_lock.c
  ߥ졼ν֥åȴ֥åι¤Ťä
  ᡤưʤ

kernel_cfg.cISR롼ν : ./kernel/kernel.tf
  ֹξ̥ӥåȤ˥ץåIDղäγߥӥ
  ʤä

ԥå֥Ȥν : ./kernel/spin_lock.c
  ߥ졼ξinitialize_spin_lock()ǤΥåѿ
  롼󤬸ŤޤޤǤä

å롼ν: ./kernel/mp.h
  󥿥ƥѤΥȥ饤å롼ǥȥ饤
  ߤĤƤʤս

ǽɾץɲ : ./perf
   act_tsk, mact_tsk, mig_tsk ǽɾץɲá

ƥȥץɲ : ./test
   1ƥȡ2mig_tskƥȡ2mact_tskƥȤɲá

histgram.c Υåץǡ : ./library/histgram.c
   åȰ¸ޥ(HIST_GET_TIM)ˤ¬ǽȤ

calltex()ν : ./kernel/task.c
   calltex()ǡcall_texrtn() ǤϤʤdispatch_call_texrtn() Ƥ
   Ф褦˽

prc_index()  ץåIDɲ : ./doc/porting.txt
   prc_index()֤٤ͤˤĤơץåIDӤˤĤ
   á

ASP 1.3.2 ɽ
   ASP 1.3.1 -> 1.3.2 ѹ줿սFMPˤȿ

ե졼ι
   cfg-20081016.tar.gz ˹

åȰ¸׽ս

----------------------------------------------------------------------

        TOPPERS/FMPͥ
        Release 0.A.0 
        ꡼ 2008-05-12

ѹΥꥹ

åȰ¸׽ս

----------------------------------------------------------------------
