/**
	@mainpage	TOPPERS C++ Wrapper Library

	 `TOPPERS C++ Wrapper Library' <a href="http://www.ertl.jp/ITRON/SPEC/mitron4-j.html">
	ITRON 4.0</a>˽򤷤<a href="http://www.toppers.jp/">TOPPERS</a>ͥεǽ
	åԥ󥰤 C++ Υƥץ졼ȥ饤֥Ǥ롣\n
	Ȥ߹ߥƥǤѤŪȤ뤿ᡢ¹®٤ȥץॵξ̤ˤơ
	Ψɤɤ뤳Ȥܻؤ߷פƤ롣

	ܥ饤֥ TOPPERS ͥåѡǤꡢͥФƲ餫εǽ
	ɲä뤳ȤŪȤΤǤϤʤ
	ʤ顢ܥ饤֥Ѥ뤳Ȥǡ̤Υ饤֥ǤζϤ
	פ뤳ȤǤ롣

	@section	feature ħ

	- ƥץ졼ȤեѤͥå饤֥
	- §ȤƲ۴ؿѤѥ˷褹
	- ƥȤԵˡѥ᡼ĤĤ⡢Ūʽ򤬲ǽ
	- ʷ餫İʥǥ󥰤λٱ
	- ͥ뤴ȤεǽΥݡȾưȽ
	- 㳰ָΨ㲼Ǿ¤ޤ

	@section	development_environment	ȯĶ

	- <a href="http://sources.redhat.com/binutils/">Binutils</a> 2.13ʹ
	- <a href="http://gcc.gnu.org/">GCC</a> 3.2ʾ TOPPERSбѥåɬס
	- <a href="http://sources.redhat.com/newlib/">Newlib</a> 1.11.0ʹ
	- <a href="http://www.toppers.jp/jsp-kernel.html">TOPPERS/JSPͥ</a> 1.4ʹߡ
	  ޤ TOPPERS/FI4ͥ 1.0ʹ

	@section	restriction 

	- <a href="http://www.caravan.net/ec2plus/">Embedded C++</a>ˤбƤʤ
	- TOPPERSͥʳΦITRONͥξ硢٤Υݡƥ󥰤ɬ

	@date		$Date: 2004/01/26 00:53:45 $
	@author		ڿ TOPPERSץȡ

 */

/**
	@page	license 饤
	@verbatim


	TOPPERS/C++ Binding
	    Toyohashi Open Platform for Embedded Real-Time Systems/
	    C++ Binding

	Copyright (C) 2004 by TAKAGI Nobuhisa

	嵭Ԥϡʲ (1)(4) ξ狼Free Software Foundation 
	ˤäƸɽƤ GNU General Public License  Version 2 ˵
	ҤƤ˸¤ꡤܥեȥܥեȥ
	ѤΤޤࡥʲƱˤѡʣѡۡʰʲ
	ѤȸƤ֡ˤ뤳Ȥ̵ǵ롥
	(1) ܥեȥ򥽡ɤηѤˤϡ嵭
	    ɽѾ浪Ӳ̵ݾڵ꤬Τޤޤηǥ
	    ˴ޤޤƤ뤳ȡ
	(2) ܥեȥ򡤥饤֥ʤɡ¾Υեȥȯ˻
	    ѤǤǺۤˤϡۤȼɥȡ
	    ԥޥ˥奢ʤɡˤˡ嵭ɽѾ浪Ӳ
	    ̵ݾڵǺܤ뤳ȡ
	(3) ܥեȥ򡤵Ȥ߹ʤɡ¾Υեȥȯ˻
	    ѤǤʤǺۤˤϡΤ줫ξ
	    ȡ
	  (a) ۤȼɥȡѼԥޥ˥奢ʤɡˤˡ嵭
	      ɽѾ浪Ӳ̵ݾڵǺܤ뤳ȡ
	  (b) ۤη֤̤ˡˤäơTOPPERSץȤ
	      𤹤뤳ȡ
	(4) ܥեȥѤˤľŪޤϴŪ뤤ʤ»
	    ⡤嵭ԤTOPPERSץȤդ뤳ȡ

	ܥեȥϡ̵ݾڤ󶡤ƤΤǤ롥嵭Ԥ
	TOPPERSץȤϡܥեȥ˴ؤơŬѲǽ
	ޤơʤݾڤԤʤޤܥեȥѤˤľ
	ŪޤϴŪʤ»˴ؤƤ⡤Ǥʤ
   @endverbatim
 */

/**
	@page	coding_rule ǥ󥰵

	`TOPPERS C++ Wrapper Library' ϡΥǥ󥰵˴Ť
	Ƥ롣

	@par	ե̿̾:
	- եåʳĥҡˤϡإåե `.@e hpp'ʳ @e `.@e cpp'Ȥ롣
	- §ȤƾʸΤߤѤ롣
	- §ȤƥեɽŪʥ饹̾ե̾Ȥ롣

	@par	̻Ҥ̿̾:
	- C++ͽ̻ҤϻѤʤ
	- ޥ̾ʸǡñζڤϲȤץեå @e `TOPPERS_'
	  ղä롣
	- ƥץ졼ȲñƬʸʸʳϾʸȤ롣
	- ɽŪĥ桼Ѥ뤳ȤʤΤˤĤƤϡʸμ̻Ҥ
	  ѤƤ褤
	- 嵭ʳμ̻ҤϾʸǡñζڤϲȤ롣
	- 饤֥꤬Թ塢Х֤֤̼̻̾Ҥ@e `toppers_'
	  ղä롣
	- 饤֥꤬Թ塢Ū˻ѤƤޥ̾ϲǽ롣
	- 饹Υѿϲǽ롣
	- ̤ͳʤ¤ꡢ̻ҤѤñϾάʤ

	@par	̾:
	- 饤֥γǤϡ§Ȥ@e `toppers' ֤̾롣
	- Թ塢@e `toppers' ֤֤̾ǤʤΤˤĤƤϡ
	  @e `toppers_private' ֤֤̾Х֤̾ˤ϶֤ʤ
	- ξܺ٤˴ؤǤϡ@e `toppers::detail' ֤֤̾롣
 */

/**
	@namespace	toppers
	@brief	饤֥꤬Ѥȥåץ٥̾

	֤̾ϡ饤֥꤬󶡤ǽȥåץ٥֤̾Ǥ롣
 */

/**
	@defgroup	ServiceCallStub ӥ륹
	@brief	ITRON 4.0ͤΥӥŪ˸ƤӽФΥ֥饹

	ӥ륹 ⥸塼ϡTOPPERS ͥΥӥθƽФˡѥ᡼
	뤿εǤ롣
	桼ȼΥӥ륹֤뤳ȤǡITRON ʳΥͥ䡢ITRON ΰۤʤ
	СΥͥѤ뤳Ȥ⡢ŪˤϲǽǤ롣

	@par	֤ͥκۤεۼ:
		 ȤơݡȤ륵ӥΰ㤤ռ뤳Ȥʤ饤֥ۤǤ롣
		¸ߤʤӥƽФȤ硢ѥ˥顼ˤ뤳Ȥ⡢¹Ի
		顼ˤ뤳ȤǤ롣ޤ桼μˤäơ­ӥ䴰뤳Ȥ
		ǽǤ롣\n
		 Ѥ륵ӥ륹֤ƥץ졼Ȱˤ뤳Ȥǡ륵ӥºݤ
		ʥƥץ졼ȤǤϤʤΤȤơ˸ƽФ褦ʥɤ򵭽Ҥޤǡѥ륨顼ˤʤ
		Ȥ򤹤뤳ȤǤ롣

	@par	ֵͤη:
		 ITRON ͤΥͥϡͤƤȤƤ⡢ӥΰη
		̯˰ۤʤ礬롣ޤƱΥͥǤ⥿åȤˤäưۤʤǽ⤢롣\n
		 C++Ǥϡ̯ʷκۤ¿˻פ̾㳲ǽ뤿ᡢ
		ӥ륹֤ˤäƷ줹뤳ȤǤ롣

	@par	㳰ղ:
		 ITRON ͥΥإåϡȤCǻѤ뤳ȤꤷƼƤ뤿ᡢC++
		㳰꤬ʤ礬롣\n
		 ӥ륹֤Ѥ뤳Ȥǡƥӥ㳰ɲä뤳ȤǤ롣
		ˤꡢ㳰˴Ϣפʥɤ뤳Ȥ޻ߤץθΨޤ
		ȤǤ롣
 */

/**
	@defgroup	KernelObjectManager ͥ륪֥ȴ
	@brief	ITRONΥͥ륪֥Ȥ뤿Υƥץ졼ȥ饹

	 ͥ륪֥ȴ⥸塼ϡTOPPERS ͥεǽʬåԥ󥰤뤿
	饹Ǥꡢܥ饤֥ˤȤʤ⥸塼ˤ롣\n
	 ܥ⥸塼Ǥϡͥ椹뤿Ǥ¿ѥ᡼Ƥ롣ʲˡ
	Υѥ᡼򵭺ܤ롣

	<hr>
	@par	̤Υƥץ졼Ȱ

	 ܥ⥸塼°Ƥפʥƥץ졼ȥ饹ϡΥƥץ졼ȰȤơʲ˵󤲤
	ΤΰޤͭƤ롣

	@par	ͥ륪֥IDֹID @e Id :
		 ܥ饤֥ǤϡIDֹϳƥ饹Υƥץ졼ȰȤƻꤹ뤳Ȥǡΰ
		ޤ롣ˤꡢꤹ뤳Ȥǥͥ륪֥Ȥꤹ뤳Ȥǽ
		ʤꡢͥ륪֥ȼΤŪʥѥ᡼Ȥ뤳Ȥǽˤ롣\n
		 ƥץ졼Ȱ@e Id 0ʥǥեȤ0ˤ硢󥹥IDֹݻ
		뤳ȤǤ롣ˤꡢ¹Ի˥󥹥󥹤IDֹϢդ뤳ȤǤ롣\n
		 IDֹˤбƤʤƥץ졼Ȱ@e Id 0ˤưŪIDֹ
		Ϣդ뤳ȤϤǤ롣\n
		 ¿ξ硢@e Id Υǥեͤ0Ǥ롣

	@par	ץǥݥꥷclass @e Diagnostics :
		 ӥθƽФ˼Ԥưꤹ롣\n
		 ƥץ졼Ȱ@e Diagnostics ĥ饹ϡ@e Diagnostics  private ѾƤ롣
		Τᡢ@e Diagnostics ϡץǤȤӤĶơƥ饹ư٤
		ޥ뤳ȤǤ롣㤨С@e Diagnostics ˲ۥǥȥ饯䤽¾β۴ؿ
		뤳ȤǡưŪ¿뤳ȤǽǤ롣\n
		 ¿ξ硢@e Diagnostics Υǥեͤˤ@e TOPPERS_DEFAULT_DIAGNOSIS ꤵƤ롣
		@e TOPPERS_DEFAULT_DIAGNOSIS ϡ桼ȼʤ¤ꡢ@e ignorant_diagnosis Ǥ롣

	@par	ӥ륹֥ݥꥷclass @e Stub :
		 饹Υдؿͥ˥ݤˤ褦륹֤ꤹ롣\n
		 ¿ξ硢@e Stub Υǥեͤˤ@e TOPPERS_DEFAULT_STUB ꤵƤ롣
		@e TOPPERS_DEFAULT_STUB ϡ桼ȼʤ¤ꡢ@e raw_stub<> Ǥ롣

	@par	ܥǥ@e Body :
		 ӥϥɥ롼ɬפȤʤ륫ͥ륪֥ȤǤϡܥǥȸƤФ
		饹뤳Ȥǡ̤Υǡư롣\n
		 ܥǥ饹ϥϥɥѤؿΥƥץ졼ȰȤƻꤹ¾ͥ륪֥Ȥ
		@e create дؿΥƥץ졼ȰȤƻꤹ뤳ȤǤ롣


	<hr>
	@par	̤Υ᥽å

	 ܥ⥸塼°Ƥ륯饹¿ϡʲ˵󤲤붦̤Υ᥽åɤͭƤ롣
	̤Υ᥽åɤ󶡤뤳Ȥˤꡢ饤֥νưפˤľ̤Υ饤֥
	ͥå߷פٱ礹롣

	@par	ͥ륪֥Ȥ@e create :
		 ͥ륪֥Ȥˤ@e create Ȥ̾ΤΥдؿѤ롣\n
		 @e create дؿ@e creation ؤΥݥ󥿤ȤƼ뤬
		ITRON 4.0ͤ@e T_CYYY ¤Τ롣\n
		 @e create дؿϡ줬°Ƥ륯饹Υƥץ졼Ȱ@e Id 0ʳ
		ˤϡб@e cre_yyy ӥƽФ@e Id 0ξˤϡб
		@e acre_yyy ӥƽФưŪ˳դ줿IDֹ򥤥󥹥󥹤˳Ǽ
		롣\n
		\n
		 @e create дؿϡ@e creation ؤΥݥ󥿤ʳˡ@e creation
		˴ޤޤƥեɤ̤ϤȤǤ롣\n
		 ޤ¾ϥɥ롼ɬפȤ륫ͥ륪֥ȤǤϡ
		@e Body ƥץ졼Ȱǻꤹˡ⤢롣

	@par	ͥ륪֥Ȥκ@e destroy :
		 ͥ륪֥Ȥκˤ@ destroy Ȥ̾ΤΥдؿѤ롣
		Ū@e del_yyy ӥƽФ̾Τ@e delete ǤϤʤΤϡ
		C++ͽȾͤ뤿Ǥ롣\n
		 饹Υƥץ졼Ȱ@e Id 0ξ硢@e destroy дؿˤäƥͥ
		֥ȤȡޤݻƤIDֹ椬ꥻåȤ롣

	@par	ͥ륪֥Ȥξֻȡ@e refer :
		 ͥ륪֥ȤξֻȤˤ@e refer Ȥ̾ΤΥдؿѤ롣\n
		 @e refer дؿ@e reference ؤΥݥ󥿤ȤƼ뤬
		ITRON 4.0ͤ@e T_RYYY ¤Τ롣

	@par	ͥ륪֥Ȥ@e define :
		 ͥ륪֥Ȥˤ@e define Ȥ̾ΤΥдؿѤ\n
		 @e define дؿ@e definition ؤΥݥ󥿤ȤƼ뤬
		ITRON 4.0ͤ@e T_DYYY ¤ΤŪ@e def_yyy ӥ뤬
		ƽФ롣\n
		\n
		 @e define дؿ@e create 뤬ʲۤʤ롣
			- ŪдؿǤ롣
			- 󥹥󥹤IDֹδϢդϹԤʤ

	@par	ͥ륪֥Ȥä@e undefine :
		 ͥ륪֥Ȥäˤ@e undefine Ȥ̾ΤΥдؿѤ\n
		 Υдؿϡ@e def_yyy ӥ@e NULL ݥ󥿤ϤȤǼ¸Ƥ롣

	@par	IDֹμФ@e get_unsafe_id :
		 ͥ륪֥IDֹ륯饹Υ󥹥󥹤顢IDֹФˤ
		@e get_unsafe_id Ȥ̾ΤΥե꡼ؿдؿˤѤ롣\n
		 IDֹǤʤȤ¿ȿ̥饹ˤ륫ץ벽þ
		ʻäƤ롣
		ܥ饤֥Ǥϡ桼ˤФդ򴭵̣ǡ@e unsafe Ȥ
		ѤȤȤˡдؿǤϤʤե꡼ؿȤ󶡤Ƥ롣


	<hr>
	@par	ƥȤλ

	 ӥˤäƤϡƥȤ󥿥ƥȤξѤǤ롣
	ɤΥƥѤΥӥƽФꤹˤϡѤѤ롣
	- ƥȻ@e task_context 
	- 󥿥ƥȻ@e non_task_context 
	- ƥ¸@e context_independent 
	 ʤ@e task_context_body ޤ@e non_task_context_body ƥץ졼ȥ饹Ѿ
	ܥǥ饹Ǥϡ@e context_independent @e task_context ޤ@e non_task_context
	Τ줫Ƥ뤿ᡢܥǥ饹ΥдؿǤϡ@e context_independent 
	ꤷǤΨɤԤǤ롣


	<hr>
	@par	Եˡλ

	 ITRON ǤϡԤ֤ˤǽΤ륵ӥǤϡԵˡȤơ
	ʵԤݡ󥰡ӥॢȻ򤹤뤳ȤǤ롣\n
	 ͥεǽǤϡԵˡѥ᡼ˤϡTMO ͻˤäƼ¹Ի
	򤷤Ƥܥ饤֥Ǥϡꤹ뤳Ȥǥѥ򤹤뤳Ȥ
	ǽǤ롣
	- ʵԤ@e forever 
	- ݡ󥰡@e polling 
	- ॢȻ@e TMO Υॢ͡

 */

/**
	@defgroup	Allocator ꥢ
	@brief	󥹥󥹤Ⱥ˴ؤ륫ޥǽ

	@par	STLѤΥ:
	 STLΥƥʤϡƥץ졼ȰȤƥꤹ褦ˤʤäƤ뤿ᡢŬ礹
	ǤդΥסǤ륢󶡤롣

	@par	new  delete 黻ҤΥޥ:
	 ǤդΥסǤ new  delete 黻Ҥꥯ饹󶡤롣
 */

/**
	@defgroup	Diagnostics ץ
	@brief	顼ǡӼ¹Իȥ졼ǽ

	 ץǥ⥸塼ˤϡܥ饤֥¿Υ饹δȤʤ@e Diagnostics ݥꥷ¾
	ưŪŪ󡢼¹ԻΥǡȥ졼ǽʤɤޤޤƤ롣εǽܥ饤֥
	¿ѤƤǤʤ桼ץꥱǤͭѤǤ롣
 */

/**
	@defgroup	Syncronization Ʊ
	@brief	¾浡ǽ¾դα黻ǽ󶡤롣

	 ITRON 4.0ͤˤϡƥ륻뤿εǽĤ롣
	ޥեߥ塼ƥåCPUåǥѥåػǤ롣
	ǽϥƥ륻κǽȺǸǥӥƽФɬפ롣
	C++ Ǥ C ٤ơ¿ξ硢㳰Ȥʤäơ˼¹ԥѥʣǤꡢ
	ƥ륻󤫤ȴ뤵˳μ¤˥ӥƽФȤϺǤ롣\n
	 ̾C++ ǤΥפȴ˳μ¤˽Ԥ碌ˡȤơ
	ǥȥ饯Ѥ롣
	Ʊ⥸塼Ǥϡ󥹥󥹤¸֤Τޤޥƥ륻Ȥʤ褦ʡ
	¾ΤΥ饹󶡤롣\n
	 ˤäơƥ륻뤿εϡƥץ졼Ȱˤä򤹤뤳ȤǤ롣
 */

