------------------------------------------------------------------------------
  Hyper Operating System V4 Advance  --ITRON4.0dlOS                       
    RtBM[^ hLg                                           
                                                                              
                                       Copyright (C) 1998-2008 by Project HOS 
                                       http://sourceforge.jp/projects/hos/    
------------------------------------------------------------------------------



1. Tv

  {hLg Hyper Operating System V4 Advance (ȉ HOS-V4a)
RtBM[^(h4acfg)ɂĂ̐Lڂ܂B



2. RtBM[^̃CN

  cfgrtr fBNgȉɃRtBM[^̃rhpt@Cꎮ
܂B
  RtBM[^̓^[QbgvZbTɐAJ[l
rhɘAărh܂B
  ȂARtBM[^̓NXRpCۂ̃zXg}V
œ삷vOł̂ŁAzXg}Vp̃RpCKv
Ȃ܂B
  GNU make 𗘗pꍇ gcc Anmake 𗘗pꍇ
cl (MS-C, Visual-C++)Ăяo܂B
  ɍ킹ẴRpCsł悤ɐݒ肵
ĂB


2. RtBM[^̎g

  RtBM[^̎dl̂AITRON4.0 dlɂĒ߂
܂B
  {hLg̓ITRON4.0dl𒸂Ă邱ƂO
Ă܂BITRON4.0dlITRONC^[lbg
JĂ܂̂ŁAʓȑAmFB

  {Iȏ̗ƂẮAÓIAPILڂAsystem.cfg 
CvvZbTŏɁAh4acfg ŏ邱ƂɂA
kernel_id.h(IDȂǂ錾wb_t@C)ƁAkernel_cfg.c(J[l
IuWFNg̐ÓIȂǁj𓾂܂B
  ̌Ɍ́Akernel_cfg.c RpCăN邱ƂŁAHOS-V4a
p\ƂȂ܂B


3. HOS-V4a Ǝ̐ÓIAPI

  h4acfgł ITRON4.0dl Œ߂ÓIAPȊɉLAPI
Ă܂B

    KERNEL_HEP_MEM, KERNEL_SYS_STK,
    KERNEL_INT_STK, KERNEL_INT_SP,
    KERNEL_TIM_TIC,
    KERNEL_MIN_INTNO, KERNEL_MAX_INTNO,
    KERNEL_MAX_TSKID, KERNEL_RSV_TSKID,
    KERNEL_MAX_SEMID, KERNEL_RSV_SEMID,
    KERNEL_MAX_FLGID, KERNEL_RSV_FLGID,
    KERNEL_MAX_DTQID, KERNEL_RSV_DTQID,
    KERNEL_MAX_MBFID, KERNEL_RSV_MBFID,
    KERNEL_MAX_MBXID, KERNEL_RSV_MBXID,
    KERNEL_MAX_MPFID, KERNEL_RSV_MPFID,
    KERNEL_MAX_CYCID, KERNEL_RSV_CYCID,
    KERNEL_MAX_ISRID, KERNEL_RSV_ISRID



4. ÓIAPI̐

  ITRON4.0 W API ɂĂ ITRON4.0 dl QƂB
   ł HOS Ǝ API ɂĂ̂ݐ܂B



4.1 J[l̃q[v̎w

  yAPIz
      KERNEL_HEP_MEM(SIZE hepsz, VP hep);

  yp[^z
      SIZE   hepsz        J[l̃q[ṽTCY
      VP     sysstk       J[l̃q[v

  y@\z
      J[l͊e퓮IIuWFNg(cre_xxxacre_xxx)ɂāA
    IuWFNg𐶐ꍇAJ[l̃q[v烁
    蓖Ă܂B
      {APIł̓J[l̃q[vw肵܂B
      hep Ɏw肳ꂽAhXAhepsz Ŏw肳ꂽTCY
    ̈ACh̃X^bNɊ蓖Ă܂B
      hep  NULL w肵ꍇAhepsz Ŏw肳ꂽTCY
    RtBM[^IɊmۂ܂B


4.2 VXe^XÑX^bN̎w

  yAPIz
      KERNEL_SYS_STK(SIZE sysstksz, VP sysstk);

  yp[^z
      SIZE   sysstksz     VXe^XÑX^bÑTCY
      VP     sysstk       VXe^XÑX^bN

  y@\z
      J[l͎s^XNȂꍇ̃ACh[vsAKvɉ
    ꕔ̏J[l̃VXe^XNɂĎs܂B
    {APIł̓VXe^XÑX^bNw肵܂B
      sysstk Ɏw肳ꂽAhXAsysstksz Ŏw肳ꂽTCY
    ̈ACh̃X^bNɊ蓖Ă܂B
      sysstk  NULL w肵ꍇAsysstksz Ŏw肳ꂽTCYRtB
    M[^[IɊmۂ܂B
      w̏ꍇAftHgŃvZbTɍŒKvȃTCY蓖
    ܂AACh̗OŃX^bNʂɏꍇ
    {APIɂĒ邱Ƃ\łB


4.3 ݎ̃X^bN̎w

  yAPIz
      KERNEL_INT_STK(SIZE intstksz, VP intstk);
      KERNEL_INT_SP(VP intsp);

  yp[^z
      SIZE   intstksz     ݎ̃X^bÑTCY
      VP     intstk       ݎ̃X^bN
      VP     intsp        ݎ̏X^bN|C^l

  y@\z
      荞݂ꍇAX^bN͊ݗpX^bNɐ؂ւ܂B
      {APIł͊ݎɐ؂ւX^bNw肵܂B
      KERNEL_INT_STK  KERNEL_INT_SP ͓ɂ͗płAǂ炩Е
    pĎws܂B
      KERNEL_INT_STK ł́Aintstk Ɏw肳ꂽAhXAintstksz Ŏw
    ꂽTCỸ̈ݎ̃X^bNɊ蓖Ă܂B
      intstk  NULL w肵ꍇAintstksz Ŏw肳ꂽTCYRtB
    M[^[IɊmۂ܂B
      KERNEL_INT_SP ł́Aintsp Ɋݔ̃X^bN|C^l𒼐ڎw
    ł܂B

  y⑫z
      ݗp̃X^bN|C^l _kernel_int_isp ̖̂Ő܂B
    ʏAÑX^[gAbv[`s̃X^bNƊݗp̃X^bN
    LłׁAX^[gAbv[`ɂāA_kernel_int_sp QƂėp
    Ƃ\łB


4.4 ^CeBbN̎̎w

  yAPIz
      KERNEL_TIM_TIC(UW nume, UW deno);

  yp[^z
      UW      nume        ^CeBbN̎̕q
      UW      deno        ^CeBbN̎̕

  y@\z
      isig_tim ɂăJ[lɋ^CeBbN̎w肵܂B
      Ⴆ΁A 10/1 w肵ꍇAisig_tim PĂяoƂ
    J[l̃VXe10i݂܂B
      t 1/3 Ȃǂw肵ꍇɂ́Aisig_tim  3Ăяoď߂
    VXe1i݂܂B
      w肵ȂꍇftHg 1/1 ƂȂ܂B

  y⑫z
      Ⴆ  3.333... ms ̃C^[o^C}ɂāAisig_tim 
    ĂяoAVXe̒PʎԂ ms ɓꂵꍇȂǂ 10/3 
    w肷΁Aisig_tim  ĂяoƂɁA3, 3, 4, 3, 3, 3, 4...
    Ƃ3 isig_tim ̌ĂяoŁAVXe 10 i
    悤ɂȂ܂B


4.5 荞ݔԍ͈̔͂̎w

  yAPIz
      KERNEL_MIN_INTNO(INTNO minintno);
      KERNEL_MAX_INTNO(INTNO maxintno);

  yp[^z
      INTNO   minintno    荞ݔԍ̍ŏl
      INTNO   maxintno    荞ݔԍ̍ől

  y@\z
      荞ݔԍ̍őlƍŏlw肵܂B
      vZbT̃rWɂ藘pł銄荞ݔ͈͂قȂA
    prƂĎg͈͂ꍇA{APIŔ͈͂肵A݊Ǘe[u
    ʂ}邱Ƃ\ƂȂ܂B

  y⑫z
     vZbTɂẮAOvZbTO⃊ZbgȂǂ
    蓖ĂĂA荞ݔԍ㔼̔ԍn܂邱Ƃ
    ׁ̂Aŏlwł悤ɂȂĂ܂B
      w肵͈͂̕A荞݊Ǘe[u𐶐܂
    ŁAvZbTł͒`ĂĂpȂ͈͂OȂǂ
    ̍팸sƂ\łB


4.6 IuWFNg̍őID̎w

  yAPIz
      KERNEL_MAX_TSKID(ID maxtskid);
      KERNEL_MAX_SEMID(ID maxsemid);
      KERNEL_MAX_FLGID(ID maxflgid);
      KERNEL_MAX_DTQID(ID maxdtqid);
      KERNEL_MAX_MBXID(ID maxmbxid);
      KERNEL_MAX_MBFID(ID maxmbfid);
      KERNEL_MAX_MPFID(ID maxmpfid);
      KERNEL_MAX_CYCID(ID maxcycid);
      KERNEL_MAX_ISRID(ID maxisrid);

  yp[^z
      ID      maxtskid    ^XNID̍ől
      ID      maxsemid    Z}tHID̍ől
      ID      maxflgid    tOID̍ől
      ID      maxdtqid    f[^L[ID̍ől
      ID      maxmbxid    [{bNXID̍ől
      ID      maxmbfid    bZ[Wobt@ID̍ől
      ID      maxmpfid    Œ蒷v[ID̍ől
      ID      maxcycid    nhID̍ől
      ID      maxisrid    ݃T[rX[`ID̍ől

  y@\z
      eIuWFNgID̍őlw肵܂B
      w肵ȂꍇftHgŃRtBM[^Ő
    IuWFNgpĂőIDԍɂȂ܂B

  y⑫z
      cre_tsk  cre_sem ƂAIɃIuWFNg𐶐
    ꍇAŎw肵͈͂𒴂ID͗po܂B
      pID͈͂K؂Ȕ͈͂ɐݒ肷邱ƂŁAIDǗ
    Lɗp邱Ƃ\łB
      ȂA{@\IDԂ\񂷂邾ł̂ŁAsɃ
    sĂꍇ acre_xxx  cre_xxx ̎s E_NOMEM 
    Ԃꍇ܂B


4.8 IuWFNgIDԂ̗\

  yAPIz
      KERNEL_RSV_TSKID(ID tskidno);
      KERNEL_RSV_SEMID(ID semidno);
      KERNEL_RSV_FLGID(ID flgidno);
      KERNEL_RSV_DTQID(ID dtqidno);
      KERNEL_RSV_MBXID(ID mbxidno);
      KERNEL_RSV_MBFID(ID mbfidno);
      KERNEL_RSV_MPFID(ID mpfidno);
      KERNEL_RSV_CYCID(ID cycidno);

  yp[^z
      ID      tskidno    \񂷂^XNID
      ID      semidno    \񂷂Z}tHID
      ID      flgidno    \񂷂CxgtOID
      ID      dtqidno    \񂷂f[^L[ID
      ID      mbxidno    \񂷂郁[{bNXID
      ID      mbfidno    \񂷂郁bZ[Wobt@ID
      ID      mpfidno    \񂷂郁v[ID
      ID      cycidno    \񂷂nhID

  y@\z
      s acre_xxx  cre_xxx ŃIuWFNg𐶐ׂIDԂ
    \񂵂܂B̎w肪ƁAÓIɉ xxxidno 
    IDԂmۂ܂B

  y⑫z
  
      {Iɂ KERNEL_MAX_XXXIDƓprAPIłAID̍őlł
    Ȃ\(=ÓIp\ID)w肷_قȂ
    ܂B܂A{API͕w肪Aۂɗ\񂳂IuWFNg
    ͎w肳ꂽ\񐔂̑aƂȂ܂B
      KERNEL_MAX_XXXIDƂ͔rIȊ֌Wɂ܂B𓯎Ɏgp邱
    Ƃ͏o܂B
      ȂA{@\ KERNEL_MAX_XXXID ƓlIDԂ\񂷂邾
    ł̂ŁAsɃsĂꍇ acre_xxx  cre_xxx 
    s E_NOMEM Ԃꍇ܂B



------------------------------------------------------------------------------
 end of file
------------------------------------------------------------------------------
