Ignore:
Timestamp:
Jun 27, 2017, 10:53:32 AM (7 years ago)
Author:
ertl-honda
Message:

3.1.0を反映

Location:
asp3_wo_tecs/trunk/kernel
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • asp3_wo_tecs/trunk/kernel/dataqueue.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: dataqueue.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     55#   $Id: dataqueue.trb 668 2016-03-03 13:57:53Z ertl-hiro $
    5656#
    5757
     
    6666
    6767  def prepare(key, params)
     68    # パラメータが省略された時のデフォルト値の設定
     69    params[:dtqmb] ||= "NULL"
     70
    6871    # dtqatrが無効の場合(E_RSATR)[NGKI1669ï¼½
    6972    #(TA_TPRI以外のビットがセットされている場合)
     
    7477    # dtqmbがNULLでない場合(E_NOSPT)[ASPS0132ï¼½
    7578    if params[:dtqmb] != "NULL"
    76       error_illegal_id("E_PAR", params, :dtqmb, :dtqid)
     79      error_illegal_id("E_NOSPT", params, :dtqmb, :dtqid)
    7780    end
    7881
    7982    # データキュー管理領域
    8083    if params[:dtqcnt] > 0
    81       $kernelCfgC.add("static DTQMB _kernel_dtqmb_#{params[:dtqid]}" \
    82                                                                                                 "[#{params[:dtqcnt]}];")
     84      dtqmbName = "_kernel_dtqmb_#{params[:dtqid]}"
     85      $kernelCfgC.add("static DTQMB #{dtqmbName}[#{params[:dtqcnt]}];")
     86      params[:dtqinib_dtqmb] = dtqmbName
     87    else
     88      params[:dtqinib_dtqmb] = "NULL"
    8389    end
    8490  end
    8591
    8692  def generateInib(key, params)
    87     if params[:dtqcnt] > 0
    88       dtqmb = "_kernel_dtqmb_#{params[:dtqid]}"
    89     else
    90       dtqmb = "NULL"
    91     end
    92     return("(#{params[:dtqatr]}), (#{params[:dtqcnt]}), #{dtqmb}")
     93    return("(#{params[:dtqatr]}), (#{params[:dtqcnt]}), " \
     94                                                                                "#{params[:dtqinib_dtqmb]}")
    9395  end
    9496end
  • asp3_wo_tecs/trunk/kernel/exception.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: exception.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     55#   $Id: exception.trb 663 2016-02-27 04:45:50Z ertl-hiro $
    5656#
    5757
     
    7676  # excatrが無効の場合(E_RSATR)[NGKI3131ï¼½
    7777  #(TARGET_EXCATR以外のビットがセットされている場合)
    78   if (params[:excatr] & ~$TARGET_EXCATR) != 0
     78  if (params[:excatr] & ~($TARGET_EXCATR)) != 0
    7979    error_illegal_sym("E_RSATR", params, :excatr, :excno)
    8080  end
     
    8585報の生成
    8686#
    87 if $OMIT_INITIALIZE_EXCEPTION.nil?
     87if !$OMIT_INITIALIZE_EXCEPTION
    8888  #
    8989  #  定義するCPU例外ハンドラの数
    9090  #
    91   $kernelCfgC.append(<<EOS)
     91  $kernelCfgC.add(<<EOS)
    9292#define TNUM_DEF_EXCNO  #{$cfgData[:DEF_EXC].size}
    9393const uint_t _kernel_tnum_def_excno = TNUM_DEF_EXCNO;
    94 
    9594EOS
    9695
  • asp3_wo_tecs/trunk/kernel/genoffset.trb

    r304 r306  
    5252#   ã®è²¬ä»»ã‚’負わない.
    5353#
    54 #   $Id: genoffset.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     54#   $Id: genoffset.trb 662 2016-02-27 02:33:51Z ertl-hiro $
    5555#
    5656
     
    7575#
    7676def GenerateDefine(symbol, value)
    77   $offsetH.add("#define #{symbol}\t#{value.val}")
     77  $offsetH.add("#define #{symbol}\t#{value}")
    7878end
    7979
  • asp3_wo_tecs/trunk/kernel/interrupt.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: interrupt.trb 612 2016-02-08 04:27:57Z ertl-hiro $
     55#   $Id: interrupt.trb 678 2016-03-06 02:36:09Z ertl-hiro $
    5656#
    5757
     
    7878#  トレースログマクロのデフォルト定義
    7979#
    80 $kernelCfgC.append(<<EOS)
     80$kernelCfgC.add(<<EOS)
    8181#ifndef LOG_ISR_ENTER
    8282#define LOG_ISR_ENTER(isrid)
     
    8686#define LOG_ISR_LEAVE(isrid)
    8787#endif /* LOG_ISR_LEAVE */
    88 
    8988EOS
    9089
     
    105104#
    106105if $INTPRI_CFGINT_VALID.nil?
    107   $INTPRI_CFGINT_VALID = $TMIN_INTPRI.val.upto($TMAX_INTPRI.val).to_a
     106  $INTPRI_CFGINT_VALID = $TMIN_INTPRI.upto($TMAX_INTPRI).to_a
    108107end
    109108
     
    151150    if !$INTNO_FIX_NONKERNEL.index(params[:intno]).nil?
    152151      if params[:intpri] >= $TMIN_INTPRI
    153         error_ercd("E_OBJ", params, "intno `#{params[:intno]}'" \
    154                                                         " must have higher priority than TMIN_INTPRI")
     152        error_ercd("E_OBJ", params, "%%intno must have higher priority " \
     153                                                                                        "than TMIN_INTPRI in %apiname")
    155154      end
    156155    end
     
    162161    if !$INTNO_FIX_KERNEL.index(params[:intno]).nil?
    163162      if params[:intpri] < $TMIN_INTPRI
    164         error_ercd("E_OBJ", params, "intno `#{params[:intno]}'" \
    165                                         " must have lower or equal priority to TMIN_INTPRI")
     163        error_ercd("E_OBJ", params, "%%intno must have lower or equal " \
     164                                                                        "priority to TMIN_INTPRI in %apiname")
    166165      end
    167166    end
     
    180179  # inhatrが無効の場合(E_RSATR)[NGKI3052ï¼½
    181180  #(TARGET_INHATR以外のビットがセットされている場合)
    182   if (params[:inhatr] & ~$TARGET_INHATR) != 0
     181  if (params[:inhatr] & ~($TARGET_INHATR)) != 0
    183182    error_illegal_sym("E_RSATR", params, :inhatr, :inhno)
    184183  end
     
    189188    if !$INHNO_FIX_NONKERNEL.index(params[:inhno]).nil?
    190189      if (params[:inhatr] & $TA_NONKERNEL) == 0
    191         error_ercd("E_RSATR", params, "inhno `#{params[:inhno]}'" \
    192                                                                         " must be non-kernel interrupt")
     190        error_ercd("E_RSATR", params, "%%inhno must be " \
     191                                                                "non-kernel interrupt in %apiname")
    193192      end
    194193    end
     
    200199    if !$INHNO_FIX_KERNEL.index(params[:inhno]).nil?
    201200      if (params[:inhatr] & $TA_NONKERNEL) != 0
    202         error_ercd("E_RSATR", params, "inhno `#{params[:inhno]}'" \
    203                                                                         " must not be non-kernel interrupt")
     201        error_ercd("E_RSATR", params, "%%inhno must not be " \
     202                                                                "non-kernel interrupt in %apiname")
    204203      end
    205204    end
     
    211210    # inhnoに対応するintnoに対するCFG_INTがない場合(E_OBJ)[NGKI3062ï¼½
    212211    if !$cfgData[:CFG_INT].has_key?(intnoVal)
    213       error_ercd("E_OBJ", params, "intno `#{intnoVal}' corresponding to" \
    214                                 " inhno `#{params[:inhno]}' is not configured with CFG_INT")
     212      error_ercd("E_OBJ", params, "intno `#{intnoVal}' corresponding to " \
     213                                        "%%inhno in %apiname is not configured with CFG_INT")
    215214    else
    216215      intnoParams = $cfgData[:CFG_INT][intnoVal]
     
    221220        # さい場合(E_OBJ)[NGKI3065ï¼½
    222221        if intnoParams[:intpri] < $TMIN_INTPRI
    223           error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}'" \
    224                                                 " configured for inhno `#{params[:inhno]}' must" \
    225                                                 " be lower or equal to TMIN_INTPRI")
     222          error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}' " \
     223                                "configured for %%inhno must be lower or equal to TMIN_INTPRI")
    226224        end
    227225      else
     
    231229        # 場合(E_OBJ)[NGKI3066ï¼½
    232230        if intnoParams[:intpri] >= $TMIN_INTPRI
    233           error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}'" \
    234                                                 " configured for inhno `#{params[:inhno]}' must" \
    235                                                 " be higher than with TMIN_INTPRI")
     231          error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}' " \
     232                                        "configured for %%inhno must be higher than TMIN_INTPRI")
    236233        end
    237234      end
     
    246243  #     isratrが無効の場合(E_RSATR)[NGKI2998ï¼½
    247244  #(TARGET_ISRATR以外のビットがセットされている場合)
    248   if (params[:isratr] & ~$TARGET_ISRATR) != 0
     245  if (params[:isratr] & ~($TARGET_ISRATR)) != 0
    249246    error_illegal("E_RSATR", params, "isratr")
    250247  end
     
    267264  isrParamsList = []
    268265  $cfgData[:CRE_ISR].sort.each do |key, params|
    269     if params[:intno].val == intnoVal
     266    if params[:intno] == intnoVal
    270267      isrParamsList.push(params)
    271268    end
     
    279276    if $cfgData[:DEF_INH].has_key?(inhnoVal)
    280277      inhnoParams = $cfgData[:DEF_INH][inhnoVal]
    281       error_ercd("E_OBJ", isrParamsList[0], \
    282                                         "intno `#{isrParamsList[0][:intno]}' in CRE_ISR" \
    283                                         " is duplicated with inhno #{inhnoParams[:inhno]}")
     278      error_ercd("E_OBJ", isrParamsList[0], "%%intno in %apiname " \
     279                                        "is duplicated with inhno #{inhnoParams[:inhno]}")
    284280    end
    285281
    286282    # intnoに対するCFG_INTがない場合(E_OBJ)[NGKI3012ï¼½
    287283    if !$cfgData[:CFG_INT].has_key?(intnoVal)
    288       error_ercd("E_OBJ", isrParamsList[0], \
    289                                                 "intno `#{isrParamsList[0][:intno]}'" \
    290                                                 " is not configured with CFG_INT")
     284      error_ercd("E_OBJ", isrParamsList[0], "%%intno in %apiname " \
     285                                                                        "is not configured with CFG_INT")
    291286    else
    292287      intnoParams = $cfgData[:CFG_INT][intnoVal]
     
    297292      if intnoParams[:intpri] < $TMIN_INTPRI
    298293        error_ercd("E_OBJ", isrParamsList[0],
    299                                                 "intpri `#{intnoParams[:intpri]}' configured for" \
    300                                                 " intno `#{isrParamsList[0][:intno]}}' in higher" \
    301                                                 " than TMIN_INTPRI")
     294                                                "intpri `#{intnoParams[:intpri]}' configured for " \
     295                                                "%%intno with CFG_INT in higher than TMIN_INTPRI")
    302296      end
    303297    end
     
    305299    # 次のDEF_INHに相当するデータを生成
    306300    # DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> } );
    307     params = {
    308       :inhno => StrVal.new(inhnoVal.to_s, inhnoVal),
    309       :inhatr => $TA_NULL,
    310       :inthdr => StrVal.new("_kernel_inthdr_#{intnoVal}")
     301    $cfgData[:DEF_INH][inhnoVal] = {
     302      inhno: NumStr.new(inhnoVal),
     303      inhatr: NumStr.new($TA_NULL, "TA_NULL"),
     304      inthdr: "_kernel_inthdr_#{intnoVal}"
    311305    }
    312     $cfgData[:DEF_INH][inhnoVal] = params
    313306
    314307    # 割込みサービスルーチン用の割込みハンドラ
     
    340333報の生成
    341334#
    342 if $OMIT_INITIALIZE_INTERRUPT.nil? || !$USE_INHINIB_TABLE.nil?
     335if !$OMIT_INITIALIZE_INTERRUPT || $USE_INHINIB_TABLE
    343336  #
    344337  #  定義する割込みハンドラの数
    345338  #
    346   $kernelCfgC.append(<<EOS)
     339  $kernelCfgC.add(<<EOS)
    347340#define TNUM_DEF_INHNO  #{$cfgData[:DEF_INH].size}
    348341const uint_t _kernel_tnum_def_inhno = TNUM_DEF_INHNO;
    349 
    350342EOS
    351343
     
    388380報の生成
    389381#
    390 if $OMIT_INITIALIZE_INTERRUPT.nil? || !$USE_INTINIB_TABLE.nil?
     382if !$OMIT_INITIALIZE_INTERRUPT || $USE_INTINIB_TABLE
    391383  #
    392384  #  設定する割込み要求ラインの数
    393385  #
    394   $kernelCfgC.append(<<EOS)
     386  $kernelCfgC.add(<<EOS)
    395387#define TNUM_CFG_INTNO  #{$cfgData[:CFG_INT].size}
    396388const uint_t _kernel_tnum_cfg_intno = TNUM_CFG_INTNO;
    397 
    398389EOS
    399390
  • asp3_wo_tecs/trunk/kernel/kernel.trb

    r305 r306  
    4545#       å
    4646è²¬ã™ã‚‹ã“と.
    47 #
     47# 
    4848#   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    4949お
     
    5252#   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    5353#   ã®è²¬ä»»ã‚’負わない.
    54 #
    55 #   $Id: kernel.trb 588 2016-02-05 12:54:58Z ertl-hiro $
    56 #
     54# 
     55#   $Id: kernel.trb 670 2016-03-03 15:08:11Z ertl-hiro $
     56# 
    5757
    5858#
     
    6060#
    6161
    62 # 
     62#
    6363#  タイムスタンプファイルの指定
    64 # 
     64#
    6565$timeStampFileName = "kernel_cfg.timestamp"
    6666
     
    7070#
    7171$kernelCfgH = GenFile.new("kernel_cfg.h")
    72 $kernelCfgH.append(<<EOS)
     72$kernelCfgH.add(<<EOS)
    7373/* kernel_cfg.h */
    7474#ifndef TOPPERS_KERNEL_CFG_H
    7575#define TOPPERS_KERNEL_CFG_H
    76 
    7776EOS
    7877
     
    8281#
    8382$kernelCfgC = GenFile.new("kernel_cfg.c")
    84 $kernelCfgC.append(<<EOS)
     83$kernelCfgC.add(<<EOS)
    8584/* kernel_cfg.c */
    8685#include "kernel/kernel_int.h"
     
    9089#error The kernel does not match this configuration file.
    9190#endif
    92 
    93 EOS
    94 
    95 #
     91EOS
     92
     93#
    9694#  インクルードディレクティブ(#include)
    97 # 
     95#
    9896$kernelCfgC.comment_header("Include Directives")
    9997$includeFiles.each do |file|
     
    142140
    143141    # オブジェクトのID番号を保持する変数
    144     if !$USE_EXTERNAL_ID.nil?
     142    if $USE_EXTERNAL_ID
    145143      $cfgData[@api].sort.each do |key, params|
    146144        $kernelCfgC.add("const ID #{params[@objid]}_id" \
     
    224222                                                                || (nfymode2 == $TENFY_SETFLG && epar2.nil?)
    225223    # パラメータが足りない場合
    226     error_api(params, "too few parameters for nfymode `#{nfymode}'" \
    227                                                         " in #{params[:apiname]} of #{params[objid]}")
     224    error_api(params, "too few parameters for nfymode `#{nfymode}' " \
     225                                                                                        "in %apiname of %#{objid}")
    228226  elsif (nfymode2 == 0 && !epar1.nil?) \
    229227                                        || (nfymode2 != $TENFY_SETFLG && !epar2.nil?)
    230228    # パラメータが多すぎる場合
    231     error_api(params, "too many parameters for nfymode `#{nfymode}'" \
    232                                                         " in #{params[:apiname]} of #{params[objid]}")
     229    error_api(params, "too many parameters for nfymode `#{nfymode}' " \
     230                                                                                        "in %apiname of %#{objid}")
    233231  elsif nfymode == $TNFY_HANDLER
    234232    # タイムイベントハンドラの呼出し
     
    354352IncludeTrb("kernel/exception.trb")
    355353
    356 # 
     354#
    357355#  非タスクコンテキスト用のスタック領域
    358 # 
     356#
    359357$kernelCfgC.comment_header("Stack Area for Non-task Context")
    360358
    361 if $cfgData[:DEF_ICS].size() == 0
     359if $cfgData[:DEF_ICS].size == 0
    362360  # DEF_ICSがない場合のデフォルト値の設定
    363361  if $DEFAULT_ISTK.nil?
     
    371369else
    372370  # 静的API「DEF_ICS」が複数ある(E_OBJ)[NGKI3216ï¼½
    373   if $cfgData[:DEF_ICS].size() > 1
     371  if $cfgData[:DEF_ICS].size > 1
    374372    error("E_OBJ: too many DEF_ICS")
    375373  end
     
    378376  params = $cfgData[:DEF_ICS][1]
    379377
     378  # パラメータが省略された時のデフォルト値の設定
     379  params[:istk] ||= "NULL"
     380
    380381  # istkszがターゲット定義の最小値(TARGET_MIN_ISTKSZ,未定義の場合は1)
    381382  # よりも小さい場合(E_PAR)[NGKI3254ï¼½
    382   if params[:istksz] <= $TARGET_MIN_ISTKSZ
     383  if params[:istksz] < $TARGET_MIN_ISTKSZ
    383384    error_wrong("E_PAR", params, :istksz, "too small")
    384385  end
    385386
    386   if (params[:istk] == "NULL")
     387  if params[:istk] == "NULL"
    387388    # スタック領域の自動割付け
    388         istksz = AllocStack("_kernel_istack", params[:istksz])
     389    istksz = AllocStack("_kernel_istack", params[:istksz])
    389390    istk = "_kernel_istack"
    390391  else
     
    399400end
    400401
    401 $kernelCfgC.append(<<EOS)
     402$kernelCfgC.add(<<EOS)
    402403const size_t _kernel_istksz = #{istksz};
    403404STK_T *const _kernel_istk = #{istk};
     
    406407STK_T *const _kernel_istkpt = TOPPERS_ISTKPT(#{istk}, #{istksz});
    407408#endif /* TOPPERS_ISTKPT */
    408 
    409 EOS
    410 
    411 #
     409EOS
     410
     411#
    412412#  タイムイベント管理
    413 # 
     413#
    414414$kernelCfgC.comment_header("Time Event Management")
    415 $kernelCfgC.append(<<EOS)
     415$kernelCfgC.add(<<EOS)
    416416TMEVTN   _kernel_tmevt_heap[1 + TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];
    417 
    418 EOS
    419 
    420 #
     417EOS
     418
     419#
    421420#  各モジュールの初期化関数
    422 # 
     421#
    423422$kernelCfgC.comment_header("Module Initialization Function")
    424423$kernelCfgC.append(<<EOS)
     
    428427EOS
    429428$initializeFunctions.each do |func|
    430         $kernelCfgC.add("\t#{func}")
     429  $kernelCfgC.add("\t#{func}")
    431430end
    432431$kernelCfgC.add2("}")
    433432
    434 # 
     433#
    435434#  初期化ルーチン機能
    436 #
    437 #
     435#
    438436$kernelCfgC.comment_header("Initialization Routine")
    439437
     
    442440  # iniatrが無効の場合(E_RSATR)[NGKI3241ï¼½
    443441  #(TA_NULLでない場合)
    444   if (params[:iniatr] != 0)
     442  if (params[:iniatr] != $TA_NULL)
    445443    error_illegal_sym("E_RSATR", params, :iniatr, :inirtn)
    446444  end
     
    459457$kernelCfgC.add2("}")
    460458
    461 # 
     459#
    462460#  終了処理ルーチン機能
    463 # 
     461#
    464462$kernelCfgC.comment_header("Termination Routine")
    465463
     
    468466  # teratrが無効の場合(E_RSATR)[NGKI3248ï¼½
    469467  #(TA_NULLでない場合)
    470   if (params[:teratr] != 0)
     468  if (params[:teratr] != $TA_NULL)
    471469    error_illegal_sym("E_RSATR", params, :teratr, :terrtn)
    472470  end
  • asp3_wo_tecs/trunk/kernel/kernel_api.def

    r304 r306  
    1 CRE_TSK #tskid* { .tskatr &exinf &task +itskpri .stksz &stk }
     1CRE_TSK #tskid* { .tskatr &exinf &task +itskpri .stksz &stk? }
    22CRE_SEM #semid* { .sematr .isemcnt .maxsem }
    33CRE_FLG #flgid* { .flgatr .iflgptn }
    4 CRE_DTQ #dtqid* { .dtqatr .dtqcnt &dtqmb }
    5 CRE_PDQ #pdqid* { .pdqatr .pdqcnt +maxdpri &pdqmb }
     4CRE_DTQ #dtqid* { .dtqatr .dtqcnt &dtqmb? }
     5CRE_PDQ #pdqid* { .pdqatr .pdqcnt +maxdpri &pdqmb? }
    66CRE_MTX #mtxid* { .mtxatr +ceilpri? }
    7 CRE_MPF #mpfid* { .mpfatr .blkcnt .blksz &mpf &mpfmb }
     7CRE_MPF #mpfid* { .mpfatr .blkcnt .blksz &mpf? &mpfmb? }
    88CRE_CYC #cycid* { .cycatr { .nfymode &par1 &par2? &par3? &par4? } .cyctim .cycphs }
    99CRE_ALM #almid* { .almatr { .nfymode &par1 &par2? &par3? &par4? } }
     
    1212DEF_INH .inhno* { .inhatr &inthdr }
    1313DEF_EXC .excno* { .excatr &exchdr }
    14 DEF_ICS { .istksz &istk }
     14DEF_ICS { .istksz &istk? }
    1515ATT_INI { .iniatr &exinf &inirtn }
    1616ATT_TER { .teratr &exinf &terrtn }
  • asp3_wo_tecs/trunk/kernel/kernel_check.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: kernel_check.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     55#   $Id: kernel_check.trb 662 2016-02-27 02:33:51Z ertl-hiro $
    5656
    5757
     
    7979    elsif startIdata.nil?
    8080      error_exit("symbol `lma[:START_IDATA]' not found")
     81    else
     82      BCOPY(startIdata, startData, endData - startData)
    8183    end
    8284  end
     
    8789報のチェック関数
    8890#
    89 $tmax_tskid = PEEK(SYMBOL("_kernel_tmax_tskid"), $sizeof_ID)
    90 $tmax_semid = PEEK(SYMBOL("_kernel_tmax_semid"), $sizeof_ID)
    91 $tmax_flgid = PEEK(SYMBOL("_kernel_tmax_flgid"), $sizeof_ID)
    92 $tmax_dtqid = PEEK(SYMBOL("_kernel_tmax_dtqid"), $sizeof_ID)
     91$tmax_tskid = $TMIN_TSKID + $cfgData[:CRE_TSK].size - 1
     92$tmax_semid = $TMIN_SEMID + $cfgData[:CRE_SEM].size - 1
     93$tmax_flgid = $TMIN_FLGID + $cfgData[:CRE_FLG].size - 1
     94$tmax_dtqid = $TMIN_DTQID + $cfgData[:CRE_DTQ].size - 1
    9395
    9496def checkNotifyHandler(key, params, objid, exinf, nfyhdr)
     
    122124      error_wrong_id("E_PAR", params1, :tmehdr, objid, "not aligned")
    123125    end
    124     if $CHECK_FUNC_NONNULL == 1 && tmehdr == 0
     126    if $CHECK_FUNC_NONNULL && tmehdr == 0
    125127      error_wrong_id("E_PAR", params1, :tmehdr, objid, "null")
    126128    end
     
    138140      error_wrong_id("E_PAR", params1, :p_var, objid, "not aligned")
    139141    end
    140     if $CHECK_INTPTR_NONNULL == 1 && p_var == 0
     142    if $CHECK_INTPTR_NONNULL && p_var == 0
    141143      error_wrong_id("E_PAR", params1, :p_var, objid, "null")
    142144    end
     
    194196      error_wrong_id("E_PAR", params1, :p_var, objid, "not aligned")
    195197    end
    196     if $CHECK_INTPTR_NONNULL == 1 && p_var == 0
     198    if $CHECK_INTPTR_NONNULL && p_var == 0
    197199      error_wrong_id("E_PAR", params1, :p_var, objid, "null")
    198200    end
     
    244246#
    245247tinib = SYMBOL("_kernel_tinib_table")
    246 $cfgData[:CRE_TSK].each do |key, params|
     248$cfgData[:CRE_TSK].sort.each do |key, params|
     249  task = PEEK(tinib + $offsetof_TINIB_task, $sizeof_TASK)
     250
    247251  # タスクのå
    248252ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI1033ï¼½
    249   task = PEEK(tinib + $offsetof_TINIB_task, $sizeof_FP)
    250253  if (task & ($CHECK_FUNC_ALIGN - 1)) != 0
    251254    error_wrong_id("E_PAR", params, :task, :tskid, "not aligned")
    252255  end
    253   if $CHECK_FUNC_NONNULL == 1 && task == 0
     256  if $CHECK_FUNC_NONNULL && task == 0
    254257    error_wrong_id("E_PAR", params, :task, :tskid, "null")
    255258  end
     
    257260  # タスクのスタック領域のå
    258261ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI1056ï¼½
    259   if $USE_TSKINICTXB == 1
    260     stk = GetStackTskinictxb(key, params)
     262  if $USE_TSKINICTXB
     263    stk = GetStackTskinictxb(key, params, tinib)
    261264  else
    262265    stk = PEEK(tinib + $offsetof_TINIB_stk, $sizeof_void_ptr)
     
    265268    error_wrong_id("E_PAR", params, :stk, :tskid, "not aligned")
    266269  end
    267   if $CHECK_STACK_NONNULL == 1 && stk == 0
     270  if $CHECK_STACK_NONNULL && stk == 0
    268271    error_wrong_id("E_PAR", params, :stk, :tskid, "null")
    269272  end
     
    276279#
    277280mpfinib = SYMBOL("_kernel_mpfinib_table")
    278 $cfgData[:CRE_MPF].each do |key, params|
     281$cfgData[:CRE_MPF].sort.each do |key, params|
    279282  mpf = PEEK(mpfinib + $offsetof_MPFINIB_mpf, $sizeof_void_ptr)
    280283
     
    284287    error_wrong_id("E_PAR", params, :mpf, :mpfid, "not aligned")
    285288  end
    286   if $CHECK_MPF_NONNULL == 1 && mpf == 0
     289  if $CHECK_MPF_NONNULL && mpf == 0
    287290    error_wrong_id("E_PAR", params, :mpf, :mpfid, "null")
    288291  end
     
    295298#
    296299cycinib = SYMBOL("_kernel_cycinib_table")
    297 $cfgData[:CRE_CYC].each do |key, params|
     300$cfgData[:CRE_CYC].sort.each do |key, params|
    298301  exinf = PEEK(cycinib + $offsetof_CYCINIB_exinf, $sizeof_intptr_t)
    299   nfyhdr = PEEK(cycinib + $offsetof_CYCINIB_nfyhdr, $sizeof_FP)
     302  nfyhdr = PEEK(cycinib + $offsetof_CYCINIB_nfyhdr, $sizeof_NFYHDR)
    300303
    301304  #     é€šçŸ¥æƒ
     
    310313#
    311314alminib = SYMBOL("_kernel_alminib_table")
    312 $cfgData[:CRE_ALM].each do |key, params|
     315$cfgData[:CRE_ALM].sort.each do |key, params|
    313316  exinf = PEEK(alminib + $offsetof_ALMINIB_exinf, $sizeof_intptr_t)
    314   nfyhdr = PEEK(alminib + $offsetof_ALMINIB_nfyhdr, $sizeof_FP)
     317  nfyhdr = PEEK(alminib + $offsetof_ALMINIB_nfyhdr, $sizeof_NFYHDR)
    315318
    316319  #     é€šçŸ¥æƒ
     
    324327#  非タスクコンテキスト用のスタック領域に関するチェック
    325328#
    326 istk = PEEK(SYMBOL("_kernel_istk"), $sizeof_void_ptr)
    327 
    328 # 非タスクコンテキスト用のスタック領域のå
     329istkAddr = SYMBOL("_kernel_istk")
     330if !istkAddr.nil?
     331  istk = PEEK(istkAddr, $sizeof_void_ptr)
     332
     333  # 非タスクコンテキスト用のスタック領域のå
    329334ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI3222ï¼½
    330 if (istk & ($CHECK_STACK_ALIGN - 1)) != 0
    331   error_wrong("E_PAR", $cfgData[:DEF_ICS][1], :istk, "not aligned")
    332 end
    333 if $CHECK_STACK_NONNULL == 1 && istk == 0
    334   error_wrong("E_PAR", $cfgData[:DEF_ICS][1], :istk, "null")
    335 end
     335  if (istk & ($CHECK_STACK_ALIGN - 1)) != 0
     336    error_wrong("E_PAR", $cfgData[:DEF_ICS][1], :istk, "not aligned")
     337  end
     338  if $CHECK_STACK_NONNULL && istk == 0
     339    error_wrong("E_PAR", $cfgData[:DEF_ICS][1], :istk, "null")
     340  end
     341end
  • asp3_wo_tecs/trunk/kernel/kernel_impl.h

    r302 r306  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2004-2015 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2004-2016 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: kernel_impl.h 332 2015-06-21 13:20:37Z ertl-hiro $
     55 *  $Id: kernel_impl.h 706 2016-03-29 14:19:40Z ertl-hiro $
    5656 */
    5757
     
    8888 */
    8989#include <t_syslog.h>
    90 
    91 /*
    92  *  型キャストを行うマクロの定義
    93  */
    94 #ifndef CAST
    95 #define CAST(type, val)         ((type)(val))
    96 #endif /* CAST */
    9790
    9891/*
  • asp3_wo_tecs/trunk/kernel/kernel_sym.def

    r305 r306  
    1 USE_EXTERNAL_ID,1,,defined(USE_EXTERNAL_ID)
    2 SIL_ENDIAN_BIG,1,,defined(SIL_ENDIAN_BIG)
    3 SIL_ENDIAN_LITTLE,1,,defined(SIL_ENDIAN_LITTLE)
     1USE_EXTERNAL_ID,true,bool,defined(USE_EXTERNAL_ID)
     2SIL_ENDIAN_BIG,true,bool,defined(SIL_ENDIAN_BIG)
     3SIL_ENDIAN_LITTLE,true,bool,defined(SIL_ENDIAN_LITTLE)
    44TA_NULL
    55TA_ACT
     
    4848TMIN_CYCID,,signed
    4949TMIN_ALMID,,signed
    50 USE_TSKINICTXB,1,,defined(USE_TSKINICTXB)
    51 OMIT_INITIALIZE_INTERRUPT,1,,defined(OMIT_INITIALIZE_INTERRUPT)
    52 USE_INHINIB_TABLE,1,,defined(USE_INHINIB_TABLE)
    53 USE_INTINIB_TABLE,1,,defined(USE_INTINIB_TABLE)
    54 OMIT_INITIALIZE_EXCEPTION,1,,defined(OMIT_INITIALIZE_EXCEPTION)
     50USE_TSKINICTXB,true,bool,defined(USE_TSKINICTXB)
     51OMIT_INITIALIZE_INTERRUPT,true,bool,defined(OMIT_INITIALIZE_INTERRUPT)
     52USE_INHINIB_TABLE,true,bool,defined(USE_INHINIB_TABLE)
     53USE_INTINIB_TABLE,true,bool,defined(USE_INTINIB_TABLE)
     54OMIT_INITIALIZE_EXCEPTION,true,bool,defined(OMIT_INITIALIZE_EXCEPTION)
    5555DEFAULT_ISTK,,,defined(DEFAULT_ISTK)
    5656TARGET_TSKATR,,,defined(TARGET_TSKATR),0
     
    6363CHECK_STKSZ_ALIGN,,,defined(CHECK_STKSZ_ALIGN),1
    6464CHECK_INTPTR_ALIGN,,,defined(CHECK_INTPTR_ALIGN),1
    65 CHECK_INTPTR_NONNULL,1,,defined(CHECK_INTPTR_NONNULL)
     65CHECK_INTPTR_NONNULL,true,bool,defined(CHECK_INTPTR_NONNULL)
    6666CHECK_FUNC_ALIGN,,,defined(CHECK_FUNC_ALIGN),1
    67 CHECK_FUNC_NONNULL,1,,defined(CHECK_FUNC_NONNULL)
     67CHECK_FUNC_NONNULL,true,bool,defined(CHECK_FUNC_NONNULL)
    6868CHECK_STACK_ALIGN,,,defined(CHECK_STACK_ALIGN),1
    69 CHECK_STACK_NONNULL,1,,defined(CHECK_STACK_NONNULL)
     69CHECK_STACK_NONNULL,true,bool,defined(CHECK_STACK_NONNULL)
    7070CHECK_MPF_ALIGN,,,defined(CHECK_MPF_ALIGN),1
    71 CHECK_MPF_NONNULL,1,,defined(CHECK_MPF_NONNULL)
     71CHECK_MPF_NONNULL,true,bool,defined(CHECK_MPF_NONNULL)
    7272sizeof_void_ptr,sizeof(void*)
    7373sizeof_uint_t,sizeof(uint_t)
     
    7676sizeof_ID,sizeof(ID)
    7777sizeof_FP,sizeof(FP)
     78sizeof_INTNO,sizeof(INTNO)
    7879sizeof_INHNO,sizeof(INHNO)
    79 sizeof_INTNO,sizeof(INTNO)
    8080sizeof_EXCNO,sizeof(EXCNO)
     81sizeof_TASK,sizeof(TASK)
     82sizeof_TMEHDR,sizeof(TMEHDR)
     83sizeof_ISR,sizeof(ISR)
     84sizeof_INTHDR,sizeof(INTHDR)
     85sizeof_EXCHDR,sizeof(EXCHDR)
     86sizeof_INIRTN,sizeof(INIRTN)
     87sizeof_TERRTN,sizeof(TERRTN)
     88sizeof_NFYHDR,sizeof(NFYHDR)
    8189sizeof_TINIB,sizeof(TINIB)
    8290offsetof_TINIB_tskatr,"offsetof(TINIB,tskatr)"
  • asp3_wo_tecs/trunk/kernel/mempfix.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: mempfix.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     55#   $Id: mempfix.trb 672 2016-03-05 15:33:08Z ertl-hiro $
    5656#
    5757
     
    6666
    6767  def prepare(key, params)
     68    # パラメータが省略された時のデフォルト値の設定
     69    params[:mpf] ||= "NULL"
     70    params[:mpfmb] ||= "NULL"
     71
    6872    # mpfatrが無効の場合(E_RSATR)[NGKI2225ï¼½
    6973    #(TA_TPRI以外のビットがセットされている場合)
     
    7276    end
    7377
    74     # blkcntが0以下の場合(E_PAR)[NGKI2229ï¼½
    75     if params[:blkcnt] <= 0
     78    # blkcntが0の場合(E_PAR)[NGKI2229ï¼½
     79    if params[:blkcnt] == 0
    7680      error_illegal_id("E_PAR", params, :blkcnt, :mpfid)
    7781    end
    7882
    79     # blkszが0以下の場合(E_PAR)[NGKI2230ï¼½
    80     if params[:blksz] <= 0
     83    # blkszが0の場合(E_PAR)[NGKI2230ï¼½
     84    if params[:blksz] == 0
    8185      error_illegal_id("E_PAR", params, :blksz, :mpfid)
    8286    end
     
    8488    # 固定長メモリプール領域
    8589    if params[:mpf] == "NULL"
    86       $kernelCfgC.add("static MPF_T _kernel_mpf_#{params[:mpfid]}" \
     90      mpfName = "_kernel_mpf_#{params[:mpfid]}"
     91      $kernelCfgC.add("static MPF_T #{mpfName}" \
    8792                                "[#{params[:blkcnt]} * COUNT_MPF_T(#{params[:blksz]})];")
     93      params[:mpfinib_mpf] = mpfName
     94    else
     95      params[:mpfinib_mpf] = "(void *)(#{params[:mpf]})"
    8896    end
    8997
    9098    # mpfmbがNULLでない場合(E_NOSPT)[ASPS0166ï¼½
    9199    if params[:mpfmb] != "NULL"
    92       error_illegal_id("E_PAR", params, :mpfmb, :mpfid)
     100      error_illegal_id("E_NOSPT", params, :mpfmb, :mpfid)
    93101    end
    94102
    95103    # 固定長メモリプール管理領域
    96     $kernelCfgC.add("static MPFMB _kernel_mpfmb_#{params[:mpfid]}" \
    97                                                                                                 "[#{params[:blkcnt]}];")
     104    mpfmbName = "_kernel_mpfmb_#{params[:mpfid]}"
     105    $kernelCfgC.add("static MPFMB #{mpfmbName}[#{params[:blkcnt]}];")
     106    params[:mpfinib_mpfmb] = mpfmbName
    98107  end
    99108
    100109  def generateInib(key, params)
    101     if params[:mpf] == "NULL"
    102       mpf = "_kernel_mpf_#{params[:mpfid]}"
    103     else
    104       mpf = "(void *)(#{params[:mpf]})"
    105     end
    106110    return("(#{params[:mpfatr]}), (#{params[:blkcnt]}), " \
    107                                         "ROUND_MPF_T(#{params[:blksz]}), #{mpf}, " \
    108                                         "_kernel_mpfmb_#{params[:mpfid]}")
     111                        "ROUND_MPF_T(#{params[:blksz]}), #{params[:mpfinib_mpf]}, " \
     112                        "#{params[:mpfinib_mpfmb]}")
    109113  end
    110114end
  • asp3_wo_tecs/trunk/kernel/mutex.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: mutex.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     55#   $Id: mutex.trb 630 2016-02-14 11:30:17Z ertl-hiro $
    5656#
    5757
     
    7878      # ceilpriが未指定の場合はエラーとする
    7979      if params[:ceilpri].nil?
    80         error_api(params, "ceilpri must be specified" \
    81                                                         " in #{params[:apiname]} of #{param[:mtxid]}")
     80        error_api(params, "ceilpri must be specified in %apiname of %mtxid")
    8281
    8382      # (TMIN_TPRI <= ceilpri && ceilpri <= TMAX_TPRI)でない場合(E_PAR)
     
    9190      # ceilpriが指定されている場合は警告メッセージを出す
    9291      if !params[:ceilpri].nil?
    93         warning_api(params, "ceilpri `#{params[:ceilpri]}' is ignored" \
    94                                                                 " in #{params[:apiname]} of #{params[:mtxid]}")
     92        warning_api(params, "%%ceilpri is ignored in %apiname of %mtxid")
    9593      end
    9694      params[:ceilpri] = 0
  • asp3_wo_tecs/trunk/kernel/pridataq.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: pridataq.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     55#   $Id: pridataq.trb 668 2016-03-03 13:57:53Z ertl-hiro $
    5656#
    5757
     
    6767
    6868  def prepare(key, params)
     69    # パラメータが省略された時のデフォルト値の設定
     70    params[:pdqmb] ||= "NULL"
     71
    6972    # pdqatrが無効の場合(E_RSATR)[NGKI1804ï¼½
    7073    #(TA_TPRI以外のビットがセットされている場合)
     
    8184    # pdqmbがNULLでない場合(E_NOSPT)[ASPS0142ï¼½
    8285    if params[:pdqmb] != "NULL"
    83       error_illegal_id("E_PAR", params, :pdqmb, :pdqid)
     86      error_illegal_id("E_NOSPT", params, :pdqmb, :pdqid)
    8487    end
    8588
     
    8790ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†é ˜åŸŸ
    8891    if params[:pdqcnt] > 0
    89       $kernelCfgC.add("static PDQMB _kernel_pdqmb_#{params[:pdqid]}" \
    90                                                                                                 "[#{params[:pdqcnt]}];")
     92      pdqmbName = "_kernel_pdqmb_#{params[:pdqid]}"
     93      $kernelCfgC.add("static PDQMB #{pdqmbName}[#{params[:pdqcnt]}];")
     94      params[:pdqinib_pdqmb] = pdqmbName
     95    else
     96      params[:pdqinib_pdqmb] = "NULL"
    9197    end
    9298  end
    9399
    94100  def generateInib(key, params)
    95     if params[:pdqcnt] > 0
    96       pdqmb = "_kernel_pdqmb_#{params[:pdqid]}"
    97     else
    98       pdqmb = "NULL"
    99     end
    100101    return("(#{params[:pdqatr]}), (#{params[:pdqcnt]}), " \
    101                                                                         "(#{params[:maxdpri]}), #{pdqmb}")
     102                                "(#{params[:maxdpri]}), #{params[:pdqinib_pdqmb]}")
    102103  end
    103104end
  • asp3_wo_tecs/trunk/kernel/startup.c

    r302 r306  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2005-2014 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2005-2016 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: startup.c 181 2014-06-14 16:45:07Z ertl-hiro $
     55 *  $Id: startup.c 509 2016-01-12 06:06:14Z ertl-hiro $
    5656 */
    5757
  • asp3_wo_tecs/trunk/kernel/sys_manage.c

    r302 r306  
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: sys_manage.c 469 2015-12-30 02:38:47Z ertl-hiro $
     55 *  $Id: sys_manage.c 682 2016-03-11 13:52:39Z ertl-hiro $
    5656 */
    5757
     
    174174/*
    175175 *  タスクの優å
    176 ˆé †ä½ã®å›žè»¢
     176ˆé †ä½ã®å›žè»¢ï¼»NGKI3548ï¼½
    177177 */
    178178#ifdef TOPPERS_rot_rdq
     
    185185
    186186        LOG_ROT_RDQ_ENTER(tskpri);
    187         CHECK_UNL();
     187        CHECK_UNL();                                                            /*ï¼»NGKI2684ï¼½*/
    188188        if (tskpri == TPRI_SELF && !sense_context()) {
    189                 pri = p_runtsk->bpriority;
     189                pri = p_runtsk->bpriority;                              /*ï¼»NGKI2689ï¼½*/
    190190        }
    191191        else {
    192                 CHECK_PAR(VALID_TPRI(tskpri));
     192                CHECK_PAR(VALID_TPRI(tskpri));                  /*ï¼»NGKI2685ï¼½*/
    193193                pri = INT_PRIORITY(tskpri);
    194194        }
     
    217217 *  実行状æ
    218218‹ã®ã‚¿ã‚¹ã‚¯IDの参ç
    219 §
     219§ï¼»NGKI3550ï¼½
    220220 */
    221221#ifdef TOPPERS_get_tid
     
    227227
    228228        LOG_GET_TID_ENTER(p_tskid);
    229         CHECK_UNL();
     229        CHECK_UNL();                                                            /*ï¼»NGKI2707ï¼½*/
    230230
    231231        lock_cpu();
     
    243243/*
    244244 *  実行できるタスクの数の参ç
    245 §
     245§ï¼»NGKI3623ï¼½
    246246 */
    247247#ifdef TOPPERS_get_lod
     
    255255
    256256        LOG_GET_LOD_ENTER(p_tskid, p_load);
    257         CHECK_TSKCTX_UNL();
     257        CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3624][NGKI3625ï¼½*/
    258258        if (tskpri == TPRI_SELF) {
    259                 pri = p_runtsk->bpriority;
     259                pri = p_runtsk->bpriority;                              /*ï¼»NGKI3631ï¼½*/
    260260        }
    261261        else {
    262                 CHECK_PAR(VALID_TPRI(tskpri));
     262                CHECK_PAR(VALID_TPRI(tskpri));                  /*ï¼»NGKI3626ï¼½*/
    263263                pri = INT_PRIORITY(tskpri);
    264264        }
     
    285285 *  指定した優å
    286286ˆé †ä½ã®ã‚¿ã‚¹ã‚¯IDの参ç
    287 §
     287§ï¼»NGKI3641ï¼½
    288288 */
    289289#ifdef TOPPERS_get_nth
     
    298298
    299299        LOG_GET_NTH_ENTER(p_tskid, nth, p_tskid);
    300         CHECK_TSKCTX_UNL();
     300        CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3642][NGKI3643ï¼½*/
    301301        if (tskpri == TPRI_SELF) {
    302                 pri = p_runtsk->bpriority;
     302                pri = p_runtsk->bpriority;                              /*ï¼»NGKI3650ï¼½*/
    303303        }
    304304        else {
    305                 CHECK_PAR(VALID_TPRI(tskpri));
     305                CHECK_PAR(VALID_TPRI(tskpri));                  /*ï¼»NGKI3644ï¼½*/
    306306                pri = INT_PRIORITY(tskpri);
    307307        }
     
    331331/*
    332332 *  CPUロック状æ
    333 ‹ã¸ã®é·ç§»
     333‹ã¸ã®é·ç§»ï¼»NGKI3538ï¼½
    334334 */
    335335#ifdef TOPPERS_loc_cpu
     
    342342        LOG_LOC_CPU_ENTER();
    343343
    344         if (!sense_lock()) {
    345                 lock_cpu();
     344        if (!sense_lock()) {                                            /*ï¼»NGKI2731ï¼½*/
     345                lock_cpu();                                                             /*ï¼»NGKI2730ï¼½*/
    346346        }
    347347        ercd = E_OK;
     
    355355/*
    356356 *  CPUロック状æ
    357 ‹ã®è§£é™¤
     357‹ã®è§£é™¤ï¼»NGKI3539ï¼½
    358358 *
    359359 *  CPUロック中は,ディスパッチがå¿
     
    373373        LOG_UNL_CPU_ENTER();
    374374
    375         if (sense_lock()) {
    376                 unlock_cpu();
     375        if (sense_lock()) {                                                     /*ï¼»NGKI2738ï¼½*/
     376                unlock_cpu();                                                   /*ï¼»NGKI2737ï¼½*/
    377377        }
    378378        ercd = E_OK;
     
    385385
    386386/*
    387  *  ディスパッチの禁止
     387 *  ディスパッチの禁止[NGKI2740ï¼½
    388388 */
    389389#ifdef TOPPERS_dis_dsp
     
    395395
    396396        LOG_DIS_DSP_ENTER();
    397         CHECK_TSKCTX_UNL();
     397        CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI2741][NGKI2742ï¼½*/
    398398
    399399        lock_cpu();
     
    411411
    412412/*
    413  *  ディスパッチの許可
     413 *  ディスパッチの許可[NGKI2746ï¼½
    414414 */
    415415#ifdef TOPPERS_ena_dsp
     
    421421
    422422        LOG_ENA_DSP_ENTER();
    423         CHECK_TSKCTX_UNL();
     423        CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI2747][NGKI2748ï¼½*/
    424424
    425425        lock_cpu();
     
    454454/*
    455455 *  コンテキストの参ç
    456 §
     456§ï¼»NGKI2752ï¼½
    457457 */
    458458#ifdef TOPPERS_sns_ctx
     
    474474 *  CPUロック状æ
    475475‹ã®å‚ç
    476 §
     476§ï¼»NGKI2754ï¼½
    477477 */
    478478#ifdef TOPPERS_sns_loc
     
    494494 *  ディスパッチ禁止状æ
    495495‹ã®å‚ç
    496 §
     496§ï¼»NGKI2756ï¼½
    497497 */
    498498#ifdef TOPPERS_sns_dsp
     
    514514 *  ディスパッチ保留状æ
    515515‹ã®å‚ç
    516 §
     516§ï¼»NGKI2758ï¼½
    517517 */
    518518#ifdef TOPPERS_sns_dpn
     
    534534 *  カーネル非動作状æ
    535535‹ã®å‚ç
    536 §
     536§ï¼»NGKI2760ï¼½
    537537 */
    538538#ifdef TOPPERS_sns_ker
  • asp3_wo_tecs/trunk/kernel/task.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: task.trb 596 2016-02-06 17:08:56Z ertl-hiro $
     55#   $Id: task.trb 668 2016-03-03 13:57:53Z ertl-hiro $
    5656#
    5757
     
    6666
    6767  def prepare(key, params)
     68    # パラメータが省略された時のデフォルト値の設定
     69    params[:stk] ||= "NULL"
     70
    6871    # tskatrが無効の場合(E_RSATR)[NGKI1028ï¼½
    6972    #(TA_ACT,TA_NOACTQUE,TARGET_TSKATR以外のビットがセットされている場合)
     
    8588    # スタック領域の設定[NGKI1041ï¼½
    8689    if params[:stk] == "NULL"
    87       params[:tinib_stksz] = AllocStack("_kernel_stack_#{params[:tskid]}", \
    88                                                                                                                         params[:stksz])
    89       params[:tinib_stk] = "_kernel_stack_#{params[:tskid]}"
     90      # スタック領域の生成[NGKI1049ï¼½
     91      stkName = "_kernel_stack_#{params[:tskid]}"
     92      params[:tinib_stksz] = AllocStack(stkName, params[:stksz])
     93      params[:tinib_stk] = stkName
    9094    else
    9195      # stkszがスタック領域のサイズとして正しくない場合[NGKI1056ï¼½
     
    100104
    101105  def generateInib(key, params)
    102     if $USE_TSKINICTXB == 1
     106    if $USE_TSKINICTXB
    103107      tskinictxb = GenerateTskinictxb(key, params)
    104108    else
  • asp3_wo_tecs/trunk/kernel/time_event.c

    r305 r306  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2005-2015 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2005-2016 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: time_event.c 451 2015-08-14 15:29:07Z ertl-hiro $
     55 *  $Id: time_event.c 532 2016-01-15 14:48:04Z ertl-hiro $
    5656 */
    5757
Note: See TracChangeset for help on using the changeset viewer.