Ignore:
Timestamp:
Jun 2, 2015, 3:39:53 PM (9 years ago)
Author:
nmir-saito
Message:

ファイルの mime-type 変更

Location:
ssp_qb_r5f100le_cs/trunk/kernel
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • ssp_qb_r5f100le_cs/trunk/kernel/Makefile.kernel

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    1212#             Nagoya Municipal Industrial Research Institute, JAPAN
    1313#
    14 #  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    15 #  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    16 #  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    17 #  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    18 #      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    19 #      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    20 #  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21 #      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—p
    23 #      ŽÒƒ}ƒjƒ
    24 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    25 #      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    26 #  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    27 #      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    28 #      ‚ƁD
    29 #    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    30 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    31 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    32 #        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    33 #    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    34 #        •ñ‚·‚邱‚ƁD
    35 #  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    36 #      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    37 #      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    38 #      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    39 #      –Ɛӂ·‚邱‚ƁD
     14#  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     15#  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     16#  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     17#  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     18#      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     19#      スコード中に含まれていること.
     20#  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     21#      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     22#      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     23#      の無保証規定を掲載すること.
     24#  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     25#      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     26#      と.
     27#    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     28#        作権表示,この利用条件および下記の無保証規定を掲載すること.
     29#    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     30#        報告すること.
     31#  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     32#      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     33#      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     34#      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     35#      免責すること.
    4036#
    41 –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    42 ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    43 ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    44 ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    45 ‚̐ӔC‚𕉂í‚È‚¢D
     37本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     38よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     39に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     40アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     41の責任を負わない.
    4642#
    4743
    4844#
    49 #               ƒJ[ƒlƒ‹‚̃tƒ@ƒCƒ‹\¬‚Ì’è‹`
     45#               カーネルのファイル構成の定義
    5046#
    5147
    5248#
    53 #  1‚‚̃\[ƒXƒtƒ@ƒCƒ‹‚©‚ç•¡”‚̃IƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹‚𐶐¬‚·‚é‚悤‚ɍì
    54 ¬‚³‚ꂽƒ\[ƒXƒtƒ@ƒCƒ‹‚̃ŠƒXƒg
     49#  1つのソースファイルから複数のオブジェクトファイルを生成するように作
     50成されたソースファイルのリスト
    5551#
    5652KERNEL_FCSRCS = startup.c task.c task_manage.c                                  \
     
    6056
    6157#
    62 Šeƒ\[ƒXƒtƒ@ƒCƒ‹‚©‚琶¬‚³‚ê‚éƒIƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹‚̃ŠƒXƒg
     58各ソースファイルから生成されるオブジェクトファイルのリスト
    6359#
    6460startup = sta_ker.o ext_ker.o
     
    8985
    9086#
    91 ¶¬‚³‚ê‚éƒIƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹‚̈ˑ¶ŠÖŒW‚Ì’è‹`
     87生成されるオブジェクトファイルの依存関係の定義
    9288#
    9389$(startup) $(startup:.o=.s) $(startup:.o=.d): startup.c
  • ssp_qb_r5f100le_cs/trunk/kernel/allfunc.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    99 *  Copyright (C) 2011-2012 by Meika Sugimoto
    1010 *
    11  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    12  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    13  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    14  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    15  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    16  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    17  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    18  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    19 ƒƒ“ƒgi—˜—pŽÒƒ}
    20  *      ƒjƒ
    21 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    22  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    23  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    24  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    28  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    30  *        ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    32  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    33  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    34  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
     11 *  上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
     12 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
     13 *  再配布(以下,利用と呼ぶ)することを無償で許諾する.
     14 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
     15 *      表示,この利用条件および下記の無保証規定が,そのままの形でソース
     16 *      コード中に含まれていること.
     17 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
     18 *      できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
     19 *      ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
     20 *      証規定を掲載すること.
     21 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
     22 *      できない形で再配布する場合には,次のいずれかの条件を満たすこと.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
     24 *        権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
     26 *        告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
     28 *      からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
     29 *      本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
     30 *      く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3531 *
    36  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    37  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    38  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    39  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    40  *  ‚í‚È‚¢D
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     33 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     34 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     35 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     36 *  わない.
    4137 *
    4238 */
    4339
    4440/*
    45  *              ‚·‚ׂĂ̊֐”‚ðƒRƒ“ƒpƒCƒ‹‚·‚邽‚ß‚Ì’è‹`
     41 *              すべての関数をコンパイルするための定義
    4642 */
    4743
  • ssp_qb_r5f100le_cs/trunk/kernel/check.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    1111 *  Copyright (C) 2011 by Meika Sugimoto
    1212 *
    13  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    15  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    17  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    18  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—p
    22  *      ŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    24  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    26  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    27  *      ‚ƁD
    28  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    29 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    30 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    31  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    32  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    33  *        •ñ‚·‚邱‚ƁD
    34  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    35  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    36  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    37  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    38  *      –Ɛӂ·‚邱‚ƁD
    39  *
    40  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    41  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    42  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    43  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    44  *  ‚̐ӔC‚𕉂í‚È‚¢D
     13 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     14 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     15 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     17 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     18 *      スコード中に含まれていること.
     19 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     20 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     21 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     22 *      の無保証規定を掲載すること.
     23 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     24 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     25 *      と.
     26 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     27 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     28 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     29 *        報告すること.
     30 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     31 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     32 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     33 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     34 *      免責すること.
     35 *
     36 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     37 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     38 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     39 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     40 *  の責任を負わない.
    4541 *
    4642 *  @(#) $Id: exception.h 648 2007-12-15 09:35:35Z hiro $
     
    5652 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    5753 *
    58  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    59  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    60  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    61  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    62  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    63  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    64  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    65  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    66 ƒƒ“ƒgi—˜—p
    67  *      ŽÒƒ}ƒjƒ
    68 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    69  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    70  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    71  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    72  *      ‚ƁD
    73  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    74 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    75 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    76  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    77  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    78  *        •ñ‚·‚邱‚ƁD
    79  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    80  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    81  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    82  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    83  *      –Ɛӂ·‚邱‚ƁD
    84  *
    85  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    86  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    87  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    88  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    89  *  ‚̐ӔC‚𕉂í‚È‚¢D
     54 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     55 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     56 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     57 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     58 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     59 *      スコード中に含まれていること.
     60 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     61 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     62 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     63 *      の無保証規定を掲載すること.
     64 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     65 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     66 *      と.
     67 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     68 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     69 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     70 *        報告すること.
     71 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     72 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     73 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     74 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     75 *      免責すること.
     76 *
     77 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     78 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     79 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     80 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     81 *  の責任を負わない.
    9082 *
    9183 *  @(#) $Id: check.h 1139 2008-06-19 07:03:34Z ertl-hiro $
     
    9385
    9486/*
    95  *              ƒGƒ‰[ƒ`ƒFƒbƒN—pƒ}ƒNƒ
     87 *              エラーチェック用マクロ
    9688 */
    9789
     
    10092
    10193/*
    102  *  ƒ^ƒXƒN—Dæ“x‚͈̔͂̔»’è
     94 *  タスク優先度の範囲の判定
    10395 */
    10496#define VALID_TPRI(tpri)        (TMIN_TPRI <= (tpri) && (tpri) <= TMAX_TPRI)
    10597
    10698/*
    107  *  Š„ž‚ݔԍ†‚̃`ƒFƒbƒNiE_PARj
     99 *  割込み番号のチェック(E_PAR)
    108100 */
    109101#define CHECK_INTNO_DISINT(intno) {                                                     \
     
    115107
    116108/*
    117  *  ‚»‚Ì‘¼‚̃pƒ‰ƒ[ƒ^ƒGƒ‰[‚̃`ƒFƒbƒNiE_PARj
     109 *  その他のパラメータエラーのチェック(E_PAR)
    118110 */
    119111#define CHECK_PAR(exp) {                                                                        \
     
    125117
    126118/*
    127  *  ƒIƒuƒWƒFƒNƒgID‚͈̔͂̔»’è
     119 *  オブジェクトIDの範囲の判定
    128120 */
    129121#define VALID_TSKID(tskid)      \
     
    139131
    140132/*
    141  *  ƒIƒuƒWƒFƒNƒgID‚̃`ƒFƒbƒNiE_IDj
     133 *  オブジェクトIDのチェック(E_ID)
    142134 */
    143135#define CHECK_TSKID(tskid) {                                                            \
     
    185177
    186178/*
    187  *  ŒÄo‚µƒRƒ“ƒeƒLƒXƒg‚̃`ƒFƒbƒNiE_CTXj
     179 *  呼出しコンテキストのチェック(E_CTX)
    188180 */
    189181#define CHECK_TSKCTX() {                                                                        \
     
    202194
    203195/*
    204  *  ŒÄo‚µƒRƒ“ƒeƒLƒXƒg‚ÆCPUƒƒbƒNó‘Ԃ̃`ƒFƒbƒNiE_CTXj
     196 *  呼出しコンテキストとCPUロック状態のチェック(E_CTX)
    205197 */
    206198#define CHECK_TSKCTX_UNL() {                                                            \
     
    219211
    220212/*
    221  *  ‚»‚Ì‘¼‚̃Rƒ“ƒeƒLƒXƒgƒGƒ‰[‚̃`ƒFƒbƒNiE_CTXj
     213 *  その他のコンテキストエラーのチェック(E_CTX)
    222214 */
    223215#define CHECK_CTX(exp) {                                                                        \
  • ssp_qb_r5f100le_cs/trunk/kernel/exception.c

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    1111 *  Copyright (C) 2010 by Meika Sugimoto
    1212 *
    13  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    15  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    17  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    18  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    20  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—pŽÒƒ}
    22  *      ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    24  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    26  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    27  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    28 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    29 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    30  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    31  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    32  *        ‚·‚邱‚ƁD
    33  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    34  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    35  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    36  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
     13 *  上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
     14 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
     15 *  再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
     17 *      表示,この利用条件および下記の無保証規定が,そのままの形でソース
     18 *      コード中に含まれていること.
     19 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
     20 *      できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
     21 *      ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
     22 *      証規定を掲載すること.
     23 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
     24 *      できない形で再配布する場合には,次のいずれかの条件を満たすこと.
     25 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
     26 *        権表示,この利用条件および下記の無保証規定を掲載すること.
     27 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
     28 *        告すること.
     29 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
     30 *      からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
     31 *      本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
     32 *      く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3733 *
    38  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    39  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    40  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    41  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    42  *  ‚í‚È‚¢D
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     35 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     36 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     37 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     38 *  わない.
    4339 *
    4440 */
    4541
    4642/*
    47  *              CPU—áŠOŠÇ—‹@”\
     43 *              CPU例外管理機能
    4844 */
    4945
     
    5248
    5349/*
    54  *  CPU—áŠOƒnƒ“ƒhƒ‰ŠÇ—‹@”\‚̏‰Šú‰»
     50 *  CPU例外ハンドラ管理機能の初期化
    5551 */
    5652
  • ssp_qb_r5f100le_cs/trunk/kernel/exception.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    1111 *  Copyright (C) 2011 by Meika Sugimoto
    1212 *
    13  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    15  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    17  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    18  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—p
    22  *      ŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    24  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    26  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    27  *      ‚ƁD
    28  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    29 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    30 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    31  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    32  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    33  *        •ñ‚·‚邱‚ƁD
    34  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    35  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    36  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    37  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    38  *      –Ɛӂ·‚邱‚ƁD
     13 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     14 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     15 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     17 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     18 *      スコード中に含まれていること.
     19 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     20 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     21 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     22 *      の無保証規定を掲載すること.
     23 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     24 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     25 *      と.
     26 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     27 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     28 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     29 *        報告すること.
     30 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     31 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     32 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     33 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     34 *      免責すること.
    3935 *
    40  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    41  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    42  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    43  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    44  *  ‚̐ӔC‚𕉂í‚È‚¢D
     36 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     37 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     38 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     39 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     40 *  の責任を負わない.
    4541 *
    4642 */
    4743
    4844/*
    49  *              CPU—áŠOŠÇ—‹@”\
     45 *              CPU例外管理機能
    5046 */
    5147
     
    5551#ifndef OMIT_INITIALIZE_EXCEPTION
    5652
    57 extern const EXCNO      excinib_excno[];        /* CPU—áŠOƒnƒ“ƒhƒ‰”ԍ† */
    58 extern const ATR        excinib_excatr[];       /* CPU—áŠOƒnƒ“ƒhƒ‰‘®« */
    59 extern const FP         excinib_entry[];        /* CPU—áŠOƒnƒ“ƒhƒ‰‚̏o“üŒûˆ—‚̔Ԓn */
     53extern const EXCNO      excinib_excno[];        /* CPU例外ハンドラ番号 */
     54extern const ATR        excinib_excatr[];       /* CPU例外ハンドラ属性 */
     55extern const FP         excinib_entry[];        /* CPU例外ハンドラの出入口処理の番地 */
    6056
    6157/*
    62  *  CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚̐”ikernel_cfg.cj
     58 *  CPU例外ハンドラ番号の数(kernel_cfg.c)
    6359 */
    6460extern const uint_t     tnum_excno;
     
    6864
    6965/*
    70  *  CPU—áŠOƒnƒ“ƒhƒ‰ŠÇ—‹@”\‚̏‰Šú‰»
     66 *  CPU例外ハンドラ管理機能の初期化
    7167 */
    7268extern void
  • ssp_qb_r5f100le_cs/trunk/kernel/interrupt.c

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    1111 *  Copyright (C) 2010-2011 by Meika Sugimoto
    1212 *
    13  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    15  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    17  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    18  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    20  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—pŽÒƒ}
    22  *      ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    24  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    26  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    27  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    28 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    29 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    30  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    31  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    32  *        ‚·‚邱‚ƁD
    33  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    34  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    35  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    36  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
     13 *  上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
     14 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
     15 *  再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
     17 *      表示,この利用条件および下記の無保証規定が,そのままの形でソース
     18 *      コード中に含まれていること.
     19 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
     20 *      できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
     21 *      ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
     22 *      証規定を掲載すること.
     23 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
     24 *      できない形で再配布する場合には,次のいずれかの条件を満たすこと.
     25 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
     26 *        権表示,この利用条件および下記の無保証規定を掲載すること.
     27 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
     28 *        告すること.
     29 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
     30 *      からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
     31 *      本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
     32 *      く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3733 *
    38  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    39  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    40  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    41  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    42  *  ‚í‚È‚¢D
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     35 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     36 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     37 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     38 *  わない.
    4339 *
    4440 */
    4541
    4642/*
    47  *              Š„ž‚ÝŠÇ—‹@”\
     43 *              割込み管理機能
    4844 */
    4945
     
    5551
    5652/*
    57  *  Š„ž‚ÝŠÇ—‹@”\‚̏‰Šú‰»
     53 *  割込み管理機能の初期化
    5854 */
    5955#ifdef TOPPERS_intini
     
    7773
    7874/*
    79  *  Š„ž‚Ý‚Ì‹ÖŽ~
     75 *  割込みの禁止
    8076 */
    8177#ifdef TOPPERS_dis_int
     
    117113
    118114/*
    119  *  Š„ž‚Ý‚Ì‹–‰Â
     115 *  割込みの許可
    120116 */
    121117#ifdef TOPPERS_ena_int
  • ssp_qb_r5f100le_cs/trunk/kernel/interrupt.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    1010 *             Nagoya Municipal Industrial Research Institute, JAPAN
    1111 *
    12  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    13  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    14  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    15  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    16  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    17  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    18  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    20 ƒƒ“ƒgi—˜—p
    21  *      ŽÒƒ}ƒjƒ
    22 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    23  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    24  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    25  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    26  *      ‚ƁD
    27  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    28 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    29 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    30  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    31  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    32  *        •ñ‚·‚邱‚ƁD
    33  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    34  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    35  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    36  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    37  *      –Ɛӂ·‚邱‚ƁD
     12 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     13 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     14 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     15 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     16 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     17 *      スコード中に含まれていること.
     18 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     19 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     20 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     21 *      の無保証規定を掲載すること.
     22 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     23 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     24 *      と.
     25 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     26 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     27 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     28 *        報告すること.
     29 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     30 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     31 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     32 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     33 *      免責すること.
    3834 *
    39  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    40  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    41  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    42  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    43  *  ‚̐ӔC‚𕉂í‚È‚¢D
     35 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     36 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     37 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     38 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     39 *  の責任を負わない.
    4440 *
    4541 */
    4642
    4743/*
    48  *              Š„ž‚ÝŠÇ—‹@”\
     44 *              割込み管理機能
    4945 */
    5046
     
    5551
    5652/*
    57  *  Š„ž‚݃nƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     53 *  割込みハンドラ初期化ブロックのエリア(kernel_cfg.c)
    5854 */
    59 extern const INHNO      inhinib_inhno[];                /* Š„ž‚݃nƒ“ƒhƒ‰”ԍ† */
    60 extern const ATR        inhinib_inhatr[];               /* Š„ž‚݃nƒ“ƒhƒ‰‘®« */
    61 extern const FP         inhinib_entry[];                /* Š„ž‚݃nƒ“ƒhƒ‰‚̏o“üŒûˆ—‚̔Ԓn */
     55extern const INHNO      inhinib_inhno[];                /* 割込みハンドラ番号 */
     56extern const ATR        inhinib_inhatr[];               /* 割込みハンドラ属性 */
     57extern const FP         inhinib_entry[];                /* 割込みハンドラの出入口処理の番地 */
    6258
    6359/*
    64  *  Š„ž‚Ý—v‹ƒ‰ƒCƒ“‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAikernel_cfg.cj
     60 *  割込み要求ライン初期化ブロックのエリア(kernel_cfg.c)
    6561 */
    66 extern const INTNO      intinib_intno[];                /* Š„ž‚ݔԍ† */
    67 extern const ATR        intinib_intatr[];               /* Š„ž‚Ý‘®« */
    68 extern const PRI        intinib_intpri[];               /* Š„ž‚Ý—Dæ“x */
     62extern const INTNO      intinib_intno[];                /* 割込み番号 */
     63extern const ATR        intinib_intatr[];               /* 割込み属性 */
     64extern const PRI        intinib_intpri[];               /* 割込み優先度 */
    6965
    7066/*
    71  *  Š„ž‚݃nƒ“ƒhƒ‰”ԍ†‚̐”ikernel_cfg.cj
     67 *  割込みハンドラ番号の数(kernel_cfg.c)
    7268 */
    7369extern const uint_t     tnum_inhno;
    7470
    7571/*
    76  *  Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚̐”ikernel_cfg.cj
     72 *  割込み要求ラインの数(kernel_cfg.c)
    7773 */
    7874extern const uint_t     tnum_intno;
     
    8278
    8379/*
    84  *  Š„ž‚ÝŠÇ—‹@”\‚̏‰Šú‰»
     80 *  割込み管理機能の初期化
    8581 */
    8682extern void
  • ssp_qb_r5f100le_cs/trunk/kernel/kernel.tf

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    1010$               Nagoya Municipal Industrial Research Institute, JAPAN
    1111$
    12 $  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    13 $  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    14 $  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    15 $  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    16 $      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    17 $      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    18 $  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    19 $      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    20 ƒƒ“ƒgi—˜—pŽÒƒ}
    21 $      ƒjƒ
    22 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    23 $      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    24 $  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    25 $      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    26 $    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    27 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    28 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    29 $        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    30 $    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    31 $        ‚·‚邱‚ƁD
    32 $  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    33 $      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    34 $      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    35 $      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    36 $
    37 $  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    38 $  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    39 $  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    40 $  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    41 $  ‚í‚È‚¢D
     12$  上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
     13$  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
     14$  再配布(以下,利用と呼ぶ)することを無償で許諾する.
     15$  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
     16$      表示,この利用条件および下記の無保証規定が,そのままの形でソース
     17$      コード中に含まれていること.
     18$  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
     19$      できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
     20$      ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
     21$      証規定を掲載すること.
     22$  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
     23$      できない形で再配布する場合には,次のいずれかの条件を満たすこと.
     24$    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
     25$        権表示,この利用条件および下記の無保証規定を掲載すること.
     26$    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
     27$        告すること.
     28$  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
     29$      からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
     30$      本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
     31$      く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     32$
     33$  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     34$  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     35$  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     36$  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     37$  わない.
    4238$
    4339$ ======================================================================
    4440
    45 $ ƒƒOo—Í
    46 $   Žw’肵‚½”‚¾‚¯s“ª‚Ƀ^ƒu‚ð‚‚¯‚Ä•\Ž¦‚·‚éD
    47 $   ƒR[ƒh‹y‚яo—͂̉“ǐ«‚ð‹“‚°‚邽‚ß‚ÉŽg‚¤D
    48 $     ˆø” : ARGV[1] : s“ª‚É‘}“ü‚·‚éƒ^ƒu‚̐”
    49 $     •Ô’l : ‹ó•¶Žš—ñ
    50 $     ’ˆÓ : RESULT‚𑀍삵‚Ä‚¢‚邽‚߁C‘¼‚̊֐”‚̏o—Í‚ð•Û‘¶‚·‚é‘O‚ɌĂяo‚·‚Ə㏑‚«‚³‚ê‚éD
     41$ ログ出力
     42$   指定した数だけ行頭にタブをつけて表示する.
     43$   コード及び出力の可読性を挙げるために使う.
     44$     引数 : ARGV[1] : 行頭に挿入するタブの数
     45$     返値 : 空文字列
     46$     注意 : RESULTを操作しているため,他の関数の出力を保存する前に呼び出すと上書きされる.
    5147$
    5248$FUNCTION LOG$
     
    5652
    5753$ =====================================================================
    58 $ ˆ—‘O‚̃`ƒFƒbƒN
     54$ 処理前のチェック
    5955$ =====================================================================
    6056
    61 $ ƒ^ƒXƒN‚ª1ŒÂˆÈã‘¶Ý‚·‚邱‚Ƃ̃`ƒFƒbƒN
     57$ タスクが1個以上存在することのチェック
    6258$IF !LENGTH(TSK.ID_LIST)$
    6359        $ERROR$$FORMAT("no task is registered")$$END$
     
    6561
    6662$ =====================================================================
    67 $ kernel_cfg.h ‚̐¶¬
     63$ kernel_cfg.h の生成
    6864$ =====================================================================
    6965
     
    8177$NL$
    8278
    83 $ // ƒ^ƒXƒNID‚ð‹N“®—Dæ“x(tskapri)‚̍‚‚¢‡‚É reallocate_tskapri ‚ÖŠ„‚è“–‚āC
    84 $ // ’è‹`‚ð kernel_cfg.h ‚֏o—Í‚·‚éD
     79$ // タスクIDを起動優先度(tskapri)の高い順に reallocate_tskapri へ割り当て,
     80$ // 定義を kernel_cfg.h へ出力する.
    8581$tsk_apriorder_list={}$
    8682$tsk_epri_list={}$
     
    9187        #define $TSK.TSKID[id]$ $tsk_index$$NL$
    9288
    93 $       DEF_EPR ‚Å’è‹`‚³‚ê‚Ä‚¢‚È‚¢ƒ^ƒXƒN‚ÌŽÀsŽž—Dæ“x‚ªC‹N“®—Dæ“x‚Æ“¯‚¶‚É‚È‚é‚悤‚É‚·‚éD
     89$       DEF_EPR で定義されていないタスクの実行時優先度が,起動優先度と同じになるようにする.
    9490        $tsk_epri_list = APPEND(tsk_epri_list, ALT(TSK.EXEPRI[TSK.TSKID[id]], TSK.ATSKPRI[TSK.TSKID[id]]))$
    9591        $tsk_index = tsk_index + 1$
     
    111107
    112108$ =====================================================================
    113 $ kernel_cfg.c‚̐¶¬
     109$ kernel_cfg.cの生成
    114110$ =====================================================================
    115111
     
    126122
    127123$ ---------------------------------------------------------------------
    128 ƒCƒ“ƒNƒ‹[ƒhƒfƒBƒŒƒNƒeƒBƒui#includej
     124インクルードディレクティブ(#include)
    129125$ ---------------------------------------------------------------------
    130126/*$NL$
     
    136132
    137133$ ---------------------------------------------------------------------
    138 ƒIƒuƒWƒFƒNƒg‚ÌID”ԍ†‚ð•ÛŽ‚·‚é•Ï”
     134オブジェクトのID番号を保持する変数
    139135$ ---------------------------------------------------------------------
    140136$IF USE_EXTERNAL_ID$
     
    161157
    162158$ ---------------------------------------------------------------------
    163 ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     159トレースログマクロのデフォルト定義
    164160$ ---------------------------------------------------------------------
    165161/*$NL$
     
    178174
    179175$ ---------------------------------------------------------------------
    180 $  ƒ^ƒXƒN‚ÉŠÖ‚·‚éo—Í
    181 $ ---------------------------------------------------------------------
    182 
    183 $
    184 $ ŽÀsŽž—Dæ“x‚̃Rƒ“ƒtƒBƒMƒ
    185 ƒŒ[ƒVƒ‡ƒ“‚ɐ¬Œ÷‚µ‚½‚©‚Ç‚¤‚©
    186 $
    187 $ DEF_EPR ˆ—’†‚ɃGƒ‰[‚ª”­¶‚µ‚½ê‡C‚±‚̕ϐ”‚ª0‚É‚È‚éD
    188 $ DEF_EPR ˆ—’†‚ɃGƒ‰[‚ª”­¶‚µ‚½‚©‚Ç‚¤‚©‚ð”»’f‚µ‚Ä
    189 $ “Á’菈—‚ÌŽÀs‚ðƒuƒƒbƒN‚·‚邽‚ß‚ÉŽg—p‚·‚éD
     176$  タスクに関する出力
     177$ ---------------------------------------------------------------------
     178
     179$
     180$ 実行時優先度のコンフィギュレーションに成功したかどうか
     181$
     182$ DEF_EPR 処理中にエラーが発生した場合,この変数が0になる.
     183$ DEF_EPR 処理中にエラーが発生したかどうかを判断して
     184$ 特定処理の実行をブロックするために使用する.
    190185$
    191186$configurated_defepr_successfully = 1$
     
    196191$NL$
    197192
    198 $ ƒ^ƒXƒNID”ԍ†‚̍őå’l
     193$ タスクID番号の最大値
    199194const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$
    200195$NL$
    201196
    202 $ ready_primap ‚̏‰Šú’l
     197$ ready_primap の初期値
    203198$init_rdypmap = 0$
    204199$tsk_index = 1$
    205200
    206 $ ƒ^ƒXƒN‘®«D
     201$ タスク属性.
    207202const ATR       _kernel_tinib_tskatr[TNUM_TSKID]    = {
    208203$JOINEACH tskid tsk_apriorder_list ","$
    209 $       // TA_ACT , TA_RSTR ‚Ü‚½‚Í TA_NULL ‚Å‚ ‚éiE_RSATRj
     204$       // TA_ACT , TA_RSTR または TA_NULL である(E_RSATR)
    210205        $IF (TSK.TSKATR[tskid] & ~(TA_ACT | TA_RSTR | ALT(TARGET_TSKATR,0))) != 0$
    211206                $ERROR TSK.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "tskatr", TSK.TSKATR[tskid], tskid, "CRE_TSK")$$END$
     
    223218const uint_t$TAB$_kernel_init_rdypmap = $init_rdypmap$U;$NL$
    224219
    225 $ Šg’£î•ñ(exinf)D ƒGƒ‰[‚̓Rƒ“ƒpƒCƒ‹Žž‚Ü‚½‚̓AƒvƒŠ‚̃eƒXƒg‚ÅŒŸo‚·‚邽‚߁C‚±‚±‚Å‚Í‚µ‚È‚¢D
     220$ 拡張情報(exinf). エラーはコンパイル時またはアプリのテストで検出するため,ここではしない.
    226221const intptr_t  _kernel_tinib_exinf[TNUM_TSKID]     = {
    227222$JOINEACH tskid tsk_apriorder_list ","$
     
    230225};$NL$
    231226
    232 $ ‹N“®”Ô’n(task)DƒGƒ‰[‚̓Rƒ“ƒpƒCƒ‹Žž‚Ü‚½‚̓AƒvƒŠ‚̃eƒXƒg‚ÅŒŸo‚·‚邽‚߁C‚±‚±‚Å‚Í‚µ‚È‚¢D
     227$ 起動番地(task).エラーはコンパイル時またはアプリのテストで検出するため,ここではしない.
    233228const TASK      _kernel_tinib_task[TNUM_TSKID]      = {
    234229$JOINEACH tskid tsk_apriorder_list ","$
     
    237232};$NL$
    238233
    239 $ ‹N“®—Dæ“x(atskpri)D
     234$ 起動優先度(atskpri).
    240235$FOREACH tskid tsk_apriorder_list$
    241 $       // atskpri ‚Í TMIN_TPRI ˆÈãCTMAX_TPRI ˆÈ‰º‚Å‚ ‚éDiE_PARj
     236$       // atskpri は TMIN_TPRI 以上,TMAX_TPRI 以下である.(E_PAR)
    242237        $IF !(TMIN_TPRI <= TSK.ATSKPRI[tskid] && TSK.ATSKPRI[tskid] <= TMAX_TPRI)$
    243238                $ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "atskpri", TSK.ATSKPRI[tskid], tskid, "CRE_TSK")$$END$
    244239        $END$
    245240
    246 $       // atskpri ‚͏d•¡‚ª‚È‚¢DiE_PARj
     241$       // atskpri は重複がない.(E_PAR)
    247242        $FOREACH tskid2 tsk_apriorder_list$
    248243                $IF tskid != tskid2 && TSK.ATSKPRI[tskid] == TSK.ATSKPRI[tskid2] $
     
    252247$END$
    253248
    254 $ ŽÀsŽž—Dæ“x(exepri)D
     249$ 実行時優先度(exepri).
    255250const uint_t    _kernel_tinib_epriority[TNUM_TSKID] = {
    256251$epri_allocated = 0$
     
    259254        $epri = AT(tsk_epri_list, tsk_index)$
    260255
    261 $       // exepri ‚Í TMIN_TPRI ˆÈã‚©‚ TMAX_TPRI ˆÈ‰º‚Å‚ ‚éD(E_PAR)
     256$       // exepri は TMIN_TPRI 以上かつ TMAX_TPRI 以下である.(E_PAR)
    262257        $IF TMIN_TPRI > epri || TMAX_TPRI < epri$
    263258                $configurated_defepr_successfully = 0$
     
    265260        $END$
    266261
    267 $       // exepri ‚Í atskpri ˆÈ‰º‚Ì’l‚ð‚à‚Â(—Dæ“x‚Æ‚µ‚Ä‚Í“¯‚¶‚©‚»‚ê‚æ‚荂‚¢)D(E_ILUSE)
     262$       // exepri は atskpri 以下の値をもつ(優先度としては同じかそれより高い).(E_ILUSE)
    268263        $IF epri <= TMAX_TPRI && epri > TSK.ATSKPRI[tskid]$
    269264                $configurated_defepr_successfully = 0$
     
    271266        $END$
    272267
    273 $       // exepri ‚Ì“à•”•\Œ»‚ðŒˆ’è‚µ reallocate_tskepri ‚ÉŠi”[D
     268$       // exepri の内部表現を決定し reallocate_tskepri に格納.
    274269        $FOREACH tskid2 tsk_apriorder_list $
    275270                $IF epri_allocated != 1 && epri <= TSK.ATSKPRI[tskid2]$
     
    285280
    286281$
    287 $ // —Dæ“xŠ„‚è“–‚ÄŒ‹‰Ê‚ðo—Í
     282$ // 優先度割り当て結果を出力
    288283$
    289284/*$NL$
     
    295290
    296291$
    297 ƒ^ƒXƒN‚̍őåƒXƒ^ƒbƒNŽg—p—Ê‚ÌŒvŽZ
    298 $
    299 
    300 $ ƒXƒ^ƒbƒNƒTƒCƒY‚ÉŠÖ‚·‚éƒGƒ‰[ƒ`ƒFƒbƒN
     292タスクの最大スタック使用量の計算
     293$
     294
     295$ スタックサイズに関するエラーチェック
    301296$FOREACH tskid TSK.ID_LIST$
    302 $       // stksz‚ª0‚©Cƒ^[ƒQƒbƒg’è‹`‚̍ŏ¬’liTARGET_MIN_STKSZj‚æ‚è‚à¬‚³‚¢ê‡iE_PARj
     297$       // stkszが0か,ターゲット定義の最小値(TARGET_MIN_STKSZ)よりも小さい場合(E_PAR)
    303298        $IF TSK.STKSZ[tskid] == 0 || (LENGTH(TARGET_MIN_STKSZ) &&
    304299                                                                                TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$
     
    308303
    309304
    310 $ ŠÖ”’è‹`
    311 $
    312 $
    313 $ ŠÖ”1: ‹N“®Žž—Dæ“x‚Ì’á‚¢‡‚Ƀ\[ƒeƒBƒ“ƒO‚·‚邽‚ß‚Ì”äŠrŠÖ”
     305$ 関数定義
     306$
     307$
     308$ 関数1: 起動時優先度の低い順にソーティングするための比較関数
    314309$
    315310$FUNCTION compare_tskapri_rev$
     
    318313
    319314$
    320 $ ŠÖ”2: Žw’肵‚½ƒ^ƒXƒN‚ɑ΂·‚éƒXƒ^ƒbƒNŽg—p—ʂ̍őå‚ðŒvŽZ‚·‚éŠÖ”
    321 $    ˆø” : ARGV[1] : ƒ^ƒXƒNID(“à•”•\Œ», ‹N“®Žž—Dæ“x‚Ì“à•”•\Œ»‚É“™‚µ‚¢)
    322 $    •Ô’l : RESULT  : “–ŠYƒ^ƒXƒN‚ɑ΂·‚éƒXƒ^ƒbƒNŽg—p—ʂ̍őå’lD
    323 $                     ‚±‚Ì’l‚́C“–ŠYƒ^ƒXƒN‚ÌŽÀsŠJŽn‚©‚çI—¹‚Ü‚Å‚ÌŠÔ‚É
    324 $                     ‚»‚̃^ƒXƒN‚ɑ΂·‚éƒvƒŠƒGƒ“ƒvƒg‚ðl—¶‚µ‚ăXƒ^ƒbƒNŽg—p—Ê‚ð
    325 $                     ŒvŽZ‚µ‚½ê‡‚ɁC‰Â”\«‚Ì‚ ‚é‘g‚ݍ‡‚킹‚Ì’†‚ōőå‚Æ‚È‚é’l‚ð•Ô‚·D
     315$ 関数2: 指定したタスクに対するスタック使用量の最大を計算する関数
     316$    引数 : ARGV[1] : タスクID(内部表現, 起動時優先度の内部表現に等しい)
     317$    返値 : RESULT  : 当該タスクに対するスタック使用量の最大値.
     318$                     この値は,当該タスクの実行開始から終了までの間に
     319$                     そのタスクに対するプリエンプトを考慮してスタック使用量を
     320$                     計算した場合に,可能性のある組み合わせの中で最大となる値を返す.
    326321$
    327322$nest_level = 0$
    328323$
    329324$FUNCTION calc_stksz$
    330 $       // •Ï”ƒŠƒXƒg
     325$       // 変数リスト
    331326        $nest_level = nest_level + 1$
    332327        $arg[nest_level] = ARGV[1]$
    333328        $calculated_stack_size = 0$
    334329
    335 $       // ˆ—ŠJŽn
     330$       // 処理開始
    336331$SPC$* $LOG(nest_level-1)$Calculation start (Task ID = $arg[nest_level]$, StackSize[$arg[nest_level]$]=$TSK.STKSZ[arg[nest_level]]$)$NL$
    337332
    338 $       // Žw’肵‚½ƒ^ƒXƒNID ‚̃Xƒ^ƒbƒNŒvŽZ‚ªŠ®—¹‚µ‚Ä‚¢‚é‚©
     333$       // 指定したタスクID のスタック計算が完了しているか
    339334        $IF     LENGTH(done[arg[nest_level]]) == 0$
    340335
    341336$SPC$* $LOG(nest_level)$Task list with higher priority than $arg[nest_level]$ = $higher_pri_tsklist[arg[nest_level]]$$NL$
    342337
    343 $               // (1) Š®—¹‚µ‚Ä‚¢‚È‚¢ê‡
    344 $               // •Ï”‚̏‰Šú‰»
     338$               // (1) 完了していない場合
     339$               // 変数の初期化
    345340                $max_stksz[arg[nest_level]] = 0$
    346341                $higher_pri_maxstksz[arg[nest_level]] = 0$
    347342
    348 $               // “–ŠYƒ^ƒXƒNID ‚ÌŽÀsŽž—Dæ“x‚æ‚荂‚¢‹N“®—Dæ“x‚ðŽ‚Âƒ^ƒXƒN‚ª‘¶Ý‚·‚éê‡
     343$               // 当該タスクID の実行時優先度より高い起動優先度を持つタスクが存在する場合
    349344                $IF LENGTH(higher_pri_tsklist[arg[nest_level]]) > 0$
    350 $                       // ‚»‚ꂼ‚ê‚̍‚—Dæ“xƒ^ƒXƒN‚ɑ΂µ
     345$                       // それぞれの高優先度タスクに対し
    351346                        $FOREACH id higher_pri_tsklist[arg[nest_level]]$
    352 $                               // Ä‹AŒÄo‚·‚é‚ƕϐ”‚ªã‘‚«‚³‚ê‚邽‚߁C•Û‘¶‚µ‚Ä‚¨‚­
     347$                               // 再帰呼出すると変数が上書きされるため,保存しておく
    353348                                $id_saved[nest_level] = id$
    354 $                               // ƒXƒ^ƒbƒNŒvŽZ‚ðŽÀs‚·‚é
     349$                               // スタック計算を実行する
    355350                                $calculated_stack_size = calc_stksz(id_saved[nest_level])$
    356 $                               // •Û‘¶‚µ‚½•Ï”‚𕜋A
     351$                               // 保存した変数を復帰
    357352                                $id = id_saved[nest_level]$
    358353
    359354                                $IF higher_pri_maxstksz[arg[nest_level]] < calculated_stack_size$
    360 $                                       // ‹L‰¯‚µ‚Ä‚¨‚­
     355$                                       // 記憶しておく
    361356                                        $higher_pri_maxstksz[arg[nest_level]] = calculated_stack_size$
    362357                                $END$
     
    366361$SPC$* $LOG(nest_level)$higher_pri_maxstksz[$arg[nest_level]$] = $higher_pri_maxstksz[arg[nest_level]]$$NL$
    367362
    368 $               // ‚—Dæ“xƒ^ƒXƒN‚̃Xƒ^ƒbƒNŽg—p—ʂɁC“–ŠYƒ^ƒXƒN‚ÌŽg—p—Ê‚ð‰ÁŽZ‚·‚é
     363$               // 高優先度タスクのスタック使用量に,当該タスクの使用量を加算する
    369364                $max_stksz[arg[nest_level]] = higher_pri_maxstksz[arg[nest_level]] + TSK.STKSZ[arg[nest_level]]$
    370365
    371366$SPC$* $LOG(nest_level)$DONE(max_stksz[$arg[nest_level]$] = $max_stksz[arg[nest_level]]$)$NL$
    372367
    373 $               // “–ŠYƒ^ƒXƒNID‚ɑ΂µ‚Ä‚ÍŒvŽZ‚ðÏ‚Ü‚¹‚½‚Æ‚¢‚¤‹L˜^‚ðŽc‚µ‚Ä‚¨‚­
     368$               // 当該タスクIDに対しては計算を済ませたという記録を残しておく
    374369                $done[arg[nest_level]] = 1$
    375370
    376371        $ELSE$
    377 $               // (2) ŒvŽZ‚ªŠù‚ÉŠ®—¹‚µ‚Ä‚¢‚éê‡CŒvŽZ‚ðƒXƒLƒbƒv‚·‚éD
     372$               // (2) 計算が既に完了している場合,計算をスキップする.
    378373
    379374$SPC$* $LOG(nest_level)$SKIP(max_stksz[$arg[nest_level]$] = $max_stksz[arg[nest_level]]$)$NL$
    380375        $END$
    381376
    382 $       // Œ©Ï‚à‚è‚̍őå’l‚ð•Ô‚·
     377$       // 見積もりの最大値を返す
    383378        $RESULT = max_stksz[arg[nest_level]]$
    384379        $nest_level = nest_level - 1$
     
    386381
    387382$
    388 $ ŠÖ”’è‹`‚±‚±‚܂ŁC‚±‚±‚©‚çƒXƒ^ƒbƒNŒvŽZˆ—‚ÌŠJŽn
    389 $
    390 
    391 $
    392 $ ‚Ü‚¸‚͖؍\‘¢‚̃f[ƒ^\‘¢ì¬
     383$ 関数定義ここまで,ここからスタック計算処理の開始
     384$
     385
     386$
     387$ まずは木構造のデータ構造作成
    393388$
    394389$FOREACH id LSORT(tsk_apriorder_list, "compare_tskapri_rev")$
    395390
    396 $       // Šeƒ^ƒXƒN–ˆ‚ɁC‚»‚ÌŽÀsŽž—Dæ“x‚æ‚è‚à‚‚¢‹N“®Žž—Dæ“x‚ðŽ‚Âƒ^ƒXƒN‚̃ŠƒXƒg‚ðì‚éD
    397 $       // ‚»‚ê‚̓vƒŠƒGƒ“ƒvƒg‚³‚ê‚é‰Â”\«‚Ì‚ ‚éƒ^ƒXƒN‚̈ꗗ‚Æ‚È‚éD
     391$       // 各タスク毎に,その実行時優先度よりも高い起動時優先度を持つタスクのリストを作る.
     392$       // それはプリエンプトされる可能性のあるタスクの一覧となる.
    398393        $FOREACH id2 LSORT(tsk_apriorder_list, "compare_tskapri_rev")$
    399394                $IF reallocate_tskepri[id] > reallocate_tskapri[id2]$
     
    402397        $END$
    403398
    404 $       // ƒvƒŠƒGƒ“ƒvƒg‚·‚éE‚³‚ê‚éŠÖŒW‚ðŽ¦‚·–؍\‘¢‚̍ª(root)‚Æ‚È‚éƒ^ƒXƒN‚Ì’TõD
    405 $       //   ‘Ώۃ^ƒXƒN(id)‚Ì‹N“®Žž—Dæ“x(reallocate_tskapri[id])‚æ‚è’á‚¢
    406 $       //   (’l‚Æ‚µ‚Ä‚Í‘å‚«‚¢)‹N“®Žž—Dæ“x‚ð‚à‚ƒ^ƒXƒN‚Ì higher_pri_tsklist ‚ɁC
    407 $       //   ‘Ώۃ^ƒXƒN(id) ‚ªŠÜ‚Ü‚ê‚È‚¯‚ê‚΁Cª‚Æ‚È‚éD
     399$       // プリエンプトする・される関係を示す木構造の根(root)となるタスクの探索.
     400$       //   対象タスク(id)の起動時優先度(reallocate_tskapri[id])より低い
     401$       //   (値としては大きい)起動時優先度をもつタスクの higher_pri_tsklist に,
     402$       //   対象タスク(id) が含まれなければ,根となる.
    408403        $is_root = 1$
    409404        $FOREACH id2 LSORT(tsk_apriorder_list, "compare_tskapri_rev")$
     
    414409                $END$
    415410        $END$
    416 $       // ª(root)‚Æ‚È‚éƒ^ƒXƒN‚È‚ç‚΁CƒŠƒXƒg‚֒ljÁ
     411$       // 根(root)となるタスクならば,リストへ追加
    417412        $IF is_root == 1$
    418413                $root_apri = APPEND(root_apri, id)$
     
    421416
    422417$
    423 $ o—ÍŠJŽn
     418$ 出力開始
    424419$
    425420
     
    428423$SPC$* $NL$
    429424
    430 $ // ª‚Æ‚È‚éŠeƒ^ƒXƒN‚ɑ΂µ‚āC‚»‚̍őåƒ^ƒXƒNŽg—p—Ê‚ðŒvŽZ‚µCƒŠƒXƒg‚֒ljÁ‚·‚éD
     425$ // 根となる各タスクに対して,その最大タスク使用量を計算し,リストへ追加する.
    431426$FOREACH root_id root_apri$
    432427        $stksz_estimated = APPEND(stksz_estimated, calc_stksz(root_id))$
    433428$END$
    434429
    435 $ // ƒ^ƒXƒN‚̃Xƒ^ƒbƒNŽg—p—ʂ̍őå’l‚ðŒˆ’è
    436 $ // ƒŠƒXƒg’†‚Ì—v‘f‚̍őå’l‚ªƒ^ƒXƒN‚̍őåƒXƒ^ƒbƒNŽg—p—Ê‚Æ‚È‚éD
     430$ // タスクのスタック使用量の最大値を決定
     431$ // リスト中の要素の最大値がタスクの最大スタック使用量となる.
    437432$max_tsk_stksz = 0$
    438433$FOREACH size stksz_estimated$
     
    442437$END$
    443438
    444 $ // Šm”F
     439$ // 確認
    445440$SPC$* List of Estimated Total Stack Sizes of Tasks = $stksz_estimated$$NL$
    446441$SPC$* Estimated Maximum Total Stack Size of Tasks = $max_tsk_stksz$$NL$
     
    449444
    450445
    451 $ ‘S‚Ă̏ˆ—’PˆÊ‚̃Xƒ^ƒbƒN‚Í‹¤—L‚³‚ê‚éD
    452 $ ‚»‚Ì‚½‚߁CƒXƒ^ƒbƒNƒTƒCƒY‚ÉŠÖ‚·‚éƒ`ƒFƒbƒN‚Í
    453 $ ‹¤—LƒXƒ^ƒbƒNÝ’è‚Ì‚Æ‚±‚ë‚ł܂Ƃ߂čs‚¤D
    454 
    455 $ ƒXƒ^ƒbƒN‚̐擪”Ô’n(stk)D
     446$ 全ての処理単位のスタックは共有される.
     447$ そのため,スタックサイズに関するチェックは
     448$ 共有スタック設定のところでまとめて行う.
     449
     450$ スタックの先頭番地(stk).
    456451$FOREACH tskid tsk_apriorder_list$
    457 $       // í‚É NULL ‚Å‚ ‚éD(E_PAR)
     452$       // 常に NULL である.(E_PAR)
    458453        $IF !EQ(TSK.STK[tskid], "NULL")$
    459454                $ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(("'%1%' of %2% must be NULL."), "stk", "CRE_TSK")$$END$
     
    462457
    463458$ ---------------------------------------------------------------------
    464 ƒCƒxƒ“ƒgƒtƒ‰ƒO
     459イベントフラグ
    465460$ ---------------------------------------------------------------------
    466461/*$NL$
     
    469464$NL$
    470465
    471 $ ƒGƒ“ƒgƒŠ‚ª (UINT8_MAX - TMIN_FLGID)ŒÂ‚æ‚葽‚¢ê‡‚́CƒGƒ‰[‚Æ‚·‚é --> Œ»Žž“_‚ł̓Rƒƒ“ƒgƒAƒEƒg
     466$ エントリが (UINT8_MAX - TMIN_FLGID)個より多い場合は,エラーとする --> 現時点ではコメントアウト
    472467$ $IF LENGTH(ALM.ORDER_LIST) > (UINT8_MAX - TMIN_FLGID)$
    473468$       $ERROR$$FORMAT("The number of CRE_FLG must be equal to or less than (UINT8_MAX - TMIN_FLGID).")$$END$
    474469$ $END$
    475470
    476 $ ƒCƒxƒ“ƒgƒtƒ‰ƒOID”ԍ†‚̍őå’l
     471$ イベントフラグID番号の最大値
    477472const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$
    478473$NL$
    479474
    480 $       // iflgptn‚ªFLGPTN‚ÉŠi”[‚Å‚«‚È‚¢ê‡iE_PARj
     475$       // iflgptnがFLGPTNに格納できない場合(E_PAR)
    481476$FOREACH flgid FLG.ORDER_LIST$
    482477        $IF (FLG.IFLGPTN[flgid] & ~((1 << TBIT_FLGPTN) - 1)) != 0$
     
    485480$END$
    486481
    487 $ ƒCƒxƒ“ƒgƒtƒ‰ƒO‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     482$ イベントフラグ初期化ブロックの生成
    488483$IF LENGTH(FLG.ID_LIST)$
    489484
    490 $       ƒCƒxƒ“ƒgƒtƒ‰ƒO‘®«
     485$       イベントフラグ属性
    491486        const ATR _kernel_flginib_atr[TNUM_FLGID] = {
    492487                $JOINEACH flgid FLG.ORDER_LIST ","$
    493 $                       // flgatr‚ªimTA_CLRnj‚Å‚È‚¢ê‡iE_RSATRj
     488$                       // flgatrが([TA_CLR])でない場合(E_RSATR)
    494489                        $IF (FLG.FLGATR[flgid] & ~(TA_CLR)) != 0$
    495490                                $ERROR FLG.TEXT_LINE[flgid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "flgatr", FLG.FLGATR[flgid], flgid, "CRE_FLG")$$END$
     
    499494        };$NL$
    500495       
    501 $       ƒCƒxƒ“ƒgƒtƒ‰ƒOƒpƒ^[ƒ“‚̏‰Šú’l
     496$       イベントフラグパターンの初期値
    502497        const FLGPTN _kernel_flginib_iflgptn[TNUM_FLGID] = {
    503498                $JOINEACH flgid FLG.ORDER_LIST ","$
     
    506501        };$NL$
    507502
    508 $       // ƒCƒxƒ“ƒgƒtƒ‰ƒO‚ÌŒ»Ý‚̃tƒ‰ƒOƒpƒ^[ƒ“‚ðŠi”[‚·‚é•Ï”
     503$       // イベントフラグの現在のフラグパターンを格納する変数
    509504        FLGPTN _kernel_flgcb_flgptn[TNUM_FLGID];$NL$
    510505$ELSE$
     
    516511
    517512$ ---------------------------------------------------------------------
    518 $  ƒf[ƒ^ƒLƒ
    519 [
     513$  データキュー
    520514$ ---------------------------------------------------------------------
    521515/*$NL$
     
    524518$NL$
    525519
    526 $ ƒf[ƒ^ƒLƒ
    527 [ID”ԍ†‚̍őå’l
     520$ データキューID番号の最大値
    528521const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$
    529522$NL$
     
    531524$IF LENGTH(DTQ.ID_LIST)$
    532525        $FOREACH dtqid DTQ.ORDER_LIST$
    533 $               // dtqatr‚ª TA_NULL ‚Å‚È‚¢ê‡iE_RSATRj
     526$               // dtqatrが TA_NULL でない場合(E_RSATR)
    534527                $IF (DTQ.DTQATR[dtqid] != TA_NULL) $
    535528                        $ERROR DTQ.TEXT_LINE[dtqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqatr", DTQ.DTQATR[dtqid], dtqid, "CRE_DTQ")$$END$
    536529                $END$
    537530
    538 $               // dtqmb‚ªNULL‚Å‚È‚¢ê‡iE_NOSPTj
     531$               // dtqmbがNULLでない場合(E_NOSPT)
    539532                $IF !EQ(DTQ.DTQMB[dtqid], "NULL")$
    540533                        $ERROR DTQ.TEXT_LINE[dtqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqmb", DTQ.DTQMB[dtqid], dtqid, "CRE_DTQ")$$END$
    541534                $END$
    542535
    543 $               // dtqcnt‚ª0‚Å‚ ‚éê‡
     536$               // dtqcntが0である場合
    544537                $IF EQ(+DTQ.DTQCNT[dtqid], 0)$
    545538                        $ERROR DTQ.TEXT_LINE[dtqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqmb", DTQ.DTQCNT[dtqid], dtqid, "CRE_DTQ")$$END$
     
    547540                               
    548541
    549 $               // ƒf[ƒ^ƒLƒ
    550 [—̈æ
     542$               // データキュー領域
    551543                $IF DTQ.DTQCNT[dtqid]$
    552544                        static intptr_t _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
     
    554546        $END$
    555547
    556 $       // ƒf[ƒ^ƒLƒ
    557 [‰Šú‰»ƒuƒƒbƒN‚̐¶¬(‘®«)
     548$       // データキュー初期化ブロックの生成(属性)
    558549        const ATR _kernel_dtqinib_atr[TNUM_DTQID] = {
    559550                $JOINEACH dtqid DTQ.ORDER_LIST ",\n"$
     
    563554        $NL$
    564555
    565 $       // ƒf[ƒ^ƒLƒ
    566 [‰Šú‰»ƒuƒƒbƒN‚̐¶¬(ƒTƒCƒY)
     556$       // データキュー初期化ブロックの生成(サイズ)
    567557        const uint8_t _kernel_dtqinib_size[TNUM_DTQID] = {
    568558                $JOINEACH dtqid DTQ.ORDER_LIST ",\n"$
     
    572562        $NL$
    573563
    574 $       // ƒf[ƒ^ƒLƒ
    575 [‰Šú‰»ƒuƒƒbƒN‚̐¶¬(ŠÇ——̈æ)
     564$       // データキュー初期化ブロックの生成(管理領域)
    576565        intptr_t * const _kernel_dtqinib_data[TNUM_DTQID] = {
    577566                $JOINEACH dtqid DTQ.ORDER_LIST ",\n"$
     
    581570        $NL$
    582571
    583 $       // ƒf[ƒ^ƒLƒ
    584 [ƒRƒ“ƒgƒ[ƒ‹ƒuƒƒbƒN
     572$       // データキューコントロールブロック
    585573        uint8_t _kernel_dtqcb_count[TNUM_DTQID];$NL$
    586574        uint8_t _kernel_dtqcb_head[TNUM_DTQID];$NL$
     
    598586
    599587$ ---------------------------------------------------------------------
    600 Š„ž‚ÝŠÇ—‹@”\
     588割込み管理機能
    601589$ ---------------------------------------------------------------------
    602590/*$NL$
     
    605593$NL$
    606594
    607 $ // INTNO_ATTISR_VALID ‚Ì—v‘f‚ªd•¡‚µ‚Ä‚¢‚È‚¢‚©‚Ç‚¤‚©‚̃`ƒFƒbƒN
     595$ // INTNO_ATTISR_VALID の要素が重複していないかどうかのチェック
    608596$i = 0$
    609597$FOREACH intno INTNO_ATTISR_VALID$
     
    618606$END$
    619607
    620 $ // INHNO_ATTISR_VALID ‚Ì—v‘f‚ªd•¡‚µ‚Ä‚¢‚È‚¢‚©‚Ç‚¤‚©‚̃`ƒFƒbƒN
     608$ // INHNO_ATTISR_VALID の要素が重複していないかどうかのチェック
    621609$i = 0$
    622610$FOREACH intno INHNO_ATTISR_VALID$
     
    632620
    633621
    634 $ // ATT_ISR ‚ÅŽg—p‰Â”\‚ÈŠ„ž‚ݔԍ†‚ƁC‚»‚ê‚ɑΉž‚·‚銄ž‚݃nƒ“ƒhƒ‰”ԍ†‚̐”‚ª“¯‚¶‚©‚Ç‚¤‚©
    635 $ // ŠeƒŠƒXƒg‚Ì—v‘f‚͏d•¡‚µ‚Ä‚¢‚È‚¢‚±‚Æ‚ð‘O’ñ‚Æ‚µ‚Ä‚¢‚éD
     622$ // ATT_ISR で使用可能な割込み番号と,それに対応する割込みハンドラ番号の数が同じかどうか
     623$ // 各リストの要素は重複していないことを前提としている.
    636624$IF LENGTH(INTNO_ATTISR_VALID) != LENGTH(INHNO_ATTISR_VALID)$
    637625        $ERROR$length of `INTNO_ATTISR_VALID' is different from length of `INHNO_ATTISR_VALID'$END$
     
    639627
    640628
    641 $ // Š„ž‚ݔԍ†‚ÆŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†‚Ì•ÏŠ·ƒe[ƒuƒ‹‚̍쐬
    642 $ //  Š„ž‚ݔԍ†‚̃ŠƒXƒg‚ÆŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†‚̃ŠƒXƒg‚͑Ήž‚·‚é—v‘f‚ª“¯‚¶‡”Ô‚Å
    643 $ //  Œ»‚ê‚é‚悤‚É•À‚ׂç‚ê‚Ä‚¢‚邱‚Æ‚ð‘O’ñ‚Æ‚·‚éD
     629$ // 割込み番号と割込みハンドラ番号の変換テーブルの作成
     630$ //  割込み番号のリストと割込みハンドラ番号のリストは対応する要素が同じ順番で
     631$ //  現れるように並べられていることを前提とする.
    644632$i = 0$
    645633$FOREACH intno INTNO_ATTISR_VALID$
    646634
    647 $       // INTNO_ATTISR_VALID ‚ÉŠÜ‚Ü‚ê‚é’l‚Í INTNO_CFGINT_VALID ‚É‚àŠÜ‚Ü‚ê‚é‚ׂ«‚Å‚ ‚éD
    648 $       // INTNO_ATTISR_VALID ‚Í INTNO_CFGINT_VALID ‚Ì•”•ªW‡‚É‚È‚é‚Í‚¸D
     635$       // INTNO_ATTISR_VALID に含まれる値は INTNO_CFGINT_VALID にも含まれるべきである.
     636$       // INTNO_ATTISR_VALID は INTNO_CFGINT_VALID の部分集合になるはず.
    649637        $IF LENGTH(FIND(INTNO_CFGINT_VALID, intno)) == 0$
    650638                $ERROR$all elements of `INTNO_ATTISR_VALID' must be included in `INTNO_CFGINT_VALID'$END$
     
    658646
    659647
    660 $ // INTNO_CFGINT_VALID ‚Ì—v‘f‚ª INTNO_VALID ‚ÉŠÜ‚Ü‚ê‚é‚©‚Ç‚¤‚©‚̃`ƒFƒbƒN
    661 $ // INTNO_CFGINT_VALID ‚Í INTNO_VALID ‚Ì•”•ªW‡‚É‚È‚é‚Í‚¸D
     648$ // INTNO_CFGINT_VALID の要素が INTNO_VALID に含まれるかどうかのチェック
     649$ // INTNO_CFGINT_VALID は INTNO_VALID の部分集合になるはず.
    662650$FOREACH intno INTNO_CFGINT_VALID$
    663651        $IF LENGTH(FIND(INTNO_VALID, intno)) == 0$
     
    667655
    668656
    669 $ // INHNO_ATTISR_VALID ‚Ì—v‘f‚ª INHNO_VALID ‚ÉŠÜ‚Ü‚ê‚é‚©‚Ç‚¤‚©‚̃`ƒFƒbƒN
    670 $ // INHNO_ATTISR_VALID ‚Í INHNO_VALID ‚Ì•”•ªW‡‚É‚È‚é‚Í‚¸D
     657$ // INHNO_ATTISR_VALID の要素が INHNO_VALID に含まれるかどうかのチェック
     658$ // INHNO_ATTISR_VALID は INHNO_VALID の部分集合になるはず.
    671659$FOREACH inhno INHNO_ATTISR_VALID$
    672660        $IF LENGTH(FIND(INHNO_VALID, inhno)) == 0$
     
    676664
    677665
    678 $ // Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚ÉŠÖ‚·‚éƒGƒ‰[ƒ`ƒFƒbƒN
     666$ // 割込み要求ラインに関するエラーチェック
    679667$i = 0$
    680668$FOREACH intno INT.ORDER_LIST$
    681 $       // intno‚ªCFG_INT‚ɑ΂·‚銄ž‚ݔԍ†‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     669$       // intnoがCFG_INTに対する割込み番号として正しくない場合(E_PAR)
    682670        $IF !LENGTH(FIND(INTNO_CFGINT_VALID, INT.INTNO[intno]))$
    683671                $ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", INT.INTNO[intno], "CFG_INT")$$END$
    684672        $END$
    685673
    686 $       // intno‚ªCFG_INT‚É‚æ‚Á‚ĐݒèÏ‚݂̏ꍇiE_OBJj
     674$       // intnoがCFG_INTによって設定済みの場合(E_OBJ)
    687675        $j = 0$
    688676        $FOREACH intno2 INT.ORDER_LIST$
     
    693681        $END$
    694682
    695 $       // intatr‚ª TA_ENAINT, TA_EDGE, ‚Ü‚½‚Í‚»‚Ì‘¼ƒ^[ƒQƒbƒg‚Å—˜—p‰Â”\‚È‘®«‚Ì‚¢‚¸‚ê‚Å‚à‚È‚¢ê‡iE_RSATRj
     683$       // intatrが TA_ENAINT, TA_EDGE, またはその他ターゲットで利用可能な属性のいずれでもない場合(E_RSATR)
    696684        $IF (INT.INTATR[intno] & ~(TA_ENAINT|TA_EDGE|ALT(TARGET_INTATR,0))) != 0$
    697685                $ERROR INT.TEXT_LINE[intno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "intatr", INT.INTATR[intno], "intno", INT.INTNO[intno], "CFG_INT")$$END$
    698686        $END$
    699687
    700 $       // intpri‚ªCFG_INT‚ɑ΂·‚銄ž‚Ý—Dæ“x‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     688$       // intpriがCFG_INTに対する割込み優先度として正しくない場合(E_PAR)
    701689        $IF !LENGTH(FIND(INTPRI_CFGINT_VALID, INT.INTPRI[intno]))$
    702690                $ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intpri", INT.INTPRI[intno], "CFG_INT")$$END$
    703691        $END$
    704692
    705 $       // ƒJ[ƒlƒ‹ŠÇ—‚ÌŠ„ž‚Ý‚Æ‚µ‚ČŒ肳‚ê‚Ä‚¢‚銄ž‚݂ɁCTMIN_INTPRI ‚æ‚è‚à¬‚³‚¢’l‚ªŽw’肳‚ꂽê‡iE_OBJj
     693$       // カーネル管理の割込みとして固定されている割込みに,TMIN_INTPRI よりも小さい値が指定された場合(E_OBJ)
    706694        $IF LENGTH(FIND(INTNO_FIX_KERNEL, intno))$
    707695                $IF INT.INTPRI[intno] < TMIN_INTPRI$
     
    710698        $END$
    711699
    712 $       // ƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý‚Æ‚µ‚ČŒ肳‚ê‚Ä‚¢‚銄ž‚݂ɁCTMIN_INTPRI ‚æ‚è‚à¬‚³‚¢’l‚ªŽw’肳‚ê‚È‚©‚Á‚½ê‡iE_OBJj
     700$       // カーネル管理外の割込みとして固定されている割込みに,TMIN_INTPRI よりも小さい値が指定されなかった場合(E_OBJ)
    713701        $IF LENGTH(FIND(INTNO_FIX_NONKERNEL, intno))$
    714702                $IF INT.INTPRI[intno] >= TMIN_INTPRI$
     
    720708
    721709
    722 $ Š„ž‚݃nƒ“ƒhƒ‰‚ÉŠÖ‚·‚éƒGƒ‰[ƒ`ƒFƒbƒN
     710$ 割込みハンドラに関するエラーチェック
    723711$i = 0$
    724712$FOREACH inhno INH.ORDER_LIST$
    725 $       // Š„ž‚݃nƒ“ƒhƒ‰”ԍ†(inhno)‚ª³‚µ‚­‚È‚¢ê‡iE_PARj
     713$       // 割込みハンドラ番号(inhno)が正しくない場合(E_PAR)
    726714        $IF !LENGTH(FIND(INHNO_DEFINH_VALID, INH.INHNO[inhno]))$
    727715                $ERROR INH.TEXT_LINE[inhno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
    728716        $END$
    729717
    730 $       // “¯‚¶Š„ž‚݃nƒ“ƒhƒ‰”ԍ†‚ɑ΂·‚éDEF_INH‚ª•¡”‘¶Ý‚·‚éê‡iE_OBJj
     718$       // 同じ割込みハンドラ番号に対するDEF_INHが複数存在する場合(E_OBJ)
    731719        $j = 0$
    732720        $FOREACH inhno2 INH.ORDER_LIST$
     
    737725        $END$
    738726
    739 $       // Š„ž‚݃nƒ“ƒhƒ‰‘®«(inhatr) ‚ª TA_NULL, TA_NONKERNEL, ‹y‚Ñ‚»‚Ì‘¼ƒ^[ƒQƒbƒgˆË‘¶‚Å—˜—p‰Â”\‚È‘®«‚Ì‚¢‚¸‚ê‚Å‚à‚È‚¢iE_RSATRj
     727$       // 割込みハンドラ属性(inhatr) が TA_NULL, TA_NONKERNEL, 及びその他ターゲット依存で利用可能な属性のいずれでもない(E_RSATR)
    740728        $IF (INH.INHATR[inhno] & ~(TA_NONKERNEL|ALT(TARGET_INHATR,0))) != 0$
    741729                $ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "inhatr", INH.INHATR[inhno], "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
    742730        $END$
    743731
    744 $       // ƒJ[ƒlƒ‹ŠÇ—‚ɌŒ肳‚ê‚Ä‚¢‚銄ž‚݃nƒ“ƒhƒ‰‚ɁCTA_NONKERNEL ‘®«‚ªÝ’肳‚ê‚Ä‚¢‚éiE_RSATRj
     732$       // カーネル管理に固定されている割込みハンドラに,TA_NONKERNEL 属性が設定されている(E_RSATR)
    745733        $IF LENGTH(FIND(INHNO_FIX_KERNEL, inhno))$
    746734                $IF (INH.INHATR[inhno] & TA_NONKERNEL) != 0$
     
    749737        $END$
    750738
    751 $       // ƒJ[ƒlƒ‹ŠÇ—ŠO‚ɌŒ肳‚ê‚Ä‚¢‚銄ž‚݃nƒ“ƒhƒ‰‚ɁCTA_NONKERNEL ‘®«‚ªÝ’肳‚ê‚Ä‚¢‚È‚¢iE_RSATRj
     739$       // カーネル管理外に固定されている割込みハンドラに,TA_NONKERNEL 属性が設定されていない(E_RSATR)
    752740        $IF LENGTH(FIND(INHNO_FIX_NONKERNEL, inhno))$
    753741                $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
     
    757745
    758746
    759 $       // Š„ž‚ݔԍ†‚Æ1‘Î1‘Ήž‚·‚銄ž‚݃nƒ“ƒhƒ‰”ԍ†(ATT_ISR‚ÅŽw’è‰Â”\‚ÈŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†)‚́CˆÈ‰º‚̃`ƒFƒbƒN‚às‚¤D
    760 $       // INHNO_ATTISR_VALID ‚ÉŠÜ‚Ü‚ê‚È‚¢Š„ž‚݃nƒ“ƒhƒ‰”ԍ†‚̓`ƒFƒbƒN‚³‚ê‚È‚¢‚±‚Æ‚É‚È‚éD
     747$       // 割込み番号と1対1対応する割込みハンドラ番号(ATT_ISRで指定可能な割込みハンドラ番号)は,以下のチェックも行う.
     748$       // INHNO_ATTISR_VALID に含まれない割込みハンドラ番号はチェックされないことになる.
    761749        $IF LENGTH(INTNO[INH.INHNO[inhno]]) > 0$
    762750                $intno = INTNO[INH.INHNO[inhno]]$
    763751
    764 $               // Š„ž‚݃nƒ“ƒhƒ‰“o˜^æ‚ÌŠ„ž‚Ý—v‹ƒ‰ƒCƒ“‚ª‘®«Ý’肳‚ê‚Ä‚¢‚È‚¢(CFG_INT‚ª‚È‚¢)iE_OBJj
     752$               // 割込みハンドラ登録先の割込み要求ラインが属性設定されていない(CFG_INTがない)(E_OBJ)
    765753                $IF !LENGTH(INT.INTNO[intno])$
    766754                        $ERROR INH.TEXT_LINE[inhno]$E_OBJ: $FORMAT(_("%1% `%2%\' corresponding to %3% `%4%\' is not configured with %5%"), "intno", INT.INTNO[intno], "inhno", INH.INHNO[inhno], "CFG_INT")$$END$
    767755                $ELSE$
    768756                        $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
    769 $                               // inhatr‚ÉTA_NONKERNEL‚ªŽw’肳‚ê‚Ä‚¨‚炸Cinhno‚ɑΉž
    770 $                               // ‚·‚éintno‚ɑ΂µ‚ÄCFG_INT‚Őݒ肳‚ꂽŠ„ž‚Ý—Dæ“x‚ª
    771 $                               // TMIN_INTPRI‚æ‚è‚à¬‚³‚¢ê‡iE_OBJj
     757$                               // inhatrにTA_NONKERNELが指定されておらず,inhnoに対応
     758$                               // するintnoに対してCFG_INTで設定された割込み優先度が
     759$                               // TMIN_INTPRIよりも小さい場合(E_OBJ)
    772760                                $IF INT.INTPRI[intno] < TMIN_INTPRI$
    773761                                        $ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
    774762                                $END$
    775763                        $ELSE$
    776 $                               // inhatr‚ÉTA_NONKERNEL‚ªŽw’肳‚ê‚Ä‚¨‚èCinhno‚ɑΉž
    777 $                               // ‚·‚éintno‚ɑ΂µ‚ÄCFG_INT‚Őݒ肳‚ꂽŠ„ž‚Ý—Dæ“x‚ª
    778 $                               // TMIN_INTPRIˆÈã‚Å‚ ‚éê‡iE_OBJj
     764$                               // inhatrにTA_NONKERNELが指定されており,inhnoに対応
     765$                               // するintnoに対してCFG_INTで設定された割込み優先度が
     766$                               // TMIN_INTPRI以上である場合(E_OBJ)
    779767                                $IF INT.INTPRI[intno] >= TMIN_INTPRI$
    780768                                        $ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is lower than or equal to %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
     
    786774$END$
    787775
    788 $ Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“iISRj‚ÉŠÖ‚·‚éƒGƒ‰[ƒ`ƒFƒbƒN‚ÆŠ„ž‚݃nƒ“ƒhƒ‰‚̐¶¬
     776$ 割込みサービスルーチン(ISR)に関するエラーチェックと割込みハンドラの生成
    789777$FOREACH order ISR.ORDER_LIST$
    790 $       // isratr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     778$       // isratrが(TA_NULL)でない場合(E_RSATR)
    791779        $IF (ISR.ISRATR[order] & ~ALT(TARGET_ISRATR,0)) != 0$
    792780                $ERROR ISR.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "isratr", ISR.ISRATR[order], "isr", ISR.ISR[order], "ATT_ISR")$$END$
    793781        $END$
    794782
    795 $       // intno‚ªATT_ISR‚ɑ΂·‚銄ž‚ݔԍ†‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     783$       // intnoがATT_ISRに対する割込み番号として正しくない場合(E_PAR)
    796784        $IF !LENGTH(FIND(INTNO_ATTISR_VALID, ISR.INTNO[order]))$
    797785                $ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", ISR.INTNO[order], "ATT_ISR")$$END$
    798786        $END$
    799787
    800 $       // (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)‚Å‚È‚¢ê‡iE_PARj
     788$       // (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)でない場合(E_PAR)
    801789        $IF !(TMIN_ISRPRI <= ISR.ISRPRI[order] && ISR.ISRPRI[order] <= TMAX_ISRPRI)$
    802790                $ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isrpri", ISR.ISRPRI[order], "ATT_ISR")$$END$
     
    808796        $inhno = INHNO[intno]$
    809797
    810 $       // Š„ž‚ݔԍ†intno‚ɑ΂µ‚Ä“o˜^‚³‚ꂽISR‚̃ŠƒXƒg‚̍쐬
     798$       // 割込み番号intnoに対して登録されたISRのリストの作成
    811799        $isr_order_list = {}$
    812800        $FOREACH order ISR.ORDER_LIST$
     
    817805        $END$
    818806
    819 $       // Š„ž‚ݔԍ†intno‚ɑ΂µ‚Ä“o˜^‚³‚ꂽISR‚ª‘¶Ý‚·‚éê‡
     807$       // 割込み番号intnoに対して登録されたISRが存在する場合
    820808        $IF LENGTH(isr_order_list) > 0$
    821 $               // intno‚ɑΉž‚·‚éinhno‚ɑ΂µ‚ÄDEF_INH‚ª‚ ‚éê‡iE_OBJj
     809$               // intnoに対応するinhnoに対してDEF_INHがある場合(E_OBJ)
    822810                $IF LENGTH(INH.INHNO[inhno])$
    823811                        $ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated with %4% `%5%\'"), "intno", ISR.INTNO[order_for_error], "ATT_ISR", "inhno", INH.INHNO[inhno])$$END$
    824812                $END$
    825813
    826 $               // intno‚ɑ΂·‚éCFG_INT‚ª‚È‚¢ê‡iE_OBJj
     814$               // intnoに対するCFG_INTがない場合(E_OBJ)
    827815                $IF !LENGTH(INT.INTNO[intno])$
    828816                        $ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' is not configured with %3%"), "intno", ISR.INTNO[order_for_error], "CFG_INT")$$END$
    829817                $ELSE$
    830 $                       // intno‚ɑ΂µ‚ÄCFG_INT‚Őݒ肳‚ꂽŠ„ž‚Ý—Dæ“x‚ªTMIN_INTPRI
    831 $                       // ‚æ‚è‚à¬‚³‚¢ê‡iE_OBJj
     818$                       // intnoに対してCFG_INTで設定された割込み優先度がTMIN_INTPRI
     819$                       // よりも小さい場合(E_OBJ)
    832820                        $IF INT.INTPRI[intno] < TMIN_INTPRI$
    833821                                $ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "intno", ISR.INTNO[order_for_error], "TMIN_INTPRI")$$END$
     
    841829                $INH.ORDER_LIST = APPEND(INH.ORDER_LIST, inhno)$
    842830
    843 $               // ISR—p‚ÌŠ„ž‚݃nƒ“ƒhƒ‰
     831$               // ISR用の割込みハンドラ
    844832                void$NL$
    845833                _kernel_inthdr_$intno$(void)$NL$
     
    853841                        $TAB$i_begin_int($intno$);$NL$
    854842                $END$
    855 $               // ISR‚ð—Dæ“x‡‚ɌĂяo‚·
     843$               // ISRを優先度順に呼び出す
    856844                $JOINEACH order SORT(isr_order_list, "ISR.ISRPRI") "\tif (i_sense_lock()) {\n\t\ti_unlock_cpu();\n\t}\n\ti_set_ipm(saved_ipm);\n"$
    857845                        $TAB$LOG_ISR_ENTER($intno$);$NL$
     
    866854
    867855$
    868 $ Š„ž‚ÝŠÇ—‹@”\‚Ì‚½‚ß‚Ì•W€“I‚ȏ‰Šú‰»î•ñ‚̐¶¬
    869 $
    870 $ Š„ž‚݃nƒ“ƒhƒ‰‚̏‰Šú‰»‚É•K—v‚ȏî•ñ
     856$ 割込み管理機能のための標準的な初期化情報の生成
     857$
     858$ 割込みハンドラの初期化に必要な情報
    871859$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$
    872860
    873 $ Š„ž‚݃nƒ“ƒhƒ‰”
     861$ 割込みハンドラ数
    874862#define TNUM_INHNO      $LENGTH(INH.ORDER_LIST)$$NL$
    875863const uint_t _kernel_tnum_inhno = TNUM_INHNO;$NL$
     
    879867$END$
    880868
    881 $ Š„ž‚݃nƒ“ƒhƒ‰‰Šú‰»ƒe[ƒuƒ‹
     869$ 割込みハンドラ初期化テーブル
    882870$IF LENGTH(INH.ORDER_LIST)$
    883871        const INHNO _kernel_inhinib_inhno[TNUM_INHNO] = {
     
    905893$END$
    906894
    907 $ Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚̏‰Šú‰»‚É•K—v‚ȏî•ñ
     895$ 割込み要求ラインの初期化に必要な情報
    908896$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INTINIB_TABLE,0)$
    909897
    910 $ Š„ž‚Ý—v‹ƒ‰ƒCƒ“”
     898$ 割込み要求ライン数
    911899#define TNUM_INTNO      $LENGTH(INT.ORDER_LIST)$$NL$
    912900const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$
    913901$NL$
    914902
    915 $ Š„ž‚Ý—v‹ƒ‰ƒCƒ“‰Šú‰»ƒe[ƒuƒ‹
     903$ 割込み要求ライン初期化テーブル
    916904$IF LENGTH(INT.ORDER_LIST)$
    917905        const INTNO _kernel_intinib_intno[TNUM_INTNO] = {
     
    941929
    942930$ ---------------------------------------------------------------------
    943 $  CPU—áŠOƒnƒ“ƒhƒ‰
     931$  CPU例外ハンドラ
    944932$ ---------------------------------------------------------------------
    945933/*$NL$
     
    948936$NL$
    949937
    950 $ // EXCNO_DEFEXC_VALID ‚Ì—v‘f‚ª EXCNO_VALID ‚ÉŠÜ‚Ü‚ê‚é‚©‚Ç‚¤‚©‚̃`ƒFƒbƒN
    951 $ // EXCNO_DEFEXC_VALID ‚Í EXCNO_VALID ‚Ì•”•ªW‡‚É‚È‚é‚Í‚¸D
     938$ // EXCNO_DEFEXC_VALID の要素が EXCNO_VALID に含まれるかどうかのチェック
     939$ // EXCNO_DEFEXC_VALID は EXCNO_VALID の部分集合になるはず.
    952940$FOREACH excno EXCNO_DEFEXC_VALID$
    953941        $IF LENGTH(FIND(EXCNO_VALID, excno)) == 0$
     
    957945
    958946
    959 $ CPU—áŠOƒnƒ“ƒhƒ‰‚ÉŠÖ‚·‚éƒGƒ‰[ƒ`ƒFƒbƒN
     947$ CPU例外ハンドラに関するエラーチェック
    960948$i = 0$
    961949$FOREACH excno EXC.ORDER_LIST$
    962 $       // excno‚ªDEF_EXC‚ɑ΂·‚éCPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     950$       // excnoがDEF_EXCに対するCPU例外ハンドラ番号として正しくない場合(E_PAR)
    963951        $IF !LENGTH(FIND(EXCNO_DEFEXC_VALID, EXC.EXCNO[excno]))$
    964952                $ERROR EXC.TEXT_LINE[excno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
    965953        $END$
    966954
    967 $       // excno‚ªDEF_EXC‚É‚æ‚Á‚ĐݒèÏ‚݂̏ꍇiE_OBJj
     955$       // excnoがDEF_EXCによって設定済みの場合(E_OBJ)
    968956        $j = 0$
    969957        $FOREACH excno2 EXC.ORDER_LIST$
     
    974962        $END$
    975963
    976 $       // excatr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     964$       // excatrが(TA_NULL)でない場合(E_RSATR)
    977965        $IF (EXC.EXCATR[excno] & ~ALT(TARGET_EXCATR,0)) != 0$
    978966                $ERROR EXC.TEXT_LINE[excno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "excatr", EXC.EXCATR[excno], "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
     
    981969$END$
    982970
    983 $ CPU—áŠOƒnƒ“ƒhƒ‰‚Ì‚½‚ß‚Ì•W€“I‚ȏ‰Šú‰»î•ñ‚̐¶¬
     971$ CPU例外ハンドラのための標準的な初期化情報の生成
    984972$IF !ALT(OMIT_INITIALIZE_EXCEPTION,0)$
    985973
    986 $ CPU—áŠOƒnƒ“ƒhƒ‰”
     974$ CPU例外ハンドラ数
    987975#define TNUM_EXCNO      $LENGTH(EXC.ORDER_LIST)$$NL$
    988976const uint_t _kernel_tnum_excno = TNUM_EXCNO;$NL$
     
    992980$END$
    993981
    994 $ CPU—áŠOƒnƒ“ƒhƒ‰‰Šú‰»ƒe[ƒuƒ‹
     982$ CPU例外ハンドラ初期化テーブル
    995983$IF LENGTH(EXC.ORDER_LIST)$
    996984        const EXCNO _kernel_excinib_excno[TNUM_EXCNO] = {
     
    10211009
    10221010$ ---------------------------------------------------------------------
    1023 ŽüŠúƒnƒ“ƒhƒ‰
     1011周期ハンドラ
    10241012$ ---------------------------------------------------------------------
    10251013
     
    10291017$NL$
    10301018
    1031 $ ŽüŠúƒnƒ“ƒhƒ‰ID”ԍ†‚̍őå’l
     1019$ 周期ハンドラID番号の最大値
    10321020const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$
    10331021
    1034 $ ŽüŠúƒnƒ“ƒhƒ‰‚̃^ƒCƒ€ƒCƒxƒ“ƒgIDƒIƒtƒZƒbƒg
    1035 $ ŽüŠúƒnƒ“ƒhƒ‰‚̃^ƒCƒ€ƒCƒxƒ“ƒgID‚Í0‚©‚çŠJŽn
     1022$ 周期ハンドラのタイムイベントIDオフセット
     1023$ 周期ハンドラのタイムイベントIDは0から開始
    10361024const uint_t _kernel_cycevtid_offset = 0;$NL$
    10371025$NL$
    10381026
    1039 $ ƒGƒ“ƒgƒŠ‚ª TMAX_MAXCYC(kernel.h) ŒÂ‚æ‚葽‚¢ê‡‚́CƒGƒ‰[‚Æ‚·‚é
     1027$ エントリが TMAX_MAXCYC(kernel.h) 個より多い場合は,エラーとする
    10401028$IF LENGTH(CYC.ORDER_LIST) > TMAX_MAXCYC$
    10411029        $ERROR$$FORMAT(_("The number of CRE_CYC must be equal to or less than %1%."), +VALUE("TMAX_MAXCYC", TMAX_MAXCYC))$$END$
     
    10431031
    10441032$IF LENGTH(CYC.ORDER_LIST)$
    1045 $       ŽüŠúƒnƒ“ƒhƒ‰‘®«
     1033$       周期ハンドラ属性
    10461034        $CYCACT = 0$
    10471035        $FOREACH cycid CYC.ORDER_LIST$
    1048 $               // ŽüŠúƒnƒ“ƒhƒ‰‘®«(cycatr) ‚ª TA_NULL, TA_STA ‚Ì‚¢‚¸‚ê‚Å‚à‚È‚¢iE_RSATRj
     1036$               // 周期ハンドラ属性(cycatr) が TA_NULL, TA_STA のいずれでもない(E_RSATR)
    10491037                $IF (CYC.CYCATR[cycid] & ~TA_STA) != 0$
    10501038                        $ERROR CYC.TEXT_LINE[cycid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycatr", CYC.CYCATR[cycid], cycid, "CRE_CYC")$$END$
     
    10571045        const uint16_t _kernel_cycinib_cycact = $CYCACT$;$NL$
    10581046
    1059 $       ŽüŠúƒnƒ“ƒhƒ‰Šg’£î•ñ
     1047$       周期ハンドラ拡張情報
    10601048        const intptr_t _kernel_cycinib_exinf[TNUM_CYCID] = {
    10611049        $JOINEACH cycid CYC.ORDER_LIST ","$
     
    10641052        };$NL$
    10651053
    1066 $       ŽüŠúƒnƒ“ƒhƒ‰ƒAƒhƒŒƒX
     1054$       周期ハンドラアドレス
    10671055        const CYCHDR _kernel_cycinib_cychdr[TNUM_CYCID] = {
    10681056        $JOINEACH cycid CYC.ORDER_LIST ","$
     
    10711059        };$NL$
    10721060
    1073 $       ŽüŠúƒnƒ“ƒhƒ‰ŽüŠú
     1061$       周期ハンドラ周期
    10741062        const RELTIM _kernel_cycinib_cyctim[TNUM_CYCID] = {
    10751063        $JOINEACH cycid CYC.ORDER_LIST ","$
    1076 $               // cyctim ‚Í 0 ‚æ‚è‘å‚«‚­CTMAX_RELTIM ˆÈ‰º‚Å‚ ‚éD(E_PAR)
     1064$               // cyctim は 0 より大きく,TMAX_RELTIM 以下である.(E_PAR)
    10771065                $IF CYC.CYCTIM[cycid] <= 0 || TMAX_RELTIM < CYC.CYCTIM[cycid] $
    10781066                        $ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cyctim", CYC.CYCTIM[cycid], cycid, "CRE_CYC")$$END$
     
    10831071        };$NL$
    10841072
    1085 $       ŽüŠúƒnƒ“ƒhƒ‰ˆÊ‘Š
     1073$       周期ハンドラ位相
    10861074        const RELTIM _kernel_cycinib_cycphs[TNUM_CYCID] = {
    10871075        $JOINEACH cycid CYC.ORDER_LIST ","$
    1088 $               // cycphs ‚Í 0 ˆÈãCTMAX_RELTIM ˆÈ‰º‚Å‚ ‚éD(E_PAR)
     1076$               // cycphs は 0 以上,TMAX_RELTIM 以下である.(E_PAR)
    10891077                $IF CYC.CYCPHS[cycid] < 0 || TMAX_RELTIM < CYC.CYCPHS[cycid] $
    10901078                        $ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycphs", CYC.CYCPHS[cycid], cycid, "CRE_CYC")$$END$
    10911079                $END$
    10921080
    1093 $               // ˆÊ‘Š‚ª0‚©‚C‘®«‚ª TA_STA ‚̏ꍇ‚ÍŒx
     1081$               // 位相が0かつ,属性が TA_STA の場合は警告
    10941082                $IF CYC.CYCPHS[cycid] == 0 && (CYC.CYCATR[cycid] & TA_STA) != 0$
    10951083                        $WARNING CYC.TEXT_LINE[cycid]$$FORMAT(_("%1% is not recommended when %2% is set to %3% in %4%"), "cycphs==0", "TA_STA", "cycatr", "CRE_CYC")$$END$
     
    11011089        $NL$
    11021090
    1103 $       ŽüŠúƒnƒ“ƒhƒ‰‚ÌŽŸ‰ñ‹N“®Žž
     1091$       周期ハンドラの次回起動時刻
    11041092EVTTIM _kernel_cyccb_evttim[TNUM_CYCID];$NL$
    11051093
     
    11131101$END$
    11141102
    1115 $       ŽüŠúƒnƒ“ƒhƒ‰“®ìó‘Ô
     1103$       周期ハンドラ動作状態
    11161104uint16_t _kernel_cyccb_cycact;$NL$
    11171105
     
    11201108
    11211109$ ---------------------------------------------------------------------
    1122 ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰
     1110アラームハンドラ
    11231111$ ---------------------------------------------------------------------
    11241112
     
    11281116$NL$
    11291117
    1130 $ ƒGƒ“ƒgƒŠ‚ª TMAX_MAXALM(kernel.h) ŒÂ‚æ‚葽‚¢ê‡‚́CƒGƒ‰[‚Æ‚·‚é
     1118$ エントリが TMAX_MAXALM(kernel.h) 個より多い場合は,エラーとする
    11311119$IF LENGTH(ALM.ORDER_LIST) > TMAX_MAXALM$
    11321120        $ERROR$$FORMAT(_("The number of CRE_ALM must be equal to or less than %1%."), +VALUE("TMAX_MAXALM",TMAX_MAXALM))$$END$
    11331121$END$
    11341122
    1135 $ ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚̍őåID’l
     1123$ アラームハンドラの最大ID値
    11361124const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$
    11371125
    1138 $ ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚̃^ƒCƒ€ƒCƒxƒ“ƒgIDƒIƒtƒZƒbƒg
     1126$ アラームハンドラのタイムイベントIDオフセット
    11391127const uint_t _kernel_almevtid_offset = $LENGTH(CYC.ORDER_LIST)$;$NL$
    11401128$NL$
    11411129
    11421130$FOREACH almid ALM.ORDER_LIST$
    1143 $       // almatr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     1131$       // almatrが(TA_NULL)でない場合(E_RSATR)
    11441132        $IF ALM.ALMATR[almid] != 0$
    11451133                $ERROR ALM.TEXT_LINE[almid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "almatr", ALM.ALMATR[almid], almid, "CRE_ALM")$$END$
     
    11481136
    11491137$IF LENGTH(ALM.ORDER_LIST)$
    1150 $       ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰æ“ª”Ô’n
     1138$       アラームハンドラ先頭番地
    11511139        const ALMHDR _kernel_alminib_almhdr[TNUM_ALMID] = {
    11521140        $JOINEACH almid ALM.ORDER_LIST ","$
     
    11551143        };$NL$
    11561144
    1157 $       ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰Šg’£î•ñ
     1145$       アラームハンドラ拡張情報
    11581146        const intptr_t _kernel_alminib_exinf[TNUM_ALMID] = {
    11591147        $JOINEACH almid ALM.ORDER_LIST ","$
     
    11681156$END$
    11691157
    1170 $ ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ó‘Ô
     1158$ アラームハンドラ状態
    11711159uint16_t _kernel_almcb_almact;$NL$
    11721160$NL$
     
    11741162
    11751163$ ---------------------------------------------------------------------
    1176 ƒ^ƒCƒ€ƒCƒxƒ“ƒgŠÇ—
     1164タイムイベント管理
    11771165$ ---------------------------------------------------------------------
    11781166
     
    11871175$NL$
    11881176
    1189 $ ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN‚̃TƒCƒY
     1177$ タイムイベントブロックのサイズ
    11901178const uint_t _kernel_tnum_tmevt_queue = TNUM_TMEVT;$NL$$NL$
    11911179
    11921180$IF TNUM_TMEVT != 0$
    1193 $       ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒLƒ
    1194 [
     1181$       タイムイベントキュー
    11951182        QUEUE _kernel_tmevt_queue[TNUM_TMEVT+1];$NL$
    1196 $       ƒ^ƒCƒ€ƒCƒxƒ“ƒgŽžŠÔ
     1183$       タイムイベント時間
    11971184        EVTTIM _kernel_tmevt_time[TNUM_TMEVT];$NL$
    1198 $       ƒ^ƒCƒ€ƒCƒxƒ“ƒg‚̃R[ƒ‹ƒoƒbƒN
     1185$       タイムイベントのコールバック
    11991186        CBACK _kernel_tmevt_callback[TNUM_TMEVT];$NL$
    1200 $       ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒR[ƒ‹ƒoƒbƒN‚̈ø”
     1187$       タイムイベントコールバックの引数
    12011188        uintptr_t _kernel_tmevt_arg[TNUM_TMEVT];$NL$
    12021189        $NL$$NL$
     
    12101197
    12111198$ ---------------------------------------------------------------------
    1212 ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pƒXƒ^ƒbƒN—̈æ
     1199非タスクコンテキスト用スタック領域
    12131200$ ---------------------------------------------------------------------
    12141201/*$NL$
     
    12161203$SPC$*/$NL$$NL$
    12171204
    1218 $ // •Ï”’è‹`
    1219 $ // ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pƒXƒ^ƒbƒN—̈æ‚̃TƒCƒY
     1205$ // 変数定義
     1206$ // 非タスクコンテキスト用スタック領域のサイズ
    12201207$interrupt_context_stksz = 0$
    12211208
    1222 $ // DEF_ICS ‚̃Gƒ“ƒgƒŠ‚ª‘¶Ý‚·‚é‚©?
     1209$ // DEF_ICS のエントリが存在するか?
    12231210$IF !LENGTH(ICS.ORDER_LIST)$
    1224 $       // ‚È‚¢ê‡DƒTƒCƒY‚ÍŠù’è’l (DEFAULT_ISTKSZ) ‚ðŽg‚¤
     1211$       // ない場合.サイズは既定値 (DEFAULT_ISTKSZ) を使う
    12251212        #define TOPPERS_ISTKSZ          DEFAULT_ISTKSZ$NL$$NL$
    12261213        $interrupt_context_stksz = DEFAULT_ISTKSZ$
    12271214$ELSE$
    1228 $       // DEF_ICS ‚̃Gƒ“ƒgƒŠ‚ª‚ ‚éê‡
    1229 
    1230 $
    1231 $       // ƒGƒ‰[ƒ`ƒFƒbƒN
    1232 $
    1233 $       // Ã“IAPIuDEF_ICSv‚ª•¡”‚ ‚éiE_OBJj
     1215$       // DEF_ICS のエントリがある場合
     1216
     1217$
     1218$       // エラーチェック
     1219$
     1220$       // 静的API「DEF_ICS」が複数ある(E_OBJ)
    12341221        $IF LENGTH(ICS.ORDER_LIST) > 1$
    12351222                $ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$
    12361223        $END$
    1237 $       // DEF_ICS ‚Å0‚ðŽw’肵‚½ê‡(E_PAR)
     1224$       // DEF_ICS で0を指定した場合(E_PAR)
    12381225        $IF ICS.ISTKSZ[1] == 0$
    12391226                $ERROR ICS.TEXT_LINE[1]$E_PAR: $FORMAT(_("%1% in %2% is 0"), "istksz", "DEF_ICS")$$END$
    12401227        $END$
    1241 $       // í‚É NULL ‚Å‚ ‚éD(E_PAR)
     1228$       // 常に NULL である.(E_PAR)
    12421229        $IF !EQ(ICS.ISTK[1], "NULL")$
    12431230                $ERROR ICS.TEXT_LINE[1]$E_PAR: $FORMAT(("'%1%' of %2% must be NULL."), "istk", "DEF_ICS")$$END$
     
    12511238
    12521239$ ---------------------------------------------------------------------
    1253 $  ‹¤—LƒXƒ^ƒbƒN—̈æ
    1254 $      SSP‚Å‚Í‚·‚ׂĂ̏ˆ—’PˆÊ‚̃Xƒ^ƒbƒN‚ð‹¤—L‚·‚邽‚߁C
    1255 $      ‚±‚±‚ŃVƒXƒeƒ€‘S‘̂̃Xƒ^ƒbƒN—̈æ‚ðŠm•Û‚·‚éD
    1256 $ ---------------------------------------------------------------------
    1257 
    1258 $
    1259 $ ‹¤—LƒXƒ^ƒbƒN‚̃Rƒ“ƒtƒBƒMƒ
    1260 ƒŒ[ƒVƒ‡ƒ“‚ɐ¬Œ÷‚µ‚½‚©‚Ç‚¤‚©
    1261 $
    1262 $ DEF_STK ˆ—’†‚ɃGƒ‰[‚ª”­¶‚µ‚½ê‡C‚±‚̕ϐ”‚ª0‚É‚È‚éD
    1263 $ DEF_STK ˆ—’†‚ɃGƒ‰[‚ª”­¶‚µ‚½‚©‚Ç‚¤‚©‚ð”»’f‚µ‚Ä
    1264 $ “Á’菈—‚ÌŽÀs‚ðƒuƒƒbƒN‚·‚邽‚ß‚ÉŽg—p‚·‚éD
     1240$  共有スタック領域
     1241$      SSPではすべての処理単位のスタックを共有するため,
     1242$      ここでシステム全体のスタック領域を確保する.
     1243$ ---------------------------------------------------------------------
     1244
     1245$
     1246$ 共有スタックのコンフィギュレーションに成功したかどうか
     1247$
     1248$ DEF_STK 処理中にエラーが発生した場合,この変数が0になる.
     1249$ DEF_STK 処理中にエラーが発生したかどうかを判断して
     1250$ 特定処理の実行をブロックするために使用する.
    12651251$
    12661252$configurated_defstk_successfully = 1$
     
    12711257$NL$
    12721258
    1273 $ // •Ï”’è‹`
    1274 $ // Š„‚è“–‚Ä‚ç‚ꂽ‹¤—LƒXƒ^ƒbƒN—̈æ‚̃TƒCƒY
     1259$ // 変数定義
     1260$ // 割り当てられた共有スタック領域のサイズ
    12751261$allocated_stack_size = 0$
    12761262
    1277 $ // DEF_STK ‚̃Gƒ“ƒgƒŠ‚ª‘¶Ý‚·‚é‚©?
     1263$ // DEF_STK のエントリが存在するか?
    12781264$IF !LENGTH(STK.ORDER_LIST)$
    1279 $       // (1) DEF_STK ‚̃Gƒ“ƒgƒŠ‚ª‚È‚¢ê‡
     1265$       // (1) DEF_STK のエントリがない場合
    12801266        static STK_T                    _kernel_stack[COUNT_STK_T(TOPPERS_TSTKSZ+TOPPERS_ISTKSZ)];$NL$
    12811267        #define TOPPERS_STK             _kernel_stack$NL$
     
    12851271        $allocated_stack_size = max_tsk_stksz + interrupt_context_stksz$
    12861272$ELSE$
    1287 $       // (2) DEF_STK ‚̃Gƒ“ƒgƒŠ‚ª‚ ‚éê‡
    1288 
    1289 $       // ƒGƒ‰[ƒ`ƒFƒbƒN
    1290 $       // Ã“IAPIuDEF_STKv‚ª•¡”‚ ‚éiE_OBJj
     1273$       // (2) DEF_STK のエントリがある場合
     1274
     1275$       // エラーチェック
     1276$       // 静的API「DEF_STK」が複数ある(E_OBJ)
    12911277        $IF LENGTH(STK.ORDER_LIST) > 1$
    12921278                $configurated_defstk_successfully = 0$
    12931279                $ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_STK")$$END$
    12941280        $END$
    1295 $       // DEF_STK ‚Ì stksz ‚Å 0 ‚ðŽw’肵‚½ê‡(E_PAR)
     1281$       // DEF_STK の stksz で 0 を指定した場合(E_PAR)
    12961282        $IF STK.STKSZ[1] == 0$
    12971283                $configurated_defstk_successfully = 0$
     
    13001286
    13011287        $IF EQ(STK.STK[1], "NULL")$
    1302 $               // stk ‚ª NULL ‚̏ꍇCƒXƒ^ƒbƒN—̈æ‚ðŽ©“®Š„•t‚¯
     1288$               // stk が NULL の場合,スタック領域を自動割付け
    13031289                static STK_T                    _kernel_stack[COUNT_STK_T($STK.STKSZ[1]$)];$NL$
    13041290                #define TOPPERS_STK             _kernel_stack$NL$
    13051291                #define TOPPERS_STKSZ           ROUND_STK_T($STK.STKSZ[1]$)$NL$
    13061292        $ELSE$
    1307 $               // stk ‚ª NULL ˆÈŠO‚̏ꍇiƒAƒvƒŠ‘¤‚ŃXƒ^ƒbƒN—̈æ‚ð—pˆÓ‚·‚éê‡j
    1308 
    1309 $               // stksz‚ªƒ^[ƒQƒbƒg–ˆ‚É’è‚Ü‚éƒAƒ‰ƒCƒƒ“ƒgƒTƒCƒY‚Ì”{”‚ɃAƒ‰ƒCƒƒ“ƒg‚³‚ê‚Ä‚¢‚È‚¢ê‡iE_PARj
     1293$               // stk が NULL 以外の場合(アプリ側でスタック領域を用意する場合)
     1294
     1295$               // stkszがターゲット毎に定まるアライメントサイズの倍数にアライメントされていない場合(E_PAR)
    13101296                $IF LENGTH(CHECK_STKSZ_ALIGN) && (STK.STKSZ[1] & (CHECK_STKSZ_ALIGN - 1))$
    13111297                        $configurated_defstk_successfully = 0$
     
    13211307$NL$
    13221308
    1323 $ ‹¤—LƒXƒ^ƒbƒN—p‚̃Xƒ^ƒbƒN—̈æ
     1309$ 共有スタック用のスタック領域
    13241310const SIZE              _kernel_stksz = TOPPERS_STKSZ;$NL$
    13251311STK_T *const    _kernel_stk = TOPPERS_STK;$NL$
     
    13311317
    13321318$
    1333 $ // —Dæ“xŠ„‚è“–‚Ä‚¨‚æ‚уXƒ^ƒbƒNÝ’è‚ÉŠÖ‚·‚錋‰Ê‚ð•W€o—Í‚Ö•\Ž¦
     1319$ // 優先度割り当ておよびスタック設定に関する結果を標準出力へ表示
    13341320$
    13351321$IF configurated_defepr_successfully == 1 && configurated_defstk_successfully == 1$
     
    13471333        $TAB$Specified interrupt stack size = $interrupt_context_stksz$(value=$FORMAT("%d",+interrupt_context_stksz)$)$NL$
    13481334        $TAB$Allocated total stack size = $allocated_stack_size$(value=$FORMAT("%d",+allocated_stack_size)$)$NL$
    1349 $       // ƒTƒCƒY‚̃`ƒFƒbƒNDƒXƒ^ƒbƒNƒTƒCƒY‚̐„’è’l‚ªŽÀÛ‚ÉŠ„“–‚Ä‚ç‚ꂽƒTƒCƒY‚æ‚è‘å‚«‚¢ê‡CŒx‚·‚éD
     1335$       // サイズのチェック.スタックサイズの推定値が実際に割当てられたサイズより大きい場合,警告する.
    13501336        $IF (max_tsk_stksz+interrupt_context_stksz) > allocated_stack_size$
    13511337                $TAB$!!!WARNING!!!: Estimated stack size is more than the allocated stack size.$NL$
     
    13551341$END$
    13561342$
    1357 $ // o—͐æ‚ðŒ³‚É–ß‚µ‚Ä‚¨‚­
     1343$ // 出力先を元に戻しておく
    13581344$
    13591345$FILE "kernel_cfg.c"$
     
    13611347
    13621348$ ---------------------------------------------------------------------
    1363 $  Šeƒ‚ƒWƒ
    1364 [ƒ‹‚̏‰Šú‰»ŠÖ”
     1349$  各モジュールの初期化関数
    13651350$ ---------------------------------------------------------------------
    13661351/*$NL$
     
    13931378
    13941379$ ---------------------------------------------------------------------
    1395 ‰Šú‰»ƒ‹[ƒ`ƒ“‚ÌŽÀsŠÖ”
     1380初期化ルーチンの実行関数
    13961381$ ---------------------------------------------------------------------
    13971382/*$NL$
     
    14031388{$NL$
    14041389$FOREACH order INI.ORDER_LIST$
    1405 $       // iniatr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     1390$       // iniatrが(TA_NULL)でない場合(E_RSATR)
    14061391        $IF INI.INIATR[order] != 0$
    14071392                $ERROR INI.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "iniatr", INI.INIATR[order], "inirtn", INI.INIRTN[order], "ATT_INI")$$END$
     
    14131398
    14141399$ ---------------------------------------------------------------------
    1415 I—¹ˆ—ƒ‹[ƒ`ƒ“‚ÌŽÀsŠÖ”
     1400終了処理ルーチンの実行関数
    14161401$ ---------------------------------------------------------------------
    14171402/*$NL$
     
    14231408{$NL$
    14241409$FOREACH rorder TER.RORDER_LIST$
    1425 $       // teratr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     1410$       // teratrが(TA_NULL)でない場合(E_RSATR)
    14261411        $IF TER.TERATR[rorder] != 0$
    14271412                $ERROR TER.TEXT_LINE[rorder]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "teratr", TER.TERATR[rorder], "terrtn", TER.TERRTN[rorder], "ATT_TER")$$END$
  • ssp_qb_r5f100le_cs/trunk/kernel/kernel_impl.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    1010 *             Nagoya Municipal Industrial Research Institute, JAPAN
    1111 *
    12  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    13  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    14  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    15  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    16  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    17  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    18  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    19  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    20 ƒƒ“ƒgi—˜—pŽÒƒ}
    21  *      ƒjƒ
    22 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    23  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    24  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    25  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    26  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    27 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    28 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    29  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    30  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    31  *        ‚·‚邱‚ƁD
    32  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    33  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    34  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    35  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
     12 *  上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
     13 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
     14 *  再配布(以下,利用と呼ぶ)することを無償で許諾する.
     15 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
     16 *      表示,この利用条件および下記の無保証規定が,そのままの形でソース
     17 *      コード中に含まれていること.
     18 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
     19 *      できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
     20 *      ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
     21 *      証規定を掲載すること.
     22 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
     23 *      できない形で再配布する場合には,次のいずれかの条件を満たすこと.
     24 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
     25 *        権表示,この利用条件および下記の無保証規定を掲載すること.
     26 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
     27 *        告すること.
     28 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
     29 *      からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
     30 *      本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
     31 *      く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3632 *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    38  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    39  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    40  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    41  *  ‚í‚È‚¢D
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     34 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     35 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     36 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     37 *  わない.
    4238 *
    4339 */
    4440
    4541/*
    46  *              TOPPERS/SSPƒJ[ƒlƒ‹“à•”Œü‚¯•W€ƒwƒbƒ_ƒtƒ@ƒCƒ‹
     42 *              TOPPERS/SSPカーネル内部向け標準ヘッダファイル
    4743 *
    48  *  ‚±‚̃wƒbƒ_ƒtƒ@ƒCƒ‹‚́CƒJ[ƒlƒ‹‚ð\¬‚·‚éƒvƒƒOƒ‰ƒ€‚̃\[ƒXƒtƒ@ƒCƒ‹
    49  *  ‚Å•K‚¸ƒCƒ“ƒNƒ‹[ƒh‚·‚é‚ׂ«•W€ƒwƒbƒ_ƒtƒ@ƒCƒ‹‚Å‚ ‚éD
     44 *  このヘッダファイルは,カーネルを構成するプログラムのソースファイル
     45 *  で必ずインクルードするべき標準ヘッダファイルである.
    5046 *
    51  *  ƒAƒZƒ“ƒuƒŠŒ¾Œê‚̃\[ƒXƒtƒ@ƒCƒ‹‚©‚炱‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚鎞
    52  *  ‚́CTOPPERS_MACRO_ONLY‚ð’è‹`‚µ‚Ä‚¨‚­D‚±‚ê‚É‚æ‚èCƒ}ƒNƒ’è‹`ˆÈŠO‚ð
    53  *  œ‚­‚悤‚É‚È‚Á‚Ä‚¢‚éD
     47 *  アセンブリ言語のソースファイルからこのファイルをインクルードする時
     48 *  は,TOPPERS_MACRO_ONLYを定義しておく.これにより,マクロ定義以外を
     49 *  除くようになっている.
    5450 */
    5551
     
    5854
    5955/*
    60  *  ƒJ[ƒlƒ‹‚Ì“à•”Ž¯•Ê–¼‚̃Šƒl[ƒ€
     56 *  カーネルの内部識別名のリネーム
    6157 */
    6258#include "kernel_rename.h"
    6359
    6460/*
    65  *  ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Æ‹¤’ʂ̃wƒbƒ_ƒtƒ@ƒCƒ‹
     61 *  アプリケーションと共通のヘッダファイル
    6662 */
    6763#include <kernel.h>
    6864
    6965/*
    70  *  ƒVƒXƒeƒ€ƒƒO‹@”\‚Ì‚½‚ß‚Ì’è‹`
     66 *  システムログ機能のための定義
    7167 */
    7268#include <t_syslog.h>
    7369
    7470/*
    75  *  Œ^ƒLƒƒƒXƒg‚ðs‚¤ƒ}ƒNƒ‚Ì’è‹`
     71 *  型キャストを行うマクロの定義
    7672 */
    7773#ifndef CAST
     
    8076
    8177/*
    82  *  ƒ^[ƒQƒbƒgˆË‘¶î•ñ‚Ì’è‹`
     78 *  ターゲット依存情報の定義
    8379 */
    8480#include "target_config.h"
    8581
    8682/*
    87  *  ‚·‚ׂĂ̊֐”‚ðƒRƒ“ƒpƒCƒ‹‚·‚邽‚ß‚Ì’è‹`
     83 *  すべての関数をコンパイルするための定義
    8884 */
    8985#ifdef ALLFUNC
     
    9288
    9389/*
    94  *  ƒrƒbƒgƒtƒB[ƒ‹ƒh‚Å‚Ì•„†–³‚µ®”Œ^
     90 *  ビットフィールドでの符号無し整数型
    9591 *
    96  *  8ƒrƒbƒgˆÈ‰º‚Ì•‚̃rƒbƒgƒtƒB[ƒ‹ƒh‚ŁC•„†–³‚µ®”’l‚ð•ÛŽ‚µ‚½‚¢ê‡
    97  *  ‚É—p‚¢‚é‚ׂ«ƒf[ƒ^Œ^DANSI C‚ł́CƒrƒbƒgƒtƒB[ƒ‹ƒh‚̃f[ƒ^Œ^‚É‚Í
    98  *  int‚Æunsigned int‚µ‚©‹–‚³‚ê‚È‚¢‚½‚߁CƒfƒtƒHƒ‹ƒg‚Ì’è‹`‚Íunsigned
    99  *  int‚Æ‚µ‚Ä‚¢‚邪Cƒ^[ƒQƒbƒg‚¨‚æ‚уc[ƒ‹ˆË‘¶‚ŁCunsigned char‚Ü‚½‚Í
    100  *  unsigned short‚É’è‹`‚µ‚½•û‚ªŒø—¦‚ª—Ç‚¢ê‡‚ª‚ ‚éD
     92 *  8ビット以下の幅のビットフィールドで,符号無し整数値を保持したい場合
     93 *  に用いるべきデータ型.ANSI Cでは,ビットフィールドのデータ型には
     94 *  intとunsigned intしか許されないため,デフォルトの定義はunsigned
     95 *  intとしているが,ターゲットおよびツール依存で,unsigned charまたは
     96 *  unsigned shortに定義した方が効率が良い場合がある.
    10197 */
    10298#ifndef BIT_FIELD_UINT
     
    105101
    106102/*
    107  *  ƒrƒbƒgƒtƒB[ƒ‹ƒh‚ł̃u[ƒ‹Œ^
     103 *  ビットフィールドでのブール型
    108104 *
    109  *  1ƒrƒbƒg•‚̃rƒbƒgƒtƒB[ƒ‹ƒh‚ŁCƒu[ƒ‹’l‚ð•ÛŽ‚µ‚½‚¢ê‡‚É—p‚¢‚é‚ׂ«
    110  *  ƒf[ƒ^Œ^DƒfƒtƒHƒ‹ƒg‚Å‚ÍBIT_FIELD_UINT‚Æ“¯ˆê‚É’è‹`‚µ‚Ä‚¢‚邪Cƒu[
    111  *  ƒ‹’l‚ð•ÛŽ‚·‚邱‚Ƃ𖾎¦‚·‚邽‚ß‚É•Ê‚Ì–¼Ì‚Æ‚µ‚Ä‚¢‚éD
     105 *  1ビット幅のビットフィールドで,ブール値を保持したい場合に用いるべき
     106 *  データ型.デフォルトではBIT_FIELD_UINTと同一に定義しているが,ブー
     107 *  ル値を保持することを明示するために別の名称としている.
    112108 */
    113109#ifndef BIT_FIELD_BOOL
     
    116112
    117113/*
    118  *  ƒIƒuƒWƒFƒNƒgID‚̍ŏ¬’l‚Ì’è‹`
     114 *  オブジェクトIDの最小値の定義
    119115 */
    120 #define TMIN_TSKID              1               /* ƒ^ƒXƒNID‚̍ŏ¬’l */
    121 #define TMIN_FLGID              1               /* ƒCƒxƒ“ƒgƒtƒ‰ƒOID‚̍ŏ¬’l */
    122 #define TMIN_DTQID              1               /* ƒf[ƒ^ƒLƒ
    123 [ID‚̍ŏ¬’l */
    124 #define TMIN_CYCID              1               /* ŽüŠúƒnƒ“ƒhƒ‰ID‚̍ŏ¬’l */
    125 #define TMIN_ALMID              1               /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ID‚̍ŏ¬’l */
     116#define TMIN_TSKID              1               /* タスクIDの最小値 */
     117#define TMIN_FLGID              1               /* イベントフラグIDの最小値 */
     118#define TMIN_DTQID              1               /* データキューIDの最小値 */
     119#define TMIN_CYCID              1               /* 周期ハンドラIDの最小値 */
     120#define TMIN_ALMID              1               /* アラームハンドラIDの最小値 */
    126121
    127122/*
    128  *  —Dæ“x‚Ì’iŠK”‚Ì’è‹`
     123 *  優先度の段階数の定義
    129124 */
    130125#define TNUM_TPRI               (TMAX_TPRI - TMIN_TPRI + 1)
     
    132127
    133128/*
    134  *  ƒwƒbƒ_ƒtƒ@ƒCƒ‹‚ðŽ‚½‚È‚¢ƒ‚ƒWƒ
    135 [ƒ‹‚̊֐”E•Ï”‚̐錾
     129 *  ヘッダファイルを持たないモジュールの関数・変数の宣言
    136130 */
    137131#ifndef TOPPERS_MACRO_ONLY
    138132
    139133/*
    140  *  Šeƒ‚ƒWƒ
    141 [ƒ‹‚̏‰Šú‰»ikernel_cfg.cj
     134 *  各モジュールの初期化(kernel_cfg.c)
    142135 */
    143136extern void     initialize_object(void);
    144137
    145138/*
    146  *  ‰Šú‰»ƒ‹[ƒ`ƒ“‚ÌŽÀsikernel_cfg.cj
     139 *  初期化ルーチンの実行(kernel_cfg.c)
    147140 */
    148141extern void     call_inirtn(void);
    149142
    150143/*
    151  *  I—¹ˆ—ƒ‹[ƒ`ƒ“‚ÌŽÀsikernel_cfg.cj
     144 *  終了処理ルーチンの実行(kernel_cfg.c)
    152145 */
    153146extern void     call_terrtn(void);
    154147
    155148/*
    156  *  ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p‚̃Xƒ^ƒbƒN—̈æikernel_cfg.cj
     149 *  非タスクコンテキスト用のスタック領域(kernel_cfg.c)
    157150 */
    158 extern const SIZE       istksz;         /* ƒXƒ^ƒbƒN—̈æ‚̃TƒCƒYiŠÛ‚ß‚½’lj */
    159 extern STK_T *const     istk;           /* ƒXƒ^ƒbƒN—̈æ‚̐擪”Ô’n */
     151extern const SIZE       istksz;         /* スタック領域のサイズ(丸めた値) */
     152extern STK_T *const     istk;           /* スタック領域の先頭番地 */
    160153#ifdef TOPPRES_ISTKPT
    161 extern STK_T *const     istkpt;         /* ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚̏‰Šú’l */
     154extern STK_T *const     istkpt;         /* スタックポインタの初期値 */
    162155#endif /* TOPPERS_ISTKPT */
    163156
    164157/*
    165  *  ƒJ[ƒlƒ‹“®ìó‘Ôƒtƒ‰ƒOistartup.cj
     158 *  カーネル動作状態フラグ(startup.c)
    166159 */
    167160extern bool_t   kerflg;
    168161
    169162/*
    170  *  ƒJ[ƒlƒ‹‚Ì‹N“®istartup.cj
     163 *  カーネルの起動(startup.c)
    171164 */
    172165extern void     sta_ker(void);
    173166
    174167/*
    175  *  ƒJ[ƒlƒ‹‚̏I—¹ˆ—istartup.cj
     168 *  カーネルの終了処理(startup.c)
    176169 */
    177170extern void     exit_kernel(void);
  • ssp_qb_r5f100le_cs/trunk/kernel/kernel_int.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    1111 *  Copyright (C) 2011 by Meika Sugimoto
    1212 *
    13  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    15  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    17  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    18  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    20  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—pŽÒƒ}
    22  *      ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    24  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    26  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    27  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    28 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    29 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    30  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    31  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    32  *        ‚·‚邱‚ƁD
    33  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    34  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    35  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    36  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
     13 *  上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
     14 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
     15 *  再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
     17 *      表示,この利用条件および下記の無保証規定が,そのままの形でソース
     18 *      コード中に含まれていること.
     19 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
     20 *      できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
     21 *      ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
     22 *      証規定を掲載すること.
     23 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
     24 *      できない形で再配布する場合には,次のいずれかの条件を満たすこと.
     25 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
     26 *        権表示,この利用条件および下記の無保証規定を掲載すること.
     27 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
     28 *        告すること.
     29 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
     30 *      からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
     31 *      本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
     32 *      く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3733 *
    38  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    39  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    40  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    41  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    42  *  ‚í‚È‚¢D
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     35 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     36 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     37 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     38 *  わない.
    4339 *
    4440 */
    4541
    4642/*
    47  *              kernel_cfg.ci‚¨‚æ‚Ñcfg1_out.cj—pƒwƒbƒ_ƒtƒ@ƒCƒ‹
     43 *              kernel_cfg.c(およびcfg1_out.c)用ヘッダファイル
    4844 */
    4945
     
    5248
    5349/*
    54  *  ƒJ[ƒlƒ‹•W€ƒwƒbƒ_ƒtƒ@ƒCƒ‹
     50 *  カーネル標準ヘッダファイル
    5551 */
    5652#include "kernel_impl.h"
    5753
    5854/*
    59  *  ƒJ[ƒlƒ‹‚ÌŠeƒwƒbƒ_ƒtƒ@ƒCƒ‹
     55 *  カーネルの各ヘッダファイル
    6056 */
    6157#include "task.h"
     
    6460
    6561/*
    66  *  Šg’£ƒpƒbƒP[ƒW‚̃wƒbƒ_ƒtƒ@ƒCƒ‹
     62 *  拡張パッケージのヘッダファイル
    6763 */
    6864#include "time_event.h"
     
    7369
    7470/*
    75  *  ƒŠƒl[ƒ€‚µ‚½ƒVƒ“ƒ{ƒ‹‚ðŒ³‚É–ß‚·‚½‚߂̃wƒbƒ_ƒtƒ@ƒCƒ‹
     71 *  リネームしたシンボルを元に戻すためのヘッダファイル
    7672 */
    7773#include "kernel_unrename.h"
  • ssp_qb_r5f100le_cs/trunk/kernel/kernel_rename.def

    • Property svn:mime-type set to text/plain; charset=shift_jis
  • ssp_qb_r5f100le_cs/trunk/kernel/kernel_rename.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
  • ssp_qb_r5f100le_cs/trunk/kernel/kernel_unrename.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
  • ssp_qb_r5f100le_cs/trunk/kernel/queue.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    55 *  Copyright (C) 2011 by Meika Sugimoto
    66 *
    7  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    8  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    9  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    10  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    11  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    12  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    13  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    14  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    15 ƒƒ“ƒgi—˜—pŽÒƒ}
    16  *      ƒjƒ
    17 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    18  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    19  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    20  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    24  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    26  *        ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    28  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    29  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    30  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
     7 *  上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
     8 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
     9 *  再配布(以下,利用と呼ぶ)することを無償で許諾する.
     10 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
     11 *      表示,この利用条件および下記の無保証規定が,そのままの形でソース
     12 *      コード中に含まれていること.
     13 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
     14 *      できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
     15 *      ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
     16 *      証規定を掲載すること.
     17 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
     18 *      できない形で再配布する場合には,次のいずれかの条件を満たすこと.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
     20 *        権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
     22 *        告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
     24 *      からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
     25 *      本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
     26 *      く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3127 *
    32  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    33  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    34  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    35  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    36  *  ‚í‚È‚¢D
     28 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     29 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     30 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     31 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     32 *  わない.
    3733 *
    3834 */
    3935
    4036/*
    41  *  ƒLƒ
    42 [‘€ìƒwƒbƒ_
     37 *  キュー操作ヘッダ
    4338 *
    44  *  SSPƒJ[ƒlƒ‹‚ł̓ƒ‚ƒŠß–ñ‚Ì‚½‚߂ɃCƒ“ƒfƒbƒNƒX‚ðŽg—p‚µ‚½ƒLƒ
    45 [‚ð—p‚¢‚é
     39 *  SSPカーネルではメモリ節約のためにインデックスを使用したキューを用いる
    4640 */
    4741
     
    4943#define TOPPERS_QUEUE_H
    5044
    51 /* ƒLƒ
    52 [‚̃Cƒ“ƒfƒbƒNƒX */
     45/* キューのインデックス */
    5346typedef uint8_t QUEIDX;
    5447
    55 /* ƒLƒ
    56 [\‘¢‘Ì */
     48/* キュー構造体 */
    5749typedef struct
    5850{
     
    6254
    6355
    64 /* ƒLƒ
    65 [ƒwƒbƒ_‚̏‰Šú‰» */
     56/* キューヘッダの初期化 */
    6657Inline void
    6758queue_initialize(QUEUE *queue , QUEIDX queue_null)
     
    7061}
    7162
    72 /* Žw’肵‚½—v‘f‚Ì‘O‚ɐV‚½‚È—v‘f‚ð’ljÁ */
     63/* 指定した要素の前に新たな要素を追加 */
    7364Inline void
    7465queue_insert_prev(QUEUE *top , QUEIDX queue , QUEIDX entry)
     
    8172
    8273
    83 /* Žw’肵‚½ƒLƒ
    84 [‚ÌŽŸ‚Ì—v‘f‚ðíœ‚µC‚»‚̃Cƒ“ƒfƒbƒNƒX‚ð•Ô‚· */
     74/* 指定したキューの次の要素を削除し,そのインデックスを返す */
    8575Inline QUEIDX
    8676queue_delete_next(QUEUE *top , QUEIDX queue)
     
    9484
    9585/*
    96  *  ƒLƒ
    97 [‚ª‹ó‚©‚Ç‚¤‚©‚̃eƒXƒg
     86 *  キューが空かどうかのテスト
    9887 *
    99  *  queue‚ɂ̓Lƒ
    100 [ƒwƒbƒ_‚ðŽw’è‚·‚邱‚Æ
     88 *  queueにはキューヘッダを指定すること
    10189 */
    10290Inline bool_t
  • ssp_qb_r5f100le_cs/trunk/kernel/ssp_kernel_api.csv

    • Property svn:mime-type set to text/plain; charset=shift_jis
  • ssp_qb_r5f100le_cs/trunk/kernel/ssp_kernel_check.tf

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    99$              Nagoya Municipal Industrial Research Institute, JAPAN
    1010$
    11 $  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    12 $  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    13 $  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    14 $  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    15 $      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    16 $      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    17 $  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    18 $      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    19 ƒƒ“ƒgi—˜—pŽÒƒ}
    20 $      ƒjƒ
    21 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    22 $      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    23 $  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    24 $      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    25 $    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    28 $        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29 $    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    30 $        ‚·‚邱‚ƁD
    31 $  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    32 $      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    33 $      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    34 $      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
     11$  上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
     12$  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
     13$  再配布(以下,利用と呼ぶ)することを無償で許諾する.
     14$  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
     15$      表示,この利用条件および下記の無保証規定が,そのままの形でソース
     16$      コード中に含まれていること.
     17$  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
     18$      できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
     19$      ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
     20$      証規定を掲載すること.
     21$  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
     22$      できない形で再配布する場合には,次のいずれかの条件を満たすこと.
     23$    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
     24$        権表示,この利用条件および下記の無保証規定を掲載すること.
     25$    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
     26$        告すること.
     27$  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
     28$      からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
     29$      本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
     30$      く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3531$
    36 –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    37 ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    38 ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    39 ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    40 ‚í‚È‚¢D
     32本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     33びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     34る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     35により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     36わない.
    4137$
    4238$ ======================================================================
    4339
    4440$
    45 ŠÖ”‚̐擪”Ô’n‚̃`ƒFƒbƒN
     41関数の先頭番地のチェック
    4642$
    4743$IF LENGTH(CHECK_FUNC_ALIGN) || LENGTH(CHECK_FUNC_NONNULL)$
    48 $       // ƒ^ƒXƒN‚ƃ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚̐擪”Ô’n‚̃`ƒFƒbƒN
     44$       // タスクとタスク例外処理ルーチンの先頭番地のチェック
    4945        $tinib = SYMBOL("_kernel_tinib_table")$
    5046        $FOREACH tskid TSK.ID_LIST$
     
    7268
    7369$
    74 ƒXƒ^ƒbƒN—̈æ‚̐擪”Ô’n‚̃`ƒFƒbƒN
     70スタック領域の先頭番地のチェック
    7571$
    7672$IF LENGTH(CHECK_STACK_ALIGN) || LENGTH(CHECK_STACK_NONNULL)$
    77 $       // ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p‚̃Xƒ^ƒbƒN—̈æ‚̐擪”Ô’n‚̃`ƒFƒbƒN
     73$       // 非タスクコンテキスト用のスタック領域の先頭番地のチェック
    7874        $istk = PEEK(SYMBOL("_kernel_istk"), sizeof_void_ptr)$
    7975        $IF LENGTH(CHECK_STACK_ALIGN) && (istk & (CHECK_STACK_ALIGN - 1))$
  • ssp_qb_r5f100le_cs/trunk/kernel/ssp_kernel_def.csv

    • Property svn:mime-type set to text/plain; charset=shift_jis
  • ssp_qb_r5f100le_cs/trunk/kernel/startup.c

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    1111 *  Copyright (C) 2010-2011 by Meika Sugimoto
    1212 *
    13  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    15  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    17  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    18  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    20  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—pŽÒƒ}
    22  *      ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    24  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    26  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    27  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    28 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    29 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    30  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    31  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    32  *        ‚·‚邱‚ƁD
    33  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    34  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    35  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    36  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
     13 *  上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
     14 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
     15 *  再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
     17 *      表示,この利用条件および下記の無保証規定が,そのままの形でソース
     18 *      コード中に含まれていること.
     19 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
     20 *      できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
     21 *      ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
     22 *      証規定を掲載すること.
     23 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
     24 *      できない形で再配布する場合には,次のいずれかの条件を満たすこと.
     25 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
     26 *        権表示,この利用条件および下記の無保証規定を掲載すること.
     27 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
     28 *        告すること.
     29 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
     30 *      からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
     31 *      本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
     32 *      く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3733 *
    38  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    39  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    40  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    41  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    42  *  ‚í‚È‚¢D
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     35 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     36 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     37 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     38 *  わない.
    4339 *
    4440 */
    4541
    4642/*
    47  *              ƒJ[ƒlƒ‹‚̏‰Šú‰»‚ƏI—¹ˆ—
     43 *              カーネルの初期化と終了処理
    4844 */
    4945
     
    5450
    5551/*
    56  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     52 *  トレースログマクロのデフォルト定義
    5753 */
    5854#ifndef LOG_KER_ENTER
     
    7672
    7773/*
    78  *  ƒJ[ƒlƒ‹“®ìó‘Ôƒtƒ‰ƒO
     74 *  カーネル動作状態フラグ
    7975 *
    80  *  ƒXƒ^[ƒgƒAƒbƒvƒ‹[ƒ`ƒ“‚ŁCfalsei0j‚ɏ‰Šú‰»‚³‚ê‚邱‚Æ‚ðŠú‘Ò‚µ‚Ä
    81  *  ‚¢‚éD
     76 *  スタートアップルーチンで,false(=0)に初期化されることを期待して
     77 *  いる.
    8278 */
    8379bool_t  kerflg = false;
    8480
    8581/*
    86  *  ƒJ[ƒlƒ‹‚Ì‹N“®
    87  *    NMI‚ðœ‚­‘S‚Ä‚ÌŠ„ž‚Ý‚ªƒ}ƒXƒN‚³‚ꂽó‘Ô(‘SŠ„ž‚݃ƒbƒNó‘Ô‚É‘Š“–)‚ŌĂяo‚³‚ê‚éD
     82 *  カーネルの起動
     83 *    NMIを除く全ての割込みがマスクされた状態(全割込みロック状態に相当)で呼び出される.
    8884 */
    8985void
     
    9793       
    9894        /*
    99          *  ƒJ[ƒlƒ‹‚Ì“®ì‚ðŠJŽn‚·‚éD
     95         *  カーネルの動作を開始する.
    10096         */     
    10197        kerflg = true;
    10298       
    103         /* ƒfƒBƒXƒpƒbƒ`ƒƒ‚ð‹N“®‚µCƒ^ƒXƒN‚Ì“®ì‚ðŠJŽn‚·‚é */
     99        /* ディスパッチャを起動し,タスクの動作を開始する */
    104100        LOG_KER_ENTER();
    105101        start_dispatch();
     
    112108
    113109/*
    114  *  ƒJ[ƒlƒ‹‚̏I—¹
     110 *  カーネルの終了
    115111 */
    116112ER
     
    122118       
    123119        /*
    124          *  Š„ž‚݃ƒbƒNó‘ԂɈڍs
     120         *  割込みロック状態に移行
    125121         */
    126122        SIL_LOC_INT();
    127123       
    128124        /*
    129          *  ƒJ[ƒlƒ‹“®ì‚̏I—¹
     125         *  カーネル動作の終了
    130126         */
    131127        LOG_KER_LEAVE();
     
    133129       
    134130        /*
    135          *  ƒJ[ƒlƒ‹‚̏I—¹ˆ—‚̌ďo‚µ
     131         *  カーネルの終了処理の呼出し
    136132         *
    137          *  ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚ɐ؂芷‚¦‚āCexit_kernel‚ðŒÄ‚яo‚·D
     133         *  非タスクコンテキストに切り換えて,exit_kernelを呼び出す.
    138134         */
    139135        call_exit_kernel();
    140136       
    141137        /*
    142          *  SIL_UNL_INT‚ðŒÄ‚яo‚·‚ªC‚±‚±‚É“ž’B‚·‚邱‚Æ‚Í‚È‚¢D
    143          *  ‹Lq‚·‚é‚Ì‚ÍSIL_PRE_LOC‚Ő錾‚³‚ê‚é•Ï”‚ª‚ ‚éê‡‚ɁC
    144          *  ƒRƒ“ƒpƒCƒ‰‚ªo—Í‚·‚éŒx‚ð—}§‚·‚邽‚ß‚Å‚ ‚éD
     138         *  SIL_UNL_INTを呼び出すが,ここに到達することはない.
     139         *  記述するのはSIL_PRE_LOCで宣言される変数がある場合に,
     140         *  コンパイラが出力する警告を抑制するためである.
    145141         */
    146142        SIL_UNL_INT();
     
    152148
    153149/*
    154  *  ƒJ[ƒlƒ‹‚̏I—¹ˆ—
     150 *  カーネルの終了処理
    155151 */
    156152void
     
    158154{
    159155        /*
    160          *  I—¹ˆ—ƒ‹[ƒ`ƒ“‚ÌŽÀs
     156         *  終了処理ルーチンの実行
    161157         */
    162158        call_terrtn();
    163159       
    164160        /*
    165          *  ƒ^[ƒQƒbƒgˆË‘¶‚̏I—¹ˆ—
     161         *  ターゲット依存の終了処理
    166162         */
    167163        target_exit();
  • ssp_qb_r5f100le_cs/trunk/kernel/sys_manage.c

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    99 *  Copyright (C) 2010 by Meika Sugimoto
    1010 *
    11  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    12  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    13  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    14  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    15  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    16  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    17  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    18  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    19 ƒƒ“ƒgi—˜—p
    20  *      ŽÒƒ}ƒjƒ
    21 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    22  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    23  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    24  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    25  *      ‚ƁD
    26  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    27 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    28 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    29  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    30  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    31  *        •ñ‚·‚邱‚ƁD
    32  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    33  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    34  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    35  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    36  *      –Ɛӂ·‚邱‚ƁD
     11 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     12 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     13 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     14 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     15 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     16 *      スコード中に含まれていること.
     17 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     18 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     19 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     20 *      の無保証規定を掲載すること.
     21 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     22 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     23 *      と.
     24 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     25 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     26 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     27 *        報告すること.
     28 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     29 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     30 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     31 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     32 *      免責すること.
    3733 *
    38  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    39  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    40  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    41  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    42  *  ‚̐ӔC‚𕉂í‚È‚¢D
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 */
    4541
    4642/*
    47  *              ƒVƒXƒeƒ€ó‘ÔŠÇ—‹@”\
     43 *              システム状態管理機能
    4844 */
    4945
     
    5349
    5450/*
    55  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     51 *  トレースログマクロのデフォルト定義
    5652 */
    5753
     
    145141
    146142/*
    147  *  CPUƒƒbƒNó‘Ԃւ̈ڍs
     143 *  CPUロック状態への移行
    148144 */
    149145#ifdef TOPPERS_loc_cpu
     
    170166
    171167/*
    172  *  CPUƒƒbƒNó‘Ԃւ̈ڍsi”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     168 *  CPUロック状態への移行(非タスクコンテキスト用)
    173169 */
    174170#ifdef TOPPERS_iloc_cpu
     
    195191
    196192/*
    197  *  CPUƒƒbƒNó‘Ԃ̉ðœ
     193 *  CPUロック状態の解除
    198194 *
    199  *  CPUƒƒbƒN’†‚́CƒfƒBƒXƒpƒbƒ`‚ª•K—v‚Æ‚È‚éƒT[ƒrƒXƒR[ƒ‹‚ðŒÄ‚яo‚·‚±
    200  *  ‚Æ‚Í‚Å‚«‚È‚¢‚½‚߁CCPUƒƒbƒNó‘Ô‚Ì‰ðœŽž‚ɃfƒBƒXƒpƒbƒ`ƒƒ‚ð‹N“®‚·‚é
    201  *  •K—v‚Í‚È‚¢D
     195 *  CPUロック中は,ディスパッチが必要となるサービスコールを呼び出すこ
     196 *  とはできないため,CPUロック状態の解除時にディスパッチャを起動する
     197 *  必要はない.
    202198 */
    203199#ifdef TOPPERS_unl_cpu
     
    224220
    225221/*
    226  *  CPUƒƒbƒNó‘Ô‚Ì‰ðœi”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     222 *  CPUロック状態の解除(非タスクコンテキスト用)
    227223 *
    228  *  CPUƒƒbƒN’†‚́CƒfƒBƒXƒpƒbƒ`‚ª•K—v‚Æ‚È‚éƒT[ƒrƒXƒR[ƒ‹‚ðŒÄ‚яo‚·‚±
    229  *  ‚Æ‚Í‚Å‚«‚È‚¢‚½‚߁CCPUƒƒbƒNó‘Ô‚Ì‰ðœŽž‚ɃfƒBƒXƒpƒbƒ`ƒƒ‚Ì‹N“®‚ð—v
    230  *  ‹‚·‚é•K—v‚Í‚È‚¢D
     224 *  CPUロック中は,ディスパッチが必要となるサービスコールを呼び出すこ
     225 *  とはできないため,CPUロック状態の解除時にディスパッチャの起動を要
     226 *  求する必要はない.
    231227 */
    232228#ifdef TOPPERS_iunl_cpu
     
    253249
    254250/*
    255  *  ƒfƒBƒXƒpƒbƒ`‚Ì‹ÖŽ~
     251 *  ディスパッチの禁止
    256252 */
    257253#ifdef TOPPERS_dis_dsp
     
    278274
    279275/*
    280  *  ƒfƒBƒXƒpƒbƒ`‚Ì‹–‰Â
     276 *  ディスパッチの許可
    281277 */
    282278#ifdef TOPPERS_ena_dsp
     
    309305
    310306/*
    311  *  ƒRƒ“ƒeƒLƒXƒg‚ÌŽQÆ
     307 *  コンテキストの参照
    312308 */
    313309#ifdef TOPPERS_sns_ctx
     
    328324
    329325/*
    330  *  CPUƒƒbƒNó‘Ô‚ÌŽQÆ
     326 *  CPUロック状態の参照
    331327 */
    332328#ifdef TOPPERS_sns_loc
     
    347343
    348344/*
    349  *  ƒfƒBƒXƒpƒbƒ`‹ÖŽ~ó‘Ô‚ÌŽQÆ
     345 *  ディスパッチ禁止状態の参照
    350346 */
    351347#ifdef TOPPERS_sns_dsp
     
    366362
    367363/*
    368  *  ƒfƒBƒXƒpƒbƒ`•Û—¯ó‘Ô‚ÌŽQÆ
     364 *  ディスパッチ保留状態の参照
    369365 */
    370366#ifdef TOPPERS_sns_dpn
     
    386382
    387383/*
    388  *  ƒJ[ƒlƒ‹”ñ“®ìó‘Ô‚ÌŽQÆ
     384 *  カーネル非動作状態の参照
    389385 */
    390386#ifdef TOPPERS_sns_ker
  • ssp_qb_r5f100le_cs/trunk/kernel/task.c

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    1111 *  Copyright (C) 2010 by Meika Sugimoto
    1212 *
    13  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    15  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    17  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    18  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    20  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—pŽÒƒ}
    22  *      ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    24  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    26  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    27  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    28 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    29 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    30  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    31  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    32  *        ‚·‚邱‚ƁD
    33  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    34  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    35  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    36  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
     13 *  上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
     14 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
     15 *  再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
     17 *      表示,この利用条件および下記の無保証規定が,そのままの形でソース
     18 *      コード中に含まれていること.
     19 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
     20 *      できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
     21 *      ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
     22 *      証規定を掲載すること.
     23 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
     24 *      できない形で再配布する場合には,次のいずれかの条件を満たすこと.
     25 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
     26 *        権表示,この利用条件および下記の無保証規定を掲載すること.
     27 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
     28 *        告すること.
     29 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
     30 *      からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
     31 *      本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
     32 *      く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3733 *
    38  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    39  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    40  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    41  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    42  *  ‚í‚È‚¢D
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     35 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     36 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     37 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     38 *  わない.
    4339 *
    4440 */
     
    4844
    4945/*
    50  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     46 *  トレースログマクロのデフォルト定義
    5147 */
    5248
     
    6056
    6157
    62 extern const intptr_t   tinib_exinf[];                  /* ƒ^ƒXƒN‚ÌŠg’£î•ñ */
    63 extern const TASK       tinib_task[];                   /* ƒ^ƒXƒN‚Ì‹N“®”Ô’n */
    64 extern const uint_t     tinib_epriority[];              /* ƒ^ƒXƒN‚ÌŽÀsŽž—Dæ“xi“à•”•\Œ»j */
    65 
    66 /* “à•”ŠÖ”‚̃vƒƒgƒ^ƒCƒvéŒ¾ */
     58extern const intptr_t   tinib_exinf[];                  /* タスクの拡張情報 */
     59extern const TASK       tinib_task[];                   /* タスクの起動番地 */
     60extern const uint_t     tinib_epriority[];              /* タスクの実行時優先度(内部表現) */
     61
     62/* 内部関数のプロトタイプ宣言 */
    6763Inline bool_t primap_empty(void);
    6864Inline bool_t primap_test(uint_t pri);
     
    7672
    7773/*
    78  *  ŽÀsó‘Ôƒ^ƒXƒN‚ÌŒ»Ý—Dæ“x
     74 *  実行状態タスクの現在優先度
    7975 */
    8076uint_t runtsk_curpri;
    8177
    8278/*
    83  *  ŽÀsó‘Ôƒ^ƒXƒN‚Ì‹N“®Žž—Dæ“x
     79 *  実行状態タスクの起動時優先度
    8480 */
    8581uint_t runtsk_ipri;
    8682
    8783/*
    88  *  ƒŒƒfƒBƒLƒ
    89 [ƒT[ƒ`‚Ì‚½‚߂̃rƒbƒgƒ}ƒbƒv
     84 *  レディキューサーチのためのビットマップ
    9085 */
    9186volatile uint_t ready_primap;
    9287
    9388/*
    94  *  ‹N“®—v‹ƒLƒ
    95 [ƒCƒ“ƒO‚̃rƒbƒgƒ}ƒbƒv
     89 *  起動要求キューイングのビットマップ
    9690 */
    9791uint_t  actque_bitmap;
    9892
    9993/*
    100  *  ƒ^ƒXƒNƒfƒBƒXƒpƒbƒ`‹N“®—v‹ƒtƒ‰ƒO
     94 *  タスクディスパッチ起動要求フラグ
    10195 */
    10296bool_t  reqflg;
    10397
    10498/*
    105  *  ƒfƒBƒXƒpƒbƒ`‹ÖŽ~ó‘Ô
     99 *  ディスパッチ禁止状態
    106100 */
    107101bool_t  disdsp;
    108102
    109103/*
    110  *  read_primap‚̏‰Šú’l
     104 *  read_primapの初期値
    111105 */
    112106extern const uint_t init_rdypmap;
     
    117111
    118112/*
    119  *  ƒ^ƒXƒNID‚©‚ç‚Ì‹N“®Žž—Dæ“xŽæ“¾(ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p)
     113 *  タスクIDからの起動時優先度取得(タスクコンテキスト用)
    120114 */
    121115uint_t
     
    138132
    139133/*
    140  *  ƒ^ƒXƒNID‚©‚ç‚Ì‹N“®Žž—Dæ“xŽæ“¾(”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p)
     134 *  タスクIDからの起動時優先度取得(非タスクコンテキスト用)
    141135 */
    142136#ifdef TOPPERS_get_ipri
     
    151145
    152146/*
    153  *  ƒrƒbƒgƒ}ƒbƒvƒT[ƒ`ŠÖ”
     147 *  ビットマップサーチ関数
    154148 *
    155  *  bitmap“à‚Ì1‚̃rƒbƒg‚Ì“àCÅ‚à‰ºˆÊi‰Ej‚Ì‚à‚Ì‚ðƒT[ƒ`‚µC‚»‚̃rƒb
    156  *  ƒg”ԍ†‚ð•Ô‚·Dƒrƒbƒg”ԍ†‚́CÅ‰ºˆÊƒrƒbƒg‚ð0‚Æ‚·‚éDbitmap‚É0‚ðŽw’è
    157  *  ‚µ‚Ä‚Í‚È‚ç‚È‚¢D‚±‚̊֐”‚ł́Cbitmap‚ª8ƒrƒbƒg‚Å‚ ‚邱‚Æ‚ð‰¼’è‚µC
    158  *  uint8_tŒ^‚Æ‚µ‚Ä‚¢‚éD
     149 *  bitmap内の1のビットの内,最も下位(右)のものをサーチし,そのビッ
     150 *  ト番号を返す.ビット番号は,最下位ビットを0とする.bitmapに0を指定
     151 *  してはならない.この関数では,bitmapが8ビットであることを仮定し,
     152 *  uint8_t型としている.
    159153 *
    160  *  ƒrƒbƒgƒT[ƒ`–½—ß‚ðŽ‚ÂƒvƒƒZƒbƒT‚ł́CƒrƒbƒgƒT[ƒ`–½—ß‚ðŽg‚¤‚悤‚É
    161  *  ‘‚«’¼‚µ‚½•û‚ªŒø—¦‚ª—Ç‚¢ê‡‚ª‚ ‚éD‚±‚̂悤‚ȏꍇ‚ɂ́Cƒ^[ƒQƒbƒg
    162  *  ˆË‘¶•”‚ŃrƒbƒgƒT[ƒ`–½—ß‚ðŽg‚Á‚½bitmap_search‚ð’è‹`‚µC
    163  *  OMIT_BITMAP_SEARCH‚ðƒ}ƒNƒ’è‹`‚·‚ê‚΂悢D‚Ü‚½CƒrƒbƒgƒT[ƒ`–½—ß‚Ì
    164  *  ƒT[ƒ`•ûŒü‚ª‹t‚È‚Ç‚Ì——R‚Å—Dæ“x‚ƃrƒbƒg‚Ƃ̑Ήž‚ð•ÏX‚µ‚½‚¢ê‡‚É
    165  *  ‚́CPRIMAP_BIT‚ðƒ}ƒNƒ’è‹`‚·‚ê‚΂悢D
     154 *  ビットサーチ命令を持つプロセッサでは,ビットサーチ命令を使うように
     155 *  書き直した方が効率が良い場合がある.このような場合には,ターゲット
     156 *  依存部でビットサーチ命令を使ったbitmap_searchを定義し,
     157 *  OMIT_BITMAP_SEARCHをマクロ定義すればよい.また,ビットサーチ命令の
     158 *  サーチ方向が逆などの理由で優先度とビットとの対応を変更したい場合に
     159 *  は,PRIMAP_BITをマクロ定義すればよい.
    166160 *
    167  *  ‚Ü‚½C•W€ƒ‰ƒCƒuƒ‰ƒŠ‚Éffs‚ª‚ ‚é‚È‚çCŽŸ‚̂悤‚É’è‹`‚µ‚Ä•W€ƒ‰ƒCƒu
    168  *  ƒ‰ƒŠ‚ðŽg‚Á‚½•û‚ªŒø—¦‚ª—Ç‚¢‰Â”\«‚à‚ ‚éD
     161 *  また,標準ライブラリにffsがあるなら,次のように定義して標準ライブ
     162 *  ラリを使った方が効率が良い可能性もある.
    169163 *              #define bitmap_search(bitmap) (ffs(bitmap) - 1)
    170164 */
     
    201195
    202196/*
    203  *  ‹N“®Žž—Dæ“xƒrƒbƒgƒ}ƒbƒv‚ª‹ó‚©‚̃`ƒFƒbƒN
     197 *  起動時優先度ビットマップが空かのチェック
    204198 */
    205199Inline bool_t
     
    210204
    211205/*
    212  *  Žw’肵‚½‹N“®Žž—Dæ“x‚Ì‹N“®Žž—Dæ“xƒrƒbƒgƒ}ƒbƒv‚ªƒZƒbƒg‚³‚ê‚Ä‚¢‚é‚©‚Ç‚¤‚©‚̃`ƒFƒbƒN
     206 *  指定した起動時優先度の起動時優先度ビットマップがセットされているかどうかのチェック
    213207 */
    214208Inline bool_t
     
    219213
    220214/*
    221  *  ‹N“®Žž—Dæ“xƒrƒbƒgƒ}ƒbƒv‚̃T[ƒ`
     215 *  起動時優先度ビットマップのサーチ
    222216 */
    223217Inline uint_t
     
    228222
    229223/*
    230  *  ‹N“®Žž—Dæ“xƒrƒbƒgƒ}ƒbƒv‚̃Zƒbƒg
     224 *  起動時優先度ビットマップのセット
    231225 */
    232226Inline void
     
    237231
    238232/*
    239  *  ‹N“®Žž—Dæ“xƒrƒbƒgƒ}ƒbƒv‚̃NƒŠƒA
     233 *  起動時優先度ビットマップのクリア
    240234 */
    241235Inline void
     
    246240
    247241/*
    248  *  Å‚—Dæ‡ˆÊƒ^ƒXƒN‚̃T[ƒ`
     242 *  最高優先順位タスクのサーチ
    249243 */
    250244
     
    261255#ifdef TOPPERS_tskdmt
    262256/*
    263  *  Žw’肵‚½‹N“®Žž—Dæ“x‚̃^ƒXƒN‚ªŽÀs‚Å‚«‚éó‘Ô‚©‚Ç‚¤‚©‚̃eƒXƒg
     257 *  指定した起動時優先度のタスクが実行できる状態かどうかのテスト
    264258 *
    265259 */
     
    273267
    274268/*
    275  *  ƒ^ƒXƒNŠÇ—ƒ‚ƒWƒ
    276 [ƒ‹‚̏‰Šú‰»
     269 *  タスク管理モジュールの初期化
    277270 */
    278271
     
    283276initialize_task(void)
    284277{
    285         /* ‹N“®Žž—Dæ“xƒrƒbƒgƒ}ƒbƒv‚̏‰Šú‰» */
     278        /* 起動時優先度ビットマップの初期化 */
    286279        ready_primap = init_rdypmap;
    287280       
    288         /* ƒ^ƒXƒN—Dæ“x‚̏‰Šú‰» */
     281        /* タスク優先度の初期化 */
    289282        runtsk_curpri = TSKPRI_NULL;
    290283        runtsk_ipri = TSKPRI_NULL;
    291284       
    292         /* ‹N“®—v‹ƒLƒ
    293 [ƒCƒ“ƒO‚̏‰Šú‰» */
     285        /* 起動要求キューイングの初期化 */
    294286        actque_bitmap = 0U;
    295287       
    296         /* Š„ž‚Ý‹ÖŽ~ƒtƒ‰ƒO‚̏‰Šú‰» */
     288        /* 割込み禁止フラグの初期化 */
    297289        disdsp = false;
    298290}
     
    301293
    302294/*
    303  *  ƒ^ƒXƒN‚Ì‹N“®
     295 *  タスクの起動
    304296 */
    305297
     
    314306       
    315307        /*
    316          *  ŽÀsó‘Ôƒ^ƒXƒN‚ÌŒ»Ý—Dæ“x‚ƈø”‚ÅŽw’肳‚ꂽ
    317          *  ‹N“®‘Ώۃ^ƒXƒN‚̏‰Šú—Dæ“x‚ð”äŠr‚µCŽÀsó‘Ôƒ^ƒXƒN‚ð
    318          *  •ÏX‚·‚é‚©”»’è‚·‚éD
     308         *  実行状態タスクの現在優先度と引数で指定された
     309         *  起動対象タスクの初期優先度を比較し,実行状態タスクを
     310         *  変更するか判定する.
    319311         *
    320          *  ‚½‚¾‚µŽÀsó‘Ôƒ^ƒXƒN‚ð•ÏX‚·‚éê‡‚̓fƒBƒXƒpƒbƒ`‹ÖŽ~ó‘Ô‚àŽQÆ‚·‚éD
     312         *  ただし実行状態タスクを変更する場合はディスパッチ禁止状態も参照する.
    321313         */
    322314        if(ipri < runtsk_curpri) {
     
    334326
    335327/*
    336  *  ƒ^ƒXƒN‚ÌŽÀs
     328 *  タスクの実行
    337329 */
    338330
     
    342334run_task(uint_t ipri)
    343335{
    344         uint_t next_pri;                /* ŽŸ‚ÉŽÀsŠJŽn‚·‚éƒ^ƒXƒN‚Ì‹N“®Žž—Dæ“x */
    345         uint_t saved_ipri;              /* ŒÄ‚яo‚µŒ³ƒ^ƒXƒN‚̏‰Šú—Dæ“x */
    346         uint_t saved_curpri;    /* ŒÄ‚яo‚µŒ³ƒ^ƒXƒN‚ÌŒ»Ý—Dæ“x */
     336        uint_t next_pri;                /* 次に実行開始するタスクの起動時優先度 */
     337        uint_t saved_ipri;              /* 呼び出し元タスクの初期優先度 */
     338        uint_t saved_curpri;    /* 呼び出し元タスクの現在優先度 */
    347339        bool_t cont;
    348340       
    349         /* Å‚—Dæ‡ˆÊƒ^ƒXƒN‚ðŽÀs‚·‚é‘O‚ɁCŒ»ÝŽÀs’†‚̃^ƒXƒN‚ÌŒ»Ý—Dæ“x‚Ə‰Šú—Dæ“x‚ð•Û‘¶‚·‚é */
     341        /* 最高優先順位タスクを実行する前に,現在実行中のタスクの現在優先度と初期優先度を保存する */
    350342        next_pri = ipri;
    351343        saved_ipri = runtsk_ipri;
     
    353345       
    354346        do {
    355                 /* ŽÀs‚·‚éƒ^ƒXƒN‚ÌŒ»Ý—Dæ“x‚ðŽÀsŽž—Dæ“x‚ɐݒ肷‚é */
     347                /* 実行するタスクの現在優先度を実行時優先度に設定する */
    356348                runtsk_curpri = tinib_epriority[next_pri];
    357349                runtsk_ipri = next_pri;
    358350               
    359                 /* CPUƒƒbƒN‰ðœ */
     351                /* CPUロック解除 */
    360352                t_unlock_cpu();
    361353               
    362                 /* ƒ^ƒXƒNŽÀsŠJŽn */
     354                /* タスク実行開始 */
    363355                (*((TASK)(tinib_task[next_pri])))(tinib_exinf[next_pri]);
    364356               
    365357                if (t_sense_lock()) {
    366358                        /*
    367                          *  CPUƒƒbƒNó‘Ô‚Åext_tsk‚ªŒÄ‚΂ꂽê‡‚́CCPUƒƒbƒN‚ð‰ðœ‚µ
    368                          *  ‚Ä‚©‚çƒ^ƒXƒN‚ðI—¹‚·‚éDŽÀ‘•ã‚́CƒT[ƒrƒXƒR[ƒ‹“à‚Å‚ÌCPU
    369                          *  ƒƒbƒN‚ðÈ—ª‚·‚ê‚΂悢‚¾‚¯D
     359                         *  CPUロック状態でext_tskが呼ばれた場合は,CPUロックを解除し
     360                         *  てからタスクを終了する.実装上は,サービスコール内でのCPU
     361                         *  ロックを省略すればよいだけ.
    370362                         */
    371363                }
    372364                else {
    373365                        /*
    374                          *  ‚±‚Ìt_lock_cpu‚ð‚±‚Ì‰º‚Ìdisdsp‚̐ݒè‚̂悤‚É‚µ‚È‚¢‚̂́C
    375                          *  CPUƒƒbƒN’†‚ɍēxt_lock_cpu‚ðŒÄ‚΂Ȃ¢‚½‚ß‚Å‚ ‚éD
     366                         *  このt_lock_cpuをこの下のdisdspの設定のようにしないのは,
     367                         *  CPUロック中に再度t_lock_cpuを呼ばないためである.
    376368                         */
    377369                        t_lock_cpu();
    378370                }
    379371               
    380                 /* Š„ž‚Ý—Dæ“xƒ}ƒXƒN‚Í‘S‰ðœó‘Ô‚Ì‚Í‚¸‚Ȃ̂ŁC‰½‚à‚µ‚È‚¢ */
     372                /* 割込み優先度マスクは全解除状態のはずなので,何もしない */
    381373               
    382374                /*
    383                  *  ƒfƒBƒXƒpƒbƒ`‹ÖŽ~ó‘Ô‚Åext_tsk‚ªŒÄ‚΂ꂽê‡‚́CƒfƒBƒXƒpƒb
    384                  *  ƒ`‹–‰Âó‘Ô‚É‚µ‚Ä‚©‚çƒ^ƒXƒN‚ðI—¹‚·‚éD
     375                 *  ディスパッチ禁止状態でext_tskが呼ばれた場合は,ディスパッ
     376                 *  チ許可状態にしてからタスクを終了する.
    385377                 *
    386                  *      –{—ˆ‚͈ȉº‚̂悤‚É‹Lq‚·‚ׂ«‚Å‚ ‚邪C‚¢‚¸‚ê‚É‚¹‚ædisdsp‚ð
    387                  *      false‚É‚·‚ê‚΂¢‚¢‚½‚߁C’P‚Éfalse‚ɐݒ肷‚éD
     378                 *      本来は以下のように記述すべきであるが,いずれにせよdisdspを
     379                 *      falseにすればいいため,単にfalseに設定する.
    388380                 *
    389381                 *              if (disdsp) {
     
    393385                disdsp = false;
    394386               
    395                 /* ƒrƒbƒgƒ}ƒbƒvƒNƒŠƒAD */
     387                /* ビットマップクリア. */
    396388                primap_clear(next_pri);
    397389               
    398390                cont = false;
    399391               
    400                 /* ƒ^ƒXƒN‹N“®—v‹ƒLƒ
    401 [ƒCƒ“ƒO‚̃`ƒFƒbƒN */
     392                /* タスク起動要求キューイングのチェック */
    402393                if (actque_test(next_pri)) {
    403394                        actque_clear(next_pri);
     
    405396                }
    406397               
    407                 /* ‚¢‚¸‚ê‚©‚̃^ƒXƒN‚ªŽÀs‰Â”\ó‘Ô‚É‚È‚Á‚Ä‚¢‚é‚© */
     398                /* いずれかのタスクが実行可能状態になっているか */
    408399                if(!primap_empty())
    409400                {
    410                         /* –ß‚èæƒ^ƒXƒN‚ÌŒ»Ý—Dæ“x‚æ‚荂‚¢‹N“®Žž—Dæ“x‚ð‚à‚ƒ^ƒXƒN‚ª‹N“®‚³‚ꂽ‚© */
     401                        /* 戻り先タスクの現在優先度より高い起動時優先度をもつタスクが起動されたか */
    411402                        next_pri = search_schedtsk();
    412403                        if(saved_curpri > next_pri)
     
    424415
    425416/*
    426  *  ƒ^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒ
     417 *  タスクディスパッチャ
    427418 */
    428419
     
    434425        do {
    435426                if(!primap_empty()) {
    436                         /* ƒ^ƒXƒN‚ÌŠJŽn */
     427                        /* タスクの開始 */
    437428                        run_task(search_schedtsk());
    438429                }
  • ssp_qb_r5f100le_cs/trunk/kernel/task.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    1111 *  Copyright (C) 2011 by Meika Sugimoto
    1212 *
    13  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    15  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    17  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    18  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    20  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—pŽÒƒ}
    22  *      ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    24  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    26  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    27  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    28 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    29 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    30  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    31  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    32  *        ‚·‚邱‚ƁD
    33  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    34  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    35  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    36  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
     13 *  上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
     14 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
     15 *  再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
     17 *      表示,この利用条件および下記の無保証規定が,そのままの形でソース
     18 *      コード中に含まれていること.
     19 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
     20 *      できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
     21 *      ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
     22 *      証規定を掲載すること.
     23 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
     24 *      できない形で再配布する場合には,次のいずれかの条件を満たすこと.
     25 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
     26 *        権表示,この利用条件および下記の無保証規定を掲載すること.
     27 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
     28 *        告すること.
     29 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
     30 *      からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
     31 *      本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
     32 *      く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3733 *
    38  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    39  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    40  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    41  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    42  *  ‚í‚È‚¢D
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     35 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     36 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     37 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     38 *  わない.
    4339 *
    4440 */
     
    5147
    5248/*
    53  *  ƒ^ƒXƒN—Dæ“x‚Ì“à•”•\Œ»EŠO•”•\Œ»•ÏŠ·ƒ}ƒNƒ
     49 *  タスク優先度の内部表現・外部表現変換マクロ
    5450 */
    5551#define INT_PRIORITY(x)         ((uint_t)((x) - TMIN_TPRI))
    5652
    5753/*
    58  *  ƒ^ƒXƒNID‚̍őå’likernel_cfg.cj
     54 *  タスクIDの最大値(kernel_cfg.c)
    5955 */
    6056extern const ID tmax_tskid;
    6157
    6258/*
    63  *  ƒ^ƒXƒN‚̐”
     59 *  タスクの数
    6460 */
    6561#define tnum_tsk        ((uint_t)(tmax_tskid - TMIN_TSKID + 1))
    6662
    6763/*
    68  *  ŽÀs‰Â”\ó‘Ԃ̃^ƒXƒN‚ª‚È‚¢Žž‚ÉŽÀs’†ƒ^ƒXƒN‚ÌŒ»Ý—Dæ“x‚ɐݒ肷‚é’l
     64 *  実行可能状態のタスクがない時に実行中タスクの現在優先度に設定する値
    6965 */
    7066#define TSKPRI_NULL             (UINT_MAX)
     
    7268
    7369/*
    74  *  ƒŒƒfƒBƒLƒ
    75 [ƒT[ƒ`‚Ì‚½‚߂̃rƒbƒgƒ}ƒbƒv
     70 *  レディキューサーチのためのビットマップ
    7671 */
    7772extern volatile uint_t  ready_primap;
    7873
    7974/*
    80  *  ‹N“®—v‹ƒLƒ
    81 [ƒCƒ“ƒO‚̃rƒbƒgƒ}ƒbƒv
     75 *  起動要求キューイングのビットマップ
    8276 */
    8377extern uint_t   actque_bitmap;
    8478
    8579/*
    86  *  ƒfƒBƒXƒpƒbƒ`^ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‹N“®—v‹ƒtƒ‰ƒO
    87  *
    88  *  Š„ž‚݃nƒ“ƒhƒ‰^CPU—áŠOƒnƒ“ƒhƒ‰‚̏oŒûˆ—‚ɁCƒfƒBƒXƒpƒbƒ`‚Ü‚½‚Í
    89  *  ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚Ì‹N“®‚ð—v‹‚·‚邱‚Æ‚ðŽ¦‚·ƒtƒ‰ƒOD
     80 *  ディスパッチ/タスク例外処理ルーチン起動要求フラグ
     81 *
     82 *  割込みハンドラ/CPU例外ハンドラの出口処理に,ディスパッチまたは
     83 *  タスク例外処理ルーチンの起動を要求することを示すフラグ.
    9084 */
    9185extern bool_t   reqflg;
    9286
    9387/*
    94  *  ƒfƒBƒXƒpƒbƒ`‹ÖŽ~ó‘Ô
    95  *
    96  *  ƒfƒBƒXƒpƒbƒ`‹ÖŽ~ó‘Ô‚Å‚ ‚邱‚Æ‚ðŽ¦‚·ƒtƒ‰ƒOD
     88 *  ディスパッチ禁止状態
     89 *
     90 *  ディスパッチ禁止状態であることを示すフラグ.
    9791 */
    9892extern bool_t   disdsp;
    9993
    10094/*
    101  *  ŽÀsó‘Ôƒ^ƒXƒN‚ÌŒ»Ý—Dæ“x
    102  *
    103  *  ŽÀs’†‚̃^ƒXƒN‚ÉŽÀsŽž—Dæ“x‚ªÝ’肳‚ê‚Ä‚¢‚ê‚ÎŽÀsŽž—Dæ“x‚ªC
    104  *  Ý’肳‚ê‚Ä‚¢‚È‚¯‚ê‚΋N“®Žž—Dæ“x‚ªÝ’肳‚ê‚éD
     95 *  実行状態タスクの現在優先度
     96 *
     97 *  実行中のタスクに実行時優先度が設定されていれば実行時優先度が,
     98 *  設定されていなければ起動時優先度が設定される.
    10599 */
    106100extern uint_t runtsk_curpri;
    107101
    108102/*
    109  *  ŽÀsó‘Ôƒ^ƒXƒN‚Ì‹N“®Žž—Dæ“x
     103 *  実行状態タスクの起動時優先度
    110104 */
    111105extern uint_t runtsk_ipri;
    112106
    113107/*
    114  *  ƒ^ƒXƒNŠÇ—ƒ‚ƒWƒ
    115 [ƒ‹‚̏‰Šú‰»
    116  *
    117  *  ‘S‚Ẵ^ƒXƒN‚ð‰Šú‰»‚·‚éDŠeƒ^ƒXƒN‚̓^ƒXƒN‘®«‚ÉTA_ACT‚ªÝ’肳‚ê‚Ä‚¢‚ê‚Î
    118  *  ŽÀs‰Â”\ó‘ԁC‚»‚¤‚Å‚È‚¢ê‡‚Í‹xŽ~ó‘Ô‚Æ‚È‚éD
     108 *  タスク管理モジュールの初期化
     109 *
     110 *  全てのタスクを初期化する.各タスクはタスク属性にTA_ACTが設定されていれば
     111 *  実行可能状態,そうでない場合は休止状態となる.
    119112 * 
    120  *  ‚Ü‚½AƒfƒBƒXƒpƒbƒ`‹–‰Âƒtƒ‰ƒO‚ðƒfƒBƒXƒpƒbƒ`‹–‰Âó‘Ԃɐݒ肷‚éD
     113 *  また、ディスパッチ許可フラグをディスパッチ許可状態に設定する.
    121114 * 
    122  *  –{ŠÖ”‚̓Rƒ“ƒtƒBƒMƒ
    123 ƒŒ[ƒ^‚ª¶¬‚·‚éobject_initializeˆÈŠO‚ŌĂñ‚Å‚Í‚È‚ç‚È‚¢D
     115 *  本関数はコンフィギュレータが生成するobject_initialize以外で呼んではならない.
    124116 */
    125117extern void initialize_task(void);
    126118
    127119/*
    128  *  ƒ^ƒXƒN‚Ì‹N“®
    129  *
    130  *  ipri‚ÅŽw’肵‚½‹N“®Žž—Dæ“x‚ðŽ‚Âƒ^ƒXƒN‚ðŽÀs‰Â”\ó‘Ô‚É‘JˆÚ‚³‚¹‚éD
    131  *  –{ŠÖ”‚ðŽÀs‚·‚邱‚Æ‚É‚æ‚èƒvƒŠƒGƒ“ƒvƒg‚ª”­¶‚·‚éê‡‚Ítrue‚ðC
    132  *  ‚»‚¤‚Å‚È‚¢ê‡‚Ífalse‚ð•Ô‚·D
    133  *
    134  *  –{ŠÖ”‚ÍCPUƒƒbƒNó‘ԁC‘SŠ„ž‚݃ƒbƒN‰ðœó‘ԁCŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô‚Å
    135  *  ŒÄ‚яo‚·‚±‚ƁD
     120 *  タスクの起動
     121 *
     122 *  ipriで指定した起動時優先度を持つタスクを実行可能状態に遷移させる.
     123 *  本関数を実行することによりプリエンプトが発生する場合はtrueを,
     124 *  そうでない場合はfalseを返す.
     125 *
     126 *  本関数はCPUロック状態,全割込みロック解除状態,割込み優先度マスク全解除状態で
     127 *  呼び出すこと.
    136128 */
    137129extern bool_t make_active(uint_t ipri);
    138130
    139131/*
    140  *  Žw’肵‚½‹N“®Žž—Dæ“x‚̃^ƒXƒN‚ª‹xŽ~ó‘Ô‚©‚Ç‚¤‚©‚̃eƒXƒg
    141  *
    142  *  ipri‚ÅŽw’肵‚½‹N“®Žž—Dæ“x‚ðŽ‚Âƒ^ƒXƒN‚ª‹xŽ~ó‘Ô‚Å‚ ‚ê‚Î
    143  *  true‚ð‚»‚êˆÈŠOiŽÀs‰Â”\ó‘ԁCŽÀs‰Â”\ó‘ԁj‚Å‚ ‚ê‚Îfalse‚ð•Ô‚·D
    144  *
    145  *  –{ŠÖ”‚ÍCPUƒƒbƒNó‘ԁC‘SŠ„ž‚݃ƒbƒN‰ðœó‘ԁCŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô‚Å
    146  *  ŒÄ‚яo‚·‚±‚ƁD
     132 *  指定した起動時優先度のタスクが休止状態かどうかのテスト
     133 *
     134 *  ipriで指定した起動時優先度を持つタスクが休止状態であれば
     135 *  trueをそれ以外(実行可能状態,実行可能状態)であればfalseを返す.
     136 *
     137 *  本関数はCPUロック状態,全割込みロック解除状態,割込み優先度マスク全解除状態で
     138 *  呼び出すこと.
    147139 */
    148140extern bool_t test_dormant(uint_t ipri);
    149141
    150142/*
    151  *  Å‚—Dæ‡ˆÊƒ^ƒXƒN‚̃T[ƒ`
    152  *
    153  *  ŽÀs‰Â”\ó‘Ԃ̃^ƒXƒN‚Ì’†‚©‚çÅ‚à—Dæ‡ˆÊ‚ª‚‚¢ƒ^ƒXƒN‚̏‰Šú—Dæ“x‚ð
    154  *  •Ô‚·D
    155  *
    156  *  –{ŠÖ”‚ÍCPUƒƒbƒNó‘ԁC‘SŠ„ž‚݃ƒbƒN‰ðœó‘ԁCŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô‚Å
    157  *  ŒÄ‚яo‚·‚±‚ƁD
     143 *  最高優先順位タスクのサーチ
     144 *
     145 *  実行可能状態のタスクの中から最も優先順位が高いタスクの初期優先度を
     146 *  返す.
     147 *
     148 *  本関数はCPUロック状態,全割込みロック解除状態,割込み優先度マスク全解除状態で
     149 *  呼び出すこと.
    158150 */
    159151extern uint_t search_schedtsk(void);
    160152
    161153/*
    162  *  ƒ^ƒXƒN‚ÌŽÀs
    163  *
    164  *  ipri‚ÅŽw’肵‚½‹N“®Žž—Dæ“x‚ðŽ‚Âƒ^ƒXƒN‚ðŽÀs‚·‚éD
    165  *  –{ŠÖ”‚©‚çŽÀs‚µ‚½ƒ^ƒXƒN‚©‚çƒT[ƒrƒXƒR[ƒ‹‚ðŒo—R‚µ‚Ä
    166  *  Ä‹A“I‚ɌĂ΂ê‚邱‚Æ‚à‚ ‚éD
    167  *
    168  *  –{ŠÖ”‚ÍCPUƒƒbƒNó‘ԁC‘SŠ„ž‚݃ƒbƒN‰ðœó‘ԁCŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô‚Å
    169  *  ŒÄ‚яo‚·‚±‚ƁD
     154 *  タスクの実行
     155 *
     156 *  ipriで指定した起動時優先度を持つタスクを実行する.
     157 *  本関数から実行したタスクからサービスコールを経由して
     158 *  再帰的に呼ばれることもある.
     159 *
     160 *  本関数はCPUロック状態,全割込みロック解除状態,割込み優先度マスク全解除状態で
     161 *  呼び出すこと.
    170162 */
    171163extern void run_task(uint_t ipri);
    172164
    173165/*
    174  *  ƒ^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒ
    175  *
    176  *  ƒJ[ƒlƒ‹‰Šú‰»Š®—¹Œã‚ɌĂяo‚³‚êCÅ‚—Dæ‡ˆÊ‚Æ‚È‚Á‚½ƒ^ƒXƒN‚ðŽÀs‚·‚éD
    177  *
    178  *  –{ŠÖ”‚ÍCPUƒƒbƒNó‘ԁC‘SŠ„ž‚݃ƒbƒN‰ðœó‘ԁCŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô‚Å
    179  *  ŒÄ‚яo‚·‚±‚ƁD
    180  *  ‚È‚¨C–{ŠÖ”‚©‚ç‚̓Šƒ^[ƒ“‚µ‚È‚¢D
     166 *  タスクディスパッチャ
     167 *
     168 *  カーネル初期化完了後に呼び出され,最高優先順位となったタスクを実行する.
     169 *
     170 *  本関数はCPUロック状態,全割込みロック解除状態,割込み優先度マスク全解除状態で
     171 *  呼び出すこと.
     172 *  なお,本関数からはリターンしない.
    181173 * 
    182174 */
     
    184176
    185177/*
    186  *  ƒ^ƒXƒN‚Ì‹N“®Žž—Dæ“xŽæ“¾(ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p)
    187  *
    188  *  tskid‚ÅŽw’肵‚½ƒ^ƒXƒN‚Ì‹N“®Žž—Dæ“x‚ðŽæ“¾‚·‚éD
    189  *  tskid‚ÍTMIN_TSKIDˆÈãCtmax_tskidˆÈ‰º‚Ì’lC‚à‚µ‚­‚ÍTSK_SELF‚Å
    190  *  Žw’肵‚È‚¯‚ê‚΂Ȃç‚È‚¢D
     178 *  タスクの起動時優先度取得(タスクコンテキスト用)
     179 *
     180 *  tskidで指定したタスクの起動時優先度を取得する.
     181 *  tskidはTMIN_TSKID以上,tmax_tskid以下の値,もしくはTSK_SELFで
     182 *  指定しなければならない.
    191183 */
    192184extern uint_t get_ipri_self(ID tskid);
    193185
    194186/*
    195  *  ƒ^ƒXƒN‚Ì‹N“®Žž—Dæ“xŽæ“¾(”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p)
    196  *
    197  *  tskid‚ÅŽw’肵‚½ƒ^ƒXƒN‚Ì‹N“®Žž—Dæ“x‚ðŽæ“¾‚·‚éD
    198  *  tskid‚ÍTMIN_TSKIDˆÈãCtmax_tskidˆÈ‰º‚Ì’l‚ÅŽw’肵‚È‚¯‚ê‚΂Ȃç‚È‚¢D
     187 *  タスクの起動時優先度取得(非タスクコンテキスト用)
     188 *
     189 *  tskidで指定したタスクの起動時優先度を取得する.
     190 *  tskidはTMIN_TSKID以上,tmax_tskid以下の値で指定しなければならない.
    199191 */
    200192extern uint_t get_ipri(ID tskid);
    201193
    202194
    203 /* ‹N“®—v‹ƒLƒ
    204 [ƒCƒ“ƒOƒrƒbƒgƒ}ƒbƒv‚Ì‘€ì */
     195/* 起動要求キューイングビットマップの操作 */
    205196#define ACTQUE_BIT(ipri)                        (1U << (ipri))
    206197
    207 /* ‹N“®—v‹ƒLƒ
    208 [ƒCƒ“ƒO‚̃Zƒbƒg */
     198/* 起動要求キューイングのセット */
    209199Inline
    210200void actque_set(uint_t ipri)
     
    213203}
    214204
    215 /* ‹N“®—v‹ƒLƒ
    216 [ƒCƒ“ƒO‚̃NƒŠƒA */
     205/* 起動要求キューイングのクリア */
    217206Inline
    218207void actque_clear(uint_t ipri)
     
    221210}
    222211
    223 /* ‹N“®—v‹ƒLƒ
    224 [ƒCƒ“ƒO”‚̃`ƒFƒbƒN */
     212/* 起動要求キューイング数のチェック */
    225213Inline
    226214bool_t actque_test(uint_t ipri)
  • ssp_qb_r5f100le_cs/trunk/kernel/task_manage.c

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    1111 *  Copyright (C) 2011 by Meika Sugimoto
    1212 *
    13  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    15  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    17  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    18  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    20  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—pŽÒƒ}
    22  *      ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    24  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    26  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    27  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    28 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    29 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    30  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    31  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    32  *        ‚·‚邱‚ƁD
    33  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    34  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    35  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    36  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
     13 *  上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
     14 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
     15 *  再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
     17 *      表示,この利用条件および下記の無保証規定が,そのままの形でソース
     18 *      コード中に含まれていること.
     19 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
     20 *      できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
     21 *      ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
     22 *      証規定を掲載すること.
     23 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
     24 *      できない形で再配布する場合には,次のいずれかの条件を満たすこと.
     25 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
     26 *        権表示,この利用条件および下記の無保証規定を掲載すること.
     27 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
     28 *        告すること.
     29 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
     30 *      からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
     31 *      本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
     32 *      く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3733 *
    38  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    39  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    40  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    41  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    42  *  ‚í‚È‚¢D
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     35 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     36 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     37 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     38 *  わない.
    4339 *
    4440 */
    4541
    4642/*
    47  *              ƒ^ƒXƒNŠÇ—‹@”\
     43 *              タスク管理機能
    4844 */
    4945
     
    5349
    5450/*
    55  *  ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
     51 *  トレースログマクロのデフォルト定義
    5652 */
    5753#ifndef LOG_ACT_TSK_ENTER
     
    7369
    7470/*
    75  *  ƒ^ƒXƒN‚Ì‹N“®
     71 *  タスクの起動
    7672 */
    7773#ifdef TOPPERS_act_tsk
     
    113109
    114110/*
    115  *  ƒ^ƒXƒN‚Ì‹N“®i”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
     111 *  タスクの起動(非タスクコンテキスト用)
    116112 */
    117113
Note: See TracChangeset for help on using the changeset viewer.