Ignore:
Timestamp:
Aug 3, 2017, 10:46:41 PM (7 years ago)
Author:
coas-nagasima
Message:

プロパティの文字コードにUTF-8を追加、キーワードを削除

Location:
asp3_gr_sakura/trunk/kernel
Files:
62 edited

Legend:

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

    • Property svn:mime-type changed from text/x-makefile to text/x-makefile; charset=UTF-8
    r317 r318  
    99#              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010#
    11 #  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14 #  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18 #      スコード中に含まれていること.
    19 #  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #      の無保証規定を掲載すること.
    26 #  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #      と.
    30 #    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34 #    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #        報告すること.
    38 #  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43 #      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #      å
    46 è²¬ã™ã‚‹ã“と.
     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#      免責すること.
    4733#
    48 #  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50 #  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53 #  の責任を負わない.
     34#  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#  の責任を負わない.
    5439#
    55 #  $Id: Makefile.kernel 554 2016-01-17 13:21:59Z ertl-hiro $
     40#  $Id$
    5641#
    5742
    5843#
    59 #               ã‚«ãƒ¼ãƒãƒ«ã®ãƒ•ã‚¡ã‚¤ãƒ«æ§‹æˆã®å®šç¾©
     44#               カーネルのファイル構成の定義
    6045#
    6146
    6247#
    63 #  1つのソースファイルから複数のオブジェクトファイルを生成するように作
    64 æˆã•ã‚ŒãŸã‚½ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒªã‚¹ãƒˆ
     48#  1つのソースファイルから複数のオブジェクトファイルを生成するように作
     49成されたソースファイルのリスト
    6550#
    6651KERNEL_FCSRCS = startup.c task.c taskhook.c wait.c time_event.c \
     
    7156
    7257#
    73 å„ソースファイルから生成されるオブジェクトファイルのリスト
     58各ソースファイルから生成されるオブジェクトファイルのリスト
    7459#
    7560startup = sta_ker.o ext_ker.o kermem.o
     
    135120
    136121#
    137 ç”Ÿæˆã•ã‚Œã‚‹ã‚ªãƒ–ジェクトファイルの依存関係の定義
     122生成されるオブジェクトファイルの依存関係の定義
    138123#
    139124$(startup) $(startup:.o=.s): startup.c
  • asp3_gr_sakura/trunk/kernel/alarm.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              アラーム通知機能
     44 *              アラーム通知機能
    6045 */
    6146
     
    6550
    6651/*
    67  *  トレースログマクロのデフォルト定義
     52 *  トレースログマクロのデフォルト定義
    6853 */
    6954#ifndef LOG_ALM_ENTER
     
    116101
    117102/*
    118  *  アラーム通知の数
     103 *  アラーム通知の数
    119104 */
    120105#define tnum_alm        ((uint_t)(tmax_almid - TMIN_ALMID + 1))
     
    122107
    123108/*
    124  *  アラーム通知IDからアラーム通知管理ブロックを取り出すためのマクロ
     109 *  アラーム通知IDからアラーム通知管理ブロックを取り出すためのマクロ
    125110 */
    126111#define INDEX_ALM(almid)        ((uint_t)((almid) - TMIN_ALMID))
     
    130115
    131116/*
    132  *  使用していないアラーム通知管理ブロックのリスト
     117 *  使用していないアラーム通知管理ブロックのリスト
    133118 *
    134  *  アラーム通知管理ブロックのå
    135 ˆé ­ã«ã¯ã‚­ãƒ¥ãƒ¼ã«ã¤ãªããŸã‚ã®é ˜åŸŸãŒãªã„た
    136  *  め,タイムイベントブロック(tmevtb)の領域を用いる.
     119 *  アラーム通知管理ブロックの先頭にはキューにつなぐための領域がないた
     120 *  め,タイムイベントブロック(tmevtb)の領域を用いる.
    137121 */
    138122QUEUE   free_almcb;
    139123
    140124/*
    141  *  アラーム通知機能の初期化
     125 *  アラーム通知機能の初期化
    142126 */
    143127void
     
    170154
    171155/*
    172  *  アラーム通知の生成
     156 *  アラーム通知の生成
    173157 */
    174158#ifdef TOPPERS_acre_alm
     
    228212
    229213/*
    230  *  アラーム通知の削除
     214 *  アラーム通知の削除
    231215 */
    232216#ifdef TOPPERS_del_alm
     
    272256
    273257/*
    274  *  アラーム通知の動作開始
     258 *  アラーム通知の動作開始
    275259 */
    276260#ifdef TOPPERS_sta_alm
     
    312296
    313297/*
    314  *  アラーム通知の動作停止
     298 *  アラーム通知の動作停止
    315299 */
    316300#ifdef TOPPERS_stp_alm
     
    348332
    349333/*
    350  *  アラーム通知の状æ
    351 ‹å‚ç
    352 §
     334 *  アラーム通知の状態参照
    353335 */
    354336#ifdef TOPPERS_ref_alm
     
    389371
    390372/*
    391  *  アラーム通知起動ルーチン
     373 *  アラーム通知起動ルーチン
    392374 */
    393375#ifdef TOPPERS_almcal
     
    397379{
    398380        /*
    399          *  アラーム通知を停止状æ
    400 ‹ã«ã™ã‚‹ï¼Ž
     381         *  アラーム通知を停止状態にする.
    401382         */
    402383        p_almcb->almsta = false;
    403384
    404385        /*
    405          *  通知ハンドラを,CPUロック解除状æ
    406 ‹ã§å‘¼ã³å‡ºã™ï¼Ž
     386         *  通知ハンドラを,CPUロック解除状態で呼び出す.
    407387         */
    408388        unlock_cpu();
  • asp3_gr_sakura/trunk/kernel/alarm.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              アラーム通知機能
     44 *              アラーム通知機能
    6045 */
    6146
     
    6853
    6954/*
    70  *  アラーム通知初期化ブロック
     55 *  アラーム通知初期化ブロック
    7156 */
    7257typedef struct alarm_handler_initialization_block {
    73         ATR                     almatr;                 /* アラーム通知属性 */
    74         intptr_t        exinf;                  /* 通知ハンドラの拡張æƒ
    75 å ± */
    76         NFYHDR          nfyhdr;                 /* 通知ハンドラの起動番地 */
     58        ATR                     almatr;                 /* アラーム通知属性 */
     59        intptr_t        exinf;                  /* 通知ハンドラの拡張情報 */
     60        NFYHDR          nfyhdr;                 /* 通知ハンドラの起動番地 */
    7761} ALMINIB;
    7862
    7963/*
    80  *  アラーム通知管理ブロック
     64 *  アラーム通知管理ブロック
    8165 */
    8266typedef struct alarm_handler_control_block {
    83         const ALMINIB *p_alminib;       /* 初期化ブロックへのポインタ */
    84         bool_t          almsta;                 /* アラーム通知の動作状æ
    85 ‹ */
    86         TMEVTB          tmevtb;                 /* タイムイベントブロック */
     67        const ALMINIB *p_alminib;       /* 初期化ブロックへのポインタ */
     68        bool_t          almsta;                 /* アラーム通知の動作状態 */
     69        TMEVTB          tmevtb;                 /* タイムイベントブロック */
    8770} ALMCB;
    8871
    8972/*
    90  *  使用していないアラーム通知管理ブロックのリスト
     73 *  使用していないアラーム通知管理ブロックのリスト
    9174 */
    9275extern QUEUE    free_almcb;
    9376
    9477/*
    95  *  アラーム通知IDの最大値(kernel_cfg.c)
     78 *  アラーム通知IDの最大値(kernel_cfg.c)
    9679 */
    9780extern const ID tmax_almid;
     
    9982
    10083/*
    101  *  アラーム通知初期化ブロックのエリア(kernel_cfg.c)
     84 *  アラーム通知初期化ブロックのエリア(kernel_cfg.c)
    10285 */
    10386extern const ALMINIB    alminib_table[];
     
    10588
    10689/*
    107  *  アラーム通知の通知方法の格納エリア(kernel_cfg.c)
     90 *  アラーム通知の通知方法の格納エリア(kernel_cfg.c)
    10891 */
    10992extern T_NFYINFO        aalm_nfyinfo_table[];
    11093
    11194/*
    112  *  アラーム通知管理ブロックのエリア(kernel_cfg.c)
     95 *  アラーム通知管理ブロックのエリア(kernel_cfg.c)
    11396 */
    11497extern ALMCB    almcb_table[];
    11598
    11699/*
    117  *  アラーム通知管理ブロックからアラーム通知IDを取り出すためのマクロ
     100 *  アラーム通知管理ブロックからアラーム通知IDを取り出すためのマクロ
    118101 */
    119102#define ALMID(p_almcb)  ((ID)(((p_almcb) - almcb_table) + TMIN_ALMID))
    120103
    121104/*
    122  *  アラーム通知機能の初期化
     105 *  アラーム通知機能の初期化
    123106 */
    124107extern void     initialize_alarm(void);
    125108
    126109/*
    127  *  アラーム通知起動ルーチン
     110 *  アラーム通知起動ルーチン
    128111 */
    129112extern void     call_alarm(ALMCB *p_almcb);
  • asp3_gr_sakura/trunk/kernel/alarm.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010#
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     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#       免責すること.
    4733#
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
    5439#
    55 #   $Id: alarm.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     40#   $Id$
    5641#
    5742
    5843#
    59 #               ã‚¢ãƒ©ãƒ¼ãƒ é€šçŸ¥æ©Ÿèƒ½ã®ç”Ÿæˆã‚¹ã‚¯ãƒªãƒ—ト
     44#               アラーム通知機能の生成スクリプト
    6045#
    6146
     
    6752
    6853  def prepare(key, params)
    69     # almatrが無効の場合(E_RSATR)[NGKI2491ï¼½
    70     #(TA_STA以外のビットがセットされている場合)
     54    # almatrが無効の場合(E_RSATR)[NGKI2491]
     55    #(TA_STA以外のビットがセットされている場合)
    7156    if (params[:almatr] & ~($TA_STA)) != 0
    7257      error_illegal_id("E_RSATR", params, :almatr, :almid)
    7358    end
    7459
    75     # 通知æƒ
    76 å ±ã®å‡¦ç†
     60    # 通知情報の処理
    7761    params[:nfyhdr] = generateNotifyHandler(key, params, :almid)
    7862  end
     
    8569
    8670#
    87 #  アラーム通知に関するæƒ
    88 å ±ã®ç”Ÿæˆ
     71#  アラーム通知に関する情報の生成
    8972#
    9073$kernelCfgC.comment_header("Alarm Notification Functions")
  • asp3_gr_sakura/trunk/kernel/allfunc.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
    9  *  上記著作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    12  *  変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    16  *      スコード中に含まれていること.
    17  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18  *      用できる形で再é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21  *      è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23  *      の無保証規定を掲載すること.
    24  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25  *      用できない形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27  *      と.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *    (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35  *        報告すること.
    36  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37  *      害からも,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    41  *      由に基づく請求からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43  *      å
    44 è²¬ã™ã‚‹ã“と.
    45  *
    46  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    47 ãŠ
    48  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    50  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    51  *  の責任を負わない.
     9 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
     31 *
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    5237 *
    5338 *  $Id$
     
    5540
    5641/*
    57  *              すべての関数をコンパイルするための定義
     42 *              すべての関数をコンパイルするための定義
    5843 */
    5944
  • asp3_gr_sakura/trunk/kernel/check.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
    47  *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     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 *      免責すること.
     33 *
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              エラーチェック用マクロ
     44 *              エラーチェック用マクロ
    6045 */
    6146
     
    6651
    6752/*
    68  *  オブジェクトIDの範囲の判定
     53 *  オブジェクトIDの範囲の判定
    6954 */
    7055#define VALID_TSKID(tskid)      (TMIN_TSKID <= (tskid) && (tskid) <= tmax_tskid)
     
    8065
    8166/*
    82  *  オブジェクト番号の範囲の判定
     67 *  オブジェクト番号の範囲の判定
    8368 */
    8469#ifndef VALID_INTNO_DISINT
     
    9176
    9277/*
    93  *  優å
    94 ˆåº¦ã®ç¯„囲の判定
     78 *  優先度の範囲の判定
    9579 */
    9680#define VALID_TPRI(tpri)        (TMIN_TPRI <= (tpri) && (tpri) <= TMAX_TPRI)
     
    10791
    10892/*
    109  *  相対時間の範囲の判定
     93 *  相対時間の範囲の判定
    11094 */
    11195#define VALID_RELTIM(reltim)    ((reltim) <= TMAX_RELTIM)
    11296
    11397/*
    114  *  タイムアウト指定値の範囲の判定
     98 *  タイムアウト指定値の範囲の判定
    11599 */
    116100#define VALID_TMOUT(tmout)      ((tmout) <= TMAX_RELTIM || (tmout) == TMO_FEVR \
     
    118102
    119103/*
    120  *  アラインしているかの判定
     104 *  アラインしているかの判定
    121105 */
    122106#define ALIGNED(val, align)             ((((uintptr_t)(val)) & ((align) - 1U)) == 0U)
     
    159143
    160144/*
    161  *  NULLでないことの判定
     145 *  NULLでないことの判定
    162146 */
    163147#ifdef CHECK_INTPTR_NONNULL
     
    174158
    175159/*
    176  *  呼出しコンテキストのチェック(E_CTX)
     160 *  呼出しコンテキストのチェック(E_CTX)
    177161 */
    178162#define CHECK_TSKCTX() do {                                                                     \
     
    184168
    185169/*
    186  *  CPUロック状æ
    187 ‹ã®ãƒã‚§ãƒƒã‚¯ï¼ˆE_CTX)
     170 *  CPUロック状態のチェック(E_CTX)
    188171 */
    189172#define CHECK_UNL() do {                                                                        \
     
    195178
    196179/*
    197  *  呼出しコンテキストとCPUロック状æ
    198 ‹ã®ãƒã‚§ãƒƒã‚¯ï¼ˆE_CTX)
     180 *  呼出しコンテキストとCPUロック状態のチェック(E_CTX)
    199181 */
    200182#define CHECK_TSKCTX_UNL() do {                                                         \
     
    206188
    207189/*
    208  *  ディスパッチ保留状æ
    209 ‹ã§ãªã„かのチェック(E_CTX)
     190 *  ディスパッチ保留状態でないかのチェック(E_CTX)
    210191 */
    211192#define CHECK_DISPATCH() do {                                                           \
     
    217198
    218199/*
    219  *  その他のコンテキストエラーのチェック(E_CTX)
     200 *  その他のコンテキストエラーのチェック(E_CTX)
    220201 */
    221202#define CHECK_CTX(exp) do {                                                                     \
     
    227208
    228209/*
    229  *  オブジェクトIDのチェック(E_ID)
     210 *  オブジェクトIDのチェック(E_ID)
    230211 */
    231212#define CHECK_ID(exp) do {                                                                      \
     
    237218
    238219/*
    239  *  予約属性エラーのチェック(E_RSATR)
     220 *  予約属性エラーのチェック(E_RSATR)
    240221 */
    241222#define CHECK_RSATR(atr, valid_atr) do {                                        \
     
    247228
    248229/*
    249  *  パラメータエラーのチェック(E_PAR)
     230 *  パラメータエラーのチェック(E_PAR)
    250231 */
    251232#define CHECK_PAR(exp) do {                                                                     \
     
    257238
    258239/*
    259  *  不正使用エラーのチェック(E_ILUSE)
     240 *  不正使用エラーのチェック(E_ILUSE)
    260241 */
    261242#define CHECK_ILUSE(exp) do {                                                           \
     
    267248
    268249/*
    269  *  静的なオブジェクト状æ
    270 ‹ã‚¨ãƒ©ãƒ¼ã®ãƒã‚§ãƒƒã‚¯ï¼ˆE_OBJ)
     250 *  静的なオブジェクト状態エラーのチェック(E_OBJ)
    271251 */
    272252#define CHECK_OBJ(exp) do {                                                                     \
  • asp3_gr_sakura/trunk/kernel/cyclic.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              周期通知機能
     44 *              周期通知機能
    6045 */
    6146
     
    6550
    6651/*
    67  *  トレースログマクロのデフォルト定義
     52 *  トレースログマクロのデフォルト定義
    6853 */
    6954#ifndef LOG_CYC_ENTER
     
    116101
    117102/*
    118  *  周期通知の数
     103 *  周期通知の数
    119104 */
    120105#define tnum_cyc        ((uint_t)(tmax_cycid - TMIN_CYCID + 1))
     
    122107
    123108/*
    124  *  周期通知IDから周期通知管理ブロックを取り出すためのマクロ
     109 *  周期通知IDから周期通知管理ブロックを取り出すためのマクロ
    125110 */
    126111#define INDEX_CYC(cycid)        ((uint_t)((cycid) - TMIN_CYCID))
     
    130115
    131116/*
    132  *  使用していない周期通知管理ブロックのリスト
     117 *  使用していない周期通知管理ブロックのリスト
    133118 *
    134  *  周期通知管理ブロックのå
    135 ˆé ­ã«ã¯ã‚­ãƒ¥ãƒ¼ã«ã¤ãªããŸã‚ã®é ˜åŸŸãŒãªã„ため,
    136  *  タイムイベントブロック(tmevtb)の領域を用いる.
     119 *  周期通知管理ブロックの先頭にはキューにつなぐための領域がないため,
     120 *  タイムイベントブロック(tmevtb)の領域を用いる.
    137121 */
    138122QUEUE   free_cyccb;
    139123
    140124/*
    141  *  周期通知機能の初期化
     125 *  周期通知機能の初期化
    142126 */
    143127void
     
    155139                if ((p_cyccb->p_cycinib->cycatr & TA_STA) != 0U) {
    156140                        /*
    157                          *  初回の起動のためのタイムイベントを登録する[ASPD1035ï¼½
    158                          *  ï¼»ASPD1062].
     141                         *  初回の起動のためのタイムイベントを登録する[ASPD1035]
     142                         *  [ASPD1062].
    159143                         */
    160144                        p_cyccb->cycsta = true;
     
    181165
    182166/*
    183  *  周期通知の生成
     167 *  周期通知の生成
    184168 */
    185169#ifdef TOPPERS_acre_cyc
     
    254238
    255239/*
    256  *  周期通知の削除
     240 *  周期通知の削除
    257241 */
    258242#ifdef TOPPERS_del_cyc
     
    298282
    299283/*
    300  *  周期通知の動作開始
     284 *  周期通知の動作開始
    301285 */
    302286#ifdef TOPPERS_sta_cyc
     
    325309                }
    326310                /*
    327                  *  初回の起動のためのタイムイベントを登録する[ASPD1036].
     311                 *  初回の起動のためのタイムイベントを登録する[ASPD1036].
    328312                 */
    329313                tmevtb_enqueue(&(p_cyccb->tmevtb), p_cyccb->p_cycinib->cycphs);
     
    340324
    341325/*
    342  *  周期通知の動作停止
     326 *  周期通知の動作停止
    343327 */
    344328#ifdef TOPPERS_stp_cyc
     
    376360
    377361/*
    378  *  周期通知の状æ
    379 ‹å‚ç
    380 §
     362 *  周期通知の状態参照
    381363 */
    382364#ifdef TOPPERS_ref_cyc
     
    417399
    418400/*
    419  *  周期通知起動ルーチン
     401 *  周期通知起動ルーチン
    420402 */
    421403#ifdef TOPPERS_cyccal
     
    425407{
    426408        /*
    427          *  次回の起動のためのタイムイベントを登録する[ASPD1037].
     409         *  次回の起動のためのタイムイベントを登録する[ASPD1037].
    428410         */
    429         p_cyccb->tmevtb.evttim += p_cyccb->p_cycinib->cyctim;   /*ï¼»ASPD1038ï¼½*/
     411        p_cyccb->tmevtb.evttim += p_cyccb->p_cycinib->cyctim;   /*[ASPD1038]*/
    430412        tmevtb_register(&(p_cyccb->tmevtb));
    431413
    432414        /*
    433          *  通知ハンドラを,CPUロック解除状æ
    434 ‹ã§å‘¼ã³å‡ºã™ï¼Ž
     415         *  通知ハンドラを,CPUロック解除状態で呼び出す.
    435416         */
    436417        unlock_cpu();
  • asp3_gr_sakura/trunk/kernel/cyclic.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              周期通知機能
     44 *              周期通知機能
    6045 */
    6146
     
    6853
    6954/*
    70  *  周期通知初期化ブロック
     55 *  周期通知初期化ブロック
    7156 */
    7257typedef struct cyclic_handler_initialization_block {
    73         ATR                     cycatr;                 /* 周期通知属性 */
    74         intptr_t        exinf;                  /* 通知ハンドラの拡張æƒ
    75 å ± */
    76         NFYHDR          nfyhdr;                 /* 通知ハンドラの起動番地 */
    77         RELTIM          cyctim;                 /* 周期通知の起動周期 */
    78         RELTIM          cycphs;                 /* 周期通知の起動位相 */
     58        ATR                     cycatr;                 /* 周期通知属性 */
     59        intptr_t        exinf;                  /* 通知ハンドラの拡張情報 */
     60        NFYHDR          nfyhdr;                 /* 通知ハンドラの起動番地 */
     61        RELTIM          cyctim;                 /* 周期通知の起動周期 */
     62        RELTIM          cycphs;                 /* 周期通知の起動位相 */
    7963} CYCINIB;
    8064
    8165/*
    82  *  周期通知管理ブロック
     66 *  周期通知管理ブロック
    8367 *
    84  *      次に周期通知を起動する時刻は,タイムイベントブロック(tmevtb)中の
    85  *      タイムイベントの発生時刻(evttim)で保持する.
     68 *      次に周期通知を起動する時刻は,タイムイベントブロック(tmevtb)中の
     69 *      タイムイベントの発生時刻(evttim)で保持する.
    8670 */
    8771typedef struct cyclic_handler_control_block {
    88         const CYCINIB *p_cycinib;       /* 初期化ブロックへのポインタ */
    89         bool_t          cycsta;                 /* 周期通知の動作状æ
    90 ‹ */
    91         TMEVTB          tmevtb;                 /* タイムイベントブロック */
     72        const CYCINIB *p_cycinib;       /* 初期化ブロックへのポインタ */
     73        bool_t          cycsta;                 /* 周期通知の動作状態 */
     74        TMEVTB          tmevtb;                 /* タイムイベントブロック */
    9275} CYCCB;
    9376
    9477/*
    95  *  使用していない周期通知管理ブロックのリスト
     78 *  使用していない周期通知管理ブロックのリスト
    9679 */
    9780extern QUEUE    free_cyccb;
    9881
    9982/*
    100  *  周期通知IDの最大値(kernel_cfg.c)
     83 *  周期通知IDの最大値(kernel_cfg.c)
    10184 */
    10285extern const ID tmax_cycid;
     
    10487
    10588/*
    106  *  周期通知初期化ブロックのエリア(kernel_cfg.c)
     89 *  周期通知初期化ブロックのエリア(kernel_cfg.c)
    10790 */
    10891extern const CYCINIB    cycinib_table[];
     
    11093
    11194/*
    112  *  周期通知の通知方法の格納エリア(kernel_cfg.c)
     95 *  周期通知の通知方法の格納エリア(kernel_cfg.c)
    11396 */
    11497extern T_NFYINFO        acyc_nfyinfo_table[];
    11598
    11699/*
    117  *  周期通知管理ブロックのエリア(kernel_cfg.c)
     100 *  周期通知管理ブロックのエリア(kernel_cfg.c)
    118101 */
    119102extern CYCCB    cyccb_table[];
    120103
    121104/*
    122  *  周期通知管理ブロックから周期通知IDを取り出すためのマクロ
     105 *  周期通知管理ブロックから周期通知IDを取り出すためのマクロ
    123106 */
    124107#define CYCID(p_cyccb)  ((ID)(((p_cyccb) - cyccb_table) + TMIN_CYCID))
    125108
    126109/*
    127  *  周期通知機能の初期化
     110 *  周期通知機能の初期化
    128111 */
    129112extern void     initialize_cyclic(void);
    130113
    131114/*
    132  *  周期通知起動ルーチン
     115 *  周期通知起動ルーチン
    133116 */
    134117extern void     call_cyclic(CYCCB *p_cyccb);
  • asp3_gr_sakura/trunk/kernel/cyclic.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010#
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     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#       免責すること.
    4733#
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
    5439#
    55 #   $Id: cyclic.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     40#   $Id$
    5641#
    5742
    5843#
    59 #               å‘¨æœŸé€šçŸ¥æ©Ÿèƒ½ã®ç”Ÿæˆã‚¹ã‚¯ãƒªãƒ—ト
     44#               周期通知機能の生成スクリプト
    6045#
    6146
     
    6752
    6853  def prepare(key, params)
    69     # cycatrが無効の場合(E_RSATR)[NGKI2383ï¼½
    70     #(TA_STA以外のビットがセットされている場合)
     54    # cycatrが無効の場合(E_RSATR)[NGKI2383]
     55    #(TA_STA以外のビットがセットされている場合)
    7156    if (params[:cycatr] & ~($TA_STA)) != 0
    7257      error_illegal_id("E_RSATR", params, :cycatr, :cycid)
    7358    end
    7459
    75     # (0 < cyctim && cyctim <= TMAX_RELTIM)でない場合(E_PAR)[NGKI2397ï¼½
     60    # (0 < cyctim && cyctim <= TMAX_RELTIM)でない場合(E_PAR)[NGKI2397]
    7661    if !(0 < params[:cyctim] && params[:cyctim] <= $TMAX_RELTIM)
    7762      error_illegal_id("E_PAR", params, :cyctim, :cycid)
    7863    end
    7964
    80     # (0 <= cycphs && cycphs <= TMAX_RELTIM)でない場合(E_PAR)[NGKI2399ï¼½
     65    # (0 <= cycphs && cycphs <= TMAX_RELTIM)でない場合(E_PAR)[NGKI2399]
    8166    if !(0 <= params[:cycphs] && params[:cycphs] <= $TMAX_RELTIM)
    8267      error_illegal_id("E_PAR", params, :cycphs, :cycid)
    8368    end
    8469
    85     # 通知æƒ
    86 å ±ã®å‡¦ç†
     70    # 通知情報の処理
    8771    params[:nfyhdr] = generateNotifyHandler(key, params, :cycid)
    8872  end
     
    9579
    9680#
    97 #  周期通知に関するæƒ
    98 å ±ã®ç”Ÿæˆ
     81#  周期通知に関する情報の生成
    9982#
    10083$kernelCfgC.comment_header("Cyclic Notification Functions")
  • asp3_gr_sakura/trunk/kernel/dataqueue.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              データキュー機能
     44 *              データキュー機能
    6045 */
    6146
     
    6752
    6853/*
    69  *  トレースログマクロのデフォルト定義
     54 *  トレースログマクロのデフォルト定義
    7055 */
    7156#ifndef LOG_ACRE_DTQ_ENTER
     
    158143
    159144/*
    160  *  データキューの数
     145 *  データキューの数
    161146 */
    162147#define tnum_dtq        ((uint_t)(tmax_dtqid - TMIN_DTQID + 1))
     
    164149
    165150/*
    166  *  データキューIDからデータキュー管理ブロックを取り出すためのマクロ
     151 *  データキューIDからデータキュー管理ブロックを取り出すためのマクロ
    167152 */
    168153#define INDEX_DTQ(dtqid)        ((uint_t)((dtqid) - TMIN_DTQID))
     
    172157
    173158/*
    174  *  使用していないデータキュー管理ブロックのリスト
     159 *  使用していないデータキュー管理ブロックのリスト
    175160 */
    176161QUEUE   free_dtqcb;
    177162
    178163/*
    179  *  データキュー機能の初期化
     164 *  データキュー機能の初期化
    180165 */
    181166void
     
    208193
    209194/*
    210  *  データキュー管理領域へのデータの格納
     195 *  データキュー管理領域へのデータの格納
    211196 */
    212197#ifdef TOPPERS_dtqenq
     
    226211
    227212/*
    228  *  データキュー管理領域へのデータの強制格納
     213 *  データキュー管理領域へのデータの強制格納
    229214 */
    230215#ifdef TOPPERS_dtqfenq
     
    249234
    250235/*
    251  *  データキュー管理領域からのデータの取出し
     236 *  データキュー管理領域からのデータの取出し
    252237 */
    253238#ifdef TOPPERS_dtqdeq
     
    267252
    268253/*
    269  *  データキューへのデータ送信
     254 *  データキューへのデータ送信
    270255 */
    271256#ifdef TOPPERS_dtqsnd
     
    294279
    295280/*
    296  *  データキューへのデータ強制送信
     281 *  データキューへのデータ強制送信
    297282 */
    298283#ifdef TOPPERS_dtqfsnd
     
    316301
    317302/*
    318  *  データキューからのデータ受信
     303 *  データキューからのデータ受信
    319304 */
    320305#ifdef TOPPERS_dtqrcv
     
    350335
    351336/*
    352  *  データキューの生成
     337 *  データキューの生成
    353338 */
    354339#ifdef TOPPERS_acre_dtq
     
    410395
    411396/*
    412  *  データキューの削除
     397 *  データキューの削除
    413398 */
    414399#ifdef TOPPERS_del_dtq
     
    457442
    458443/*
    459  *  データキューへの送信
     444 *  データキューへの送信
    460445 */
    461446#ifdef TOPPERS_snd_dtq
     
    503488
    504489/*
    505  *  データキューへの送信(ポーリング)
     490 *  データキューへの送信(ポーリング)
    506491 */
    507492#ifdef TOPPERS_psnd_dtq
     
    546531
    547532/*
    548  *  データキューへの送信(タイムアウトあり)
     533 *  データキューへの送信(タイムアウトあり)
    549534 */
    550535#ifdef TOPPERS_tsnd_dtq
     
    598583
    599584/*
    600  *  データキューへの強制送信
     585 *  データキューへの強制送信
    601586 */
    602587#ifdef TOPPERS_fsnd_dtq
     
    642627
    643628/*
    644  *  データキューからの受信
     629 *  データキューからの受信
    645630 */
    646631#ifdef TOPPERS_rcv_dtq
     
    693678
    694679/*
    695  *  データキューからの受信(ポーリング)
     680 *  データキューからの受信(ポーリング)
    696681 */
    697682#ifdef TOPPERS_prcv_dtq
     
    731716
    732717/*
    733  *  データキューからの受信(タイムアウトあり)
     718 *  データキューからの受信(タイムアウトあり)
    734719 */
    735720#ifdef TOPPERS_trcv_dtq
     
    787772
    788773/*
    789  *  データキューの再初期化
     774 *  データキューの再初期化
    790775 */
    791776#ifdef TOPPERS_ini_dtq
     
    827812
    828813/*
    829  *  データキューの状æ
    830 ‹å‚ç
    831 §
     814 *  データキューの状態参照
    832815 */
    833816#ifdef TOPPERS_ref_dtq
  • asp3_gr_sakura/trunk/kernel/dataqueue.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              データキュー機能
     44 *              データキュー機能
    6045 */
    6146
     
    6853
    6954/*
    70  *  データ管理ブロック
     55 *  データ管理ブロック
    7156 */
    7257typedef struct data_management_block {
    73         intptr_t        data;                   /* データ本体 */
     58        intptr_t        data;                   /* データ本体 */
    7459} DTQMB;
    7560
    7661/*
    77  *  データキュー初期化ブロック
     62 *  データキュー初期化ブロック
    7863 *
    79  *  この構造体は,同期・通信オブジェクトの初期化ブロックのå
    80 ±é€šéƒ¨åˆ†
    81  *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
    82  *  最初のフィールドがå
    83 ±é€šã«ãªã£ã¦ã„る.
     64 *  この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分
     65 *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
     66 *  最初のフィールドが共通になっている.
    8467 */
    8568typedef struct dataqueue_initialization_block {
    86         ATR                     dtqatr;                 /* データキュー属性 */
    87         uint_t          dtqcnt;                 /* データキューの容量 */
    88         DTQMB           *p_dtqmb;               /* データキュー管理領域のå
    89 ˆé ­ç•ªåœ° */
     69        ATR                     dtqatr;                 /* データキュー属性 */
     70        uint_t          dtqcnt;                 /* データキューの容量 */
     71        DTQMB           *p_dtqmb;               /* データキュー管理領域の先頭番地 */
    9072} DTQINIB;
    9173
    9274/*
    93  *  データキュー管理ブロック
     75 *  データキュー管理ブロック
    9476 *
    95  *  この構造体は,同期・通信オブジェクトの管理ブロックのå
    96 ±é€šéƒ¨åˆ†ï¼ˆWOBJCB)
    97  *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
    98  *  フィールドがå
    99 ±é€šã«ãªã£ã¦ã„る.
     77 *  この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB)
     78 *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
     79 *  フィールドが共通になっている.
    10080 */
    10181typedef struct dataqueue_control_block {
    102         QUEUE           swait_queue;    /* データキュー送信å¾
    103 ã¡ã‚­ãƒ¥ãƒ¼ */
    104         const DTQINIB *p_dtqinib;       /* 初期化ブロックへのポインタ */
    105         QUEUE           rwait_queue;    /* データキュー受信å¾
    106 ã¡ã‚­ãƒ¥ãƒ¼ */
    107         uint_t          count;                  /* データキュー中のデータの数 */
    108         uint_t          head;                   /* 最初のデータの格納場所 */
    109         uint_t          tail;                   /* 最後のデータの格納場所の次 */
     82        QUEUE           swait_queue;    /* データキュー送信待ちキュー */
     83        const DTQINIB *p_dtqinib;       /* 初期化ブロックへのポインタ */
     84        QUEUE           rwait_queue;    /* データキュー受信待ちキュー */
     85        uint_t          count;                  /* データキュー中のデータの数 */
     86        uint_t          head;                   /* 最初のデータの格納場所 */
     87        uint_t          tail;                   /* 最後のデータの格納場所の次 */
    11088} DTQCB;
    11189
    11290/*
    113  *  データキューå¾
    114 ã¡æƒ
    115 å ±ãƒ–ロックの定義
     91 *  データキュー待ち情報ブロックの定義
    11692 *
    117  *  この構造体は,同期・通信オブジェクトのå¾
    118 ã¡æƒ
    119 å ±ãƒ–ロックのå
    120 ±é€šéƒ¨åˆ†
    121  *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
    122  *  最初の2つのフィールドがå
    123 ±é€šã«ãªã£ã¦ã„る.
     93 *  この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分
     94 *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
     95 *  最初の2つのフィールドが共通になっている.
    12496 */
    12597typedef struct dataqueue_send_waiting_information {
    126         WINFO           winfo;                  /* 標準のå¾
    127 ã¡æƒ
    128 å ±ãƒ–ロック */
    129         DTQCB           *p_dtqcb;               /* å¾
    130 ã£ã¦ã„るデータキューの管理ブロック */
    131         intptr_t        data;                   /* 送信データ */
     98        WINFO           winfo;                  /* 標準の待ち情報ブロック */
     99        DTQCB           *p_dtqcb;               /* 待っているデータキューの管理ブロック */
     100        intptr_t        data;                   /* 送信データ */
    132101} WINFO_SDTQ;
    133102
    134103typedef struct dataqueue_receive_waiting_information {
    135         WINFO           winfo;                  /* 標準のå¾
    136 ã¡æƒ
    137 å ±ãƒ–ロック */
    138         DTQCB           *p_dtqcb;               /* å¾
    139 ã£ã¦ã„るデータキューの管理ブロック */
    140         intptr_t        data;                   /* 受信データ */
     104        WINFO           winfo;                  /* 標準の待ち情報ブロック */
     105        DTQCB           *p_dtqcb;               /* 待っているデータキューの管理ブロック */
     106        intptr_t        data;                   /* 受信データ */
    141107} WINFO_RDTQ;
    142108
    143109/*
    144  *  使用していないデータキュー管理ブロックのリスト
     110 *  使用していないデータキュー管理ブロックのリスト
    145111 */
    146112extern QUEUE    free_dtqcb;
    147113
    148114/*
    149  *  データキューIDの最大値(kernel_cfg.c)
     115 *  データキューIDの最大値(kernel_cfg.c)
    150116 */
    151117extern const ID tmax_dtqid;
     
    153119
    154120/*
    155  *  データキュー初期化ブロックのエリア(kernel_cfg.c)
     121 *  データキュー初期化ブロックのエリア(kernel_cfg.c)
    156122 */
    157123extern const DTQINIB    dtqinib_table[];
     
    159125
    160126/*
    161  *  データキュー管理ブロックのエリア(kernel_cfg.c)
     127 *  データキュー管理ブロックのエリア(kernel_cfg.c)
    162128 */
    163129extern DTQCB    dtqcb_table[];
    164130
    165131/*
    166  *  データキュー管理ブロックからデータキューIDを取り出すためのマクロ
     132 *  データキュー管理ブロックからデータキューIDを取り出すためのマクロ
    167133 */
    168134#define DTQID(p_dtqcb)  ((ID)(((p_dtqcb) - dtqcb_table) + TMIN_DTQID))
    169135
    170136/*
    171  *  データキュー機能の初期化
     137 *  データキュー機能の初期化
    172138 */
    173139extern void     initialize_dataqueue(void);
    174140
    175141/*
    176  *  データキュー管理領域へのデータの格納
     142 *  データキュー管理領域へのデータの格納
    177143 */
    178144extern void     enqueue_data(DTQCB *p_dtqcb, intptr_t data);
    179145
    180146/*
    181  *  データキュー管理領域へのデータの強制格納
     147 *  データキュー管理領域へのデータの強制格納
    182148 */
    183149extern void     force_enqueue_data(DTQCB *p_dtqcb, intptr_t data);
    184150
    185151/*
    186  *  データキュー管理領域からのデータの取出し
     152 *  データキュー管理領域からのデータの取出し
    187153 */
    188154extern void     dequeue_data(DTQCB *p_dtqcb, intptr_t *p_data);
    189155
    190156/*
    191  *  データキューへのデータ送信
     157 *  データキューへのデータ送信
    192158 */
    193159extern bool_t   send_data(DTQCB *p_dtqcb, intptr_t data);
    194160
    195161/*
    196  *  データキューへのデータ強制送信
     162 *  データキューへのデータ強制送信
    197163 */
    198164extern void     force_send_data(DTQCB *p_dtqcb, intptr_t data);
    199165
    200166/*
    201  *  データキューからのデータ受信
     167 *  データキューからのデータ受信
    202168 */
    203169extern bool_t   receive_data(DTQCB *p_dtqcb, intptr_t *p_data);
  • asp3_gr_sakura/trunk/kernel/dataqueue.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010#
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     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#       免責すること.
    4733#
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
    5439#
    55 #   $Id: dataqueue.trb 668 2016-03-03 13:57:53Z ertl-hiro $
     40#   $Id$
    5641#
    5742
    5843#
    59 #               ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼æ©Ÿèƒ½ã®ç”Ÿæˆã‚¹ã‚¯ãƒªãƒ—ト
     44#               データキュー機能の生成スクリプト
    6045#
    6146
     
    6651
    6752  def prepare(key, params)
    68     # パラメータが省略された時のデフォルト値の設定
     53    # パラメータが省略された時のデフォルト値の設定
    6954    params[:dtqmb] ||= "NULL"
    7055
    71     # dtqatrが無効の場合(E_RSATR)[NGKI1669ï¼½
    72     #(TA_TPRI以外のビットがセットされている場合)
     56    # dtqatrが無効の場合(E_RSATR)[NGKI1669]
     57    #(TA_TPRI以外のビットがセットされている場合)
    7358    if (params[:dtqatr] & ~($TA_TPRI)) != 0
    7459      error_illegal_id("E_RSATR", params, :dtqatr, :dtqid)
    7560    end
    7661
    77     # dtqmbがNULLでない場合(E_NOSPT)[ASPS0132ï¼½
     62    # dtqmbがNULLでない場合(E_NOSPT)[ASPS0132]
    7863    if params[:dtqmb] != "NULL"
    7964      error_illegal_id("E_NOSPT", params, :dtqmb, :dtqid)
    8065    end
    8166
    82     # データキュー管理領域
     67    # データキュー管理領域
    8368    if params[:dtqcnt] > 0
    8469      dtqmbName = "_kernel_dtqmb_#{params[:dtqid]}"
     
    9782
    9883#
    99 #  データキューに関するæƒ
    100 å ±ã®ç”Ÿæˆ
     84#  データキューに関する情報の生成
    10185#
    10286$kernelCfgC.comment_header("Dataqueue Functions")
  • asp3_gr_sakura/trunk/kernel/eventflag.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              イベントフラグ機能
     44 *              イベントフラグ機能
    6045 */
    6146
     
    6752
    6853/*
    69  *  トレースログマクロのデフォルト定義
     54 *  トレースログマクロのデフォルト定義
    7055 */
    7156#ifndef LOG_ACRE_FLG_ENTER
     
    142127
    143128/*
    144  *  イベントフラグの数
     129 *  イベントフラグの数
    145130 */
    146131#define tnum_flg        ((uint_t)(tmax_flgid - TMIN_FLGID + 1))
     
    148133
    149134/*
    150  *  イベントフラグIDからイベントフラグ管理ブロックを取り出すためのマクロ
     135 *  イベントフラグIDからイベントフラグ管理ブロックを取り出すためのマクロ
    151136 */
    152137#define INDEX_FLG(flgid)        ((uint_t)((flgid) - TMIN_FLGID))
     
    156141
    157142/*
    158  *  使用していないイベントフラグ管理ブロックのリスト
     143 *  使用していないイベントフラグ管理ブロックのリスト
    159144 */
    160145QUEUE   free_flgcb;
    161146
    162147/*
    163  *  イベントフラグ機能の初期化
     148 *  イベントフラグ機能の初期化
    164149 */
    165150void
     
    189174
    190175/*
    191  *  イベントフラグå¾
    192 ã¡è§£é™¤æ¡ä»¶ã®ãƒã‚§ãƒƒã‚¯
     176 *  イベントフラグ待ち解除条件のチェック
    193177 */
    194178#ifdef TOPPERS_flgcnd
     
    211195
    212196/*
    213  *  イベントフラグの生成
     197 *  イベントフラグの生成
    214198 *
    215  *  pk_cflg->iflgptnは,エラーチェックをせず,一度しか参ç
    216 §ã—ないため,
    217  *  ローカル変数にコピーするå¿
    218 è¦ãŒãªã„(途中で書き換わっても支障がな
    219  *  い).
     199 *  pk_cflg->iflgptnは,エラーチェックをせず,一度しか参照しないため,
     200 *  ローカル変数にコピーする必要がない(途中で書き換わっても支障がな
     201 *  い).
    220202 */
    221203#ifdef TOPPERS_acre_flg
     
    260242
    261243/*
    262  *  イベントフラグの削除
     244 *  イベントフラグの削除
    263245 */
    264246#ifdef TOPPERS_del_flg
     
    303285
    304286/*
    305  *  イベントフラグのセット
     287 *  イベントフラグのセット
    306288 */
    307289#ifdef TOPPERS_set_flg
     
    361343
    362344/*
    363  *  イベントフラグのクリア
     345 *  イベントフラグのクリア
    364346 */
    365347#ifdef TOPPERS_clr_flg
     
    394376
    395377/*
    396  *  イベントフラグå¾
    397 ã¡
     378 *  イベントフラグ待ち
    398379 */
    399380#ifdef TOPPERS_wai_flg
     
    448429
    449430/*
    450  *  イベントフラグå¾
    451 ã¡ï¼ˆãƒãƒ¼ãƒªãƒ³ã‚°ï¼‰
     431 *  イベントフラグ待ち(ポーリング)
    452432 */
    453433#ifdef TOPPERS_pol_flg
     
    490470
    491471/*
    492  *  イベントフラグå¾
    493 ã¡ï¼ˆã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã‚り)
     472 *  イベントフラグ待ち(タイムアウトあり)
    494473 */
    495474#ifdef TOPPERS_twai_flg
     
    550529
    551530/*
    552  *  イベントフラグの再初期化
     531 *  イベントフラグの再初期化
    553532 */
    554533#ifdef TOPPERS_ini_flg
     
    587566
    588567/*
    589  *  イベントフラグの状æ
    590 ‹å‚ç
    591 §
     568 *  イベントフラグの状態参照
    592569 */
    593570#ifdef TOPPERS_ref_flg
  • asp3_gr_sakura/trunk/kernel/eventflag.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              イベントフラグ機能
     44 *              イベントフラグ機能
    6045 */
    6146
     
    6853
    6954/*
    70  *  イベントフラグ初期化ブロック
     55 *  イベントフラグ初期化ブロック
    7156 *
    72  *  この構造体は,同期・通信オブジェクトの初期化ブロックのå
    73 ±é€šéƒ¨åˆ†
    74  *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
    75  *  最初のフィールドがå
    76 ±é€šã«ãªã£ã¦ã„る.
     57 *  この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分
     58 *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
     59 *  最初のフィールドが共通になっている.
    7760 */
    7861typedef struct eventflag_initialization_block {
    79         ATR                     flgatr;                 /* イベントフラグ属性 */
    80         FLGPTN          iflgptn;                /* イベントフラグのビットパターンの初期値 */
     62        ATR                     flgatr;                 /* イベントフラグ属性 */
     63        FLGPTN          iflgptn;                /* イベントフラグのビットパターンの初期値 */
    8164} FLGINIB;
    8265
    8366/*
    84  *  イベントフラグ管理ブロック
     67 *  イベントフラグ管理ブロック
    8568 *
    86  *  この構造体は,同期・通信オブジェクトの管理ブロックのå
    87 ±é€šéƒ¨åˆ†ï¼ˆWOBJCB)
    88  *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
    89  *  フィールドがå
    90 ±é€šã«ãªã£ã¦ã„る.
     69 *  この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB)
     70 *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
     71 *  フィールドが共通になっている.
    9172 */
    9273typedef struct eventflag_control_block {
    93         QUEUE           wait_queue;             /* イベントフラグå¾
    94 ã¡ã‚­ãƒ¥ãƒ¼ */
    95         const FLGINIB *p_flginib;       /* 初期化ブロックへのポインタ */
    96         FLGPTN          flgptn;                 /* イベントフラグ現在パターン */
     74        QUEUE           wait_queue;             /* イベントフラグ待ちキュー */
     75        const FLGINIB *p_flginib;       /* 初期化ブロックへのポインタ */
     76        FLGPTN          flgptn;                 /* イベントフラグ現在パターン */
    9777} FLGCB;
    9878
    9979/*
    100  *  イベントフラグå¾
    101 ã¡æƒ
    102 å ±ãƒ–ロックの定義
     80 *  イベントフラグ待ち情報ブロックの定義
    10381 *
    104  *  この構造体は,同期・通信オブジェクトのå¾
    105 ã¡æƒ
    106 å ±ãƒ–ロックのå
    107 ±é€šéƒ¨åˆ†
    108  *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
    109  *  最初の2つのフィールドがå
    110 ±é€šã«ãªã£ã¦ã„る.
     82 *  この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分
     83 *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
     84 *  最初の2つのフィールドが共通になっている.
    11185 *
    112  *  waiptnには,å¾
    113 ã¡çŠ¶æ
    114 ‹ã®é–“はå¾
    115 ã¡ãƒ‘ターンを,å¾
    116 ã¡è§£é™¤ã•ã‚ŒãŸå¾Œã¯å¾
    117 ã¡è§£
    118  *  除時のパターンをå
    119 ¥ã‚Œã‚‹ï¼ˆ1つのフィールドを2つの目的にå
    120 ¼ç”¨ã—ている).
     86 *  waiptnには,待ち状態の間は待ちパターンを,待ち解除された後は待ち解
     87 *  除時のパターンを入れる(1つのフィールドを2つの目的に兼用している).
    12188 */
    12289typedef struct eventflag_waiting_information {
    123         WINFO           winfo;                  /* 標準のå¾
    124 ã¡æƒ
    125 å ±ãƒ–ロック */
    126         FLGCB           *p_flgcb;               /* å¾
    127 ã£ã¦ã„るイベントフラグの管理ブロック */
    128         FLGPTN          waiptn;                 /* å¾
    129 ã¡ãƒ‘ターン/å¾
    130 ã¡è§£é™¤æ™‚のパターン */
    131         MODE            wfmode;                 /* å¾
    132 ã¡ãƒ¢ãƒ¼ãƒ‰ */
     90        WINFO           winfo;                  /* 標準の待ち情報ブロック */
     91        FLGCB           *p_flgcb;               /* 待っているイベントフラグの管理ブロック */
     92        FLGPTN          waiptn;                 /* 待ちパターン/待ち解除時のパターン */
     93        MODE            wfmode;                 /* 待ちモード */
    13394} WINFO_FLG;
    13495
    13596/*
    136  *  使用していないイベントフラグ管理ブロックのリスト
     97 *  使用していないイベントフラグ管理ブロックのリスト
    13798 */
    13899extern QUEUE    free_flgcb;
    139100
    140101/*
    141  *  イベントフラグIDの最大値(kernel_cfg.c)
     102 *  イベントフラグIDの最大値(kernel_cfg.c)
    142103 */
    143104extern const ID tmax_flgid;
     
    145106
    146107/*
    147  *  イベントフラグ初期化ブロックのエリア(kernel_cfg.c)
     108 *  イベントフラグ初期化ブロックのエリア(kernel_cfg.c)
    148109 */
    149110extern const FLGINIB    flginib_table[];
     
    151112
    152113/*
    153  *  イベントフラグ管理ブロックのエリア(kernel_cfg.c)
     114 *  イベントフラグ管理ブロックのエリア(kernel_cfg.c)
    154115 */
    155116extern FLGCB    flgcb_table[];
    156117
    157118/*
    158  *  イベントフラグ管理ブロックからイベントフラグIDを取り出すためのマクロ
     119 *  イベントフラグ管理ブロックからイベントフラグIDを取り出すためのマクロ
    159120 */
    160121#define FLGID(p_flgcb)  ((ID)(((p_flgcb) - flgcb_table) + TMIN_FLGID))
    161122
    162123/*
    163  *  イベントフラグ機能の初期化
     124 *  イベントフラグ機能の初期化
    164125 */
    165126extern void     initialize_eventflag(void);
    166127
    167128/*
    168  *  イベントフラグå¾
    169 ã¡è§£é™¤æ¡ä»¶ã®ãƒã‚§ãƒƒã‚¯
     129 *  イベントフラグ待ち解除条件のチェック
    170130 */
    171131extern bool_t   check_flg_cond(FLGCB *p_flgcb, FLGPTN waiptn,
  • asp3_gr_sakura/trunk/kernel/eventflag.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010#
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     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#       免責すること.
    4733#
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
    5439#
    55 #   $Id: eventflag.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     40#   $Id$
    5641#
    5742
    5843#
    59 #               ã‚¤ãƒ™ãƒ³ãƒˆãƒ•ãƒ©ã‚°æ©Ÿèƒ½ã®ç”Ÿæˆã‚¹ã‚¯ãƒªãƒ—ト
     44#               イベントフラグ機能の生成スクリプト
    6045#
    6146
     
    6651
    6752  def prepare(key, params)
    68     # flgatrが無効の場合(E_RSATR)[NGKI1562ï¼½
    69     #(TA_TPRI,TA_WMUL,TA_CLR以外のビットがセットされている場合)
     53    # flgatrが無効の場合(E_RSATR)[NGKI1562]
     54    #(TA_TPRI,TA_WMUL,TA_CLR以外のビットがセットされている場合)
    7055    if (params[:flgatr] & ~($TA_TPRI|$TA_WMUL|$TA_CLR)) != 0
    7156      error_illegal_id("E_RSATR", params, :flgatr, :flgid)
    7257    end
    7358
    74     # iflgptnがFLGPTNに格納できない場合(E_PAR)[NGKI3275ï¼½
     59    # iflgptnがFLGPTNに格納できない場合(E_PAR)[NGKI3275]
    7560    if (params[:iflgptn] & ~((1 << $TBIT_FLGPTN) - 1)) != 0
    7661      error_wrong_id("E_PAR", params, :iflgptn, :flgid, "too large")
     
    8469
    8570#
    86 #  イベントフラグに関するæƒ
    87 å ±ã®ç”Ÿæˆ
     71#  イベントフラグに関する情報の生成
    8872#
    8973$kernelCfgC.comment_header("Eventflag Functions")
  • asp3_gr_sakura/trunk/kernel/exception.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              CPU例外管理機能
     44 *              CPU例外管理機能
    6045 */
    6146
     
    6550
    6651/*
    67  *  トレースログマクロのデフォルト定義
     52 *  トレースログマクロのデフォルト定義
    6853 */
    6954#ifndef LOG_XSNS_DPN_ENTER
     
    7661
    7762/*
    78  *  CPU例外ハンドラ管理機能の初期化
     63 *  CPU例外ハンドラ管理機能の初期化
    7964 */
    8065#ifdef TOPPERS_excini
     
    9782
    9883/*
    99  *  CPU例外の発生したコンテキストの参ç
    100 §
     84 *  CPU例外の発生したコンテキストの参照
    10185 */
    10286
    10387/*
    104  *  CPU例外発生時のディスパッチ保留状æ
    105 ‹ã®å‚ç
    106 §
     88 *  CPU例外発生時のディスパッチ保留状態の参照
    10789 *
    108  *  CPU例外ハンドラ中でenadspが変化することはないため,CPU例外が発生し
    109  *  た時のenadspを保存しておくå¿
    110 è¦ã¯ãªã„.
     90 *  CPU例外ハンドラ中でenadspが変化することはないため,CPU例外が発生し
     91 *  た時のenadspを保存しておく必要はない.
    11192 */
    11293#ifdef TOPPERS_xsns_dpn
  • asp3_gr_sakura/trunk/kernel/exception.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              CPU例外管理機能
     44 *              CPU例外管理機能
    6045 */
    6146
     
    6853
    6954/*
    70  *  CPU例外ハンドラ初期化ブロック
     55 *  CPU例外ハンドラ初期化ブロック
    7156 */
    7257typedef struct cpu_exception_handler_initialization_block {
    73         EXCNO           excno;                  /* CPU例外ハンドラ番号 */
    74         ATR                     excatr;                 /* CPU例外ハンドラ属性 */
    75         FP                      exc_entry;              /* CPU例外ハンドラの出å
    76 ¥å£å‡¦ç†ã®ç•ªåœ° */
     58        EXCNO           excno;                  /* CPU例外ハンドラ番号 */
     59        ATR                     excatr;                 /* CPU例外ハンドラ属性 */
     60        FP                      exc_entry;              /* CPU例外ハンドラの出入口処理の番地 */
    7761} EXCINIB;
    7862
    7963/*
    80  *  定義するCPU例外ハンドラ番号の数(kernel_cfg.c)
     64 *  定義するCPU例外ハンドラ番号の数(kernel_cfg.c)
    8165 */
    8266extern const uint_t     tnum_def_excno;
    8367
    8468/*
    85  *  CPU例外ハンドラ初期化ブロックのエリア(kernel_cfg.c)
     69 *  CPU例外ハンドラ初期化ブロックのエリア(kernel_cfg.c)
    8670 */
    8771extern const EXCINIB    excinib_table[];
     
    9074
    9175/*
    92  *  CPU例外ハンドラ管理機能の初期化
     76 *  CPU例外ハンドラ管理機能の初期化
    9377 */
    9478extern void     initialize_exception(void);
  • asp3_gr_sakura/trunk/kernel/exception.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010#
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     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#       免責すること.
    4733#
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
    5439#
    55 #   $Id: exception.trb 663 2016-02-27 04:45:50Z ertl-hiro $
     40#   $Id$
    5641#
    5742
    5843#
    59 #               CPU例外管理機能の生成スクリプト
     44#               CPU例外管理機能の生成スクリプト
    6045#
    6146
    6247#
    63 #  kernel_cfg.cの生成
     48#  kernel_cfg.cの生成
    6449#
    6550$kernelCfgC.comment_header("CPU Exception Management Functions")
    6651
    6752#
    68 #  CPU例外ハンドラに関するエラーチェック
     53#  CPU例外ハンドラに関するエラーチェック
    6954#
    7055$cfgData[:DEF_EXC].each do |key, params|
    71   # excnoがCPU例外ハンドラ番号として正しくない場合(E_PAR)[NGKI3134ï¼½
     56  # excnoがCPU例外ハンドラ番号として正しくない場合(E_PAR)[NGKI3134]
    7257  if $EXCNO_VALID.index(params[:excno]).nil?
    7358    error_illegal("E_PAR", params, :excno)
    7459  end
    7560
    76   # excatrが無効の場合(E_RSATR)[NGKI3131ï¼½
    77   #(TARGET_EXCATR以外のビットがセットされている場合)
     61  # excatrが無効の場合(E_RSATR)[NGKI3131]
     62  #(TARGET_EXCATR以外のビットがセットされている場合)
    7863  if (params[:excatr] & ~($TARGET_EXCATR)) != 0
    7964    error_illegal_sym("E_RSATR", params, :excatr, :excno)
     
    8267
    8368#
    84 #  CPU例外ハンドラのための標準的な初期化æƒ
    85 å ±ã®ç”Ÿæˆ
     69#  CPU例外ハンドラのための標準的な初期化情報の生成
    8670#
    8771if !$OMIT_INITIALIZE_EXCEPTION
    8872  #
    89   #  定義するCPU例外ハンドラの数
     73  #  定義するCPU例外ハンドラの数
    9074  #
    9175  $kernelCfgC.add(<<EOS)
     
    9680  if $cfgData[:DEF_EXC].size != 0
    9781    #
    98     #  CPU例外ハンドラのエントリ
     82    #  CPU例外ハンドラのエントリ
    9983    #
    10084    $cfgData[:DEF_EXC].each do |key, params|
     
    10589
    10690    #
    107     #  CPU例外ハンドラ初期化ブロック
     91    #  CPU例外ハンドラ初期化ブロック
    10892    #
    10993    $kernelCfgC.add("const EXCINIB _kernel_excinib_table[TNUM_DEF_EXCNO] = {")
     
    122106
    123107#
    124 #  CPU例外管理機能初期化関数の追加
     108#  CPU例外管理機能初期化関数の追加
    125109#
    126110$initializeFunctions.push("_kernel_initialize_exception();")
  • asp3_gr_sakura/trunk/kernel/genoffset.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    88#               Graduate School of Information Science, Nagoya Univ., JAPAN
    99
    10 #   ä¸Šè¨˜è‘—作権è€
    11 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    12 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    13 #   å¤‰ãƒ»å†é
    14 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    15 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    17 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    18 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22 #       è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    25 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26 #       ç”¨ã§ããªã„形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    28 #       ã¨ï¼Ž
    29 #     (a) 再é
    30 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    31 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    32 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    33 #     (b) 再é
    34 å¸ƒã®å½¢æ
    35 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    36 #         å ±å‘Šã™ã‚‹ã“と.
    37 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    38 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトをå
    40 è²¬ã™ã‚‹ã“と.
    41 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    42 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    43 ãŠã‚ˆã³TOPPERSプロジェクトを
    44 #       å
    45 è²¬ã™ã‚‹ã“と.
     10#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     11#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15#       スコード中に含まれていること.
     16#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19#       の無保証規定を掲載すること.
     20#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22#       と.
     23#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     25#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26#         報告すること.
     27#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31#       免責すること.
    4632
    47 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    48 ãŠ
    49 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    50 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    51 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    52 #   ã®è²¬ä»»ã‚’負わない.
     33#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37#   の責任を負わない.
    5338#
    54 #   $Id: genoffset.trb 662 2016-02-27 02:33:51Z ertl-hiro $
     39#   $Id$
    5540#
    5641
    5742#
    58 #               ã‚ªãƒ•ã‚»ãƒƒãƒˆãƒ•ã‚¡ã‚¤ãƒ«ç”Ÿæˆç”¨ã®ç”Ÿæˆã‚¹ã‚¯ãƒªãƒ—ト
     43#               オフセットファイル生成用の生成スクリプト
    5944#
    6045
    6146#
    62 ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ファイルの指定
     47タイムスタンプファイルの指定
    6348#
    6449$timeStampFileName = "offset.timestamp"
    6550
    6651#
    67 #  offset.hのå
    68 ˆé ­éƒ¨åˆ†ã®ç”Ÿæˆ
     52#  offset.hの先頭部分の生成
    6953#
    7054$offsetH = GenFile.new("offset.h")
     
    7256
    7357#
    74 #  #defineディレクティブの生成
     58#  #defineディレクティブの生成
    7559#
    7660def GenerateDefine(symbol, value)
     
    7963
    8064#
    81 ãƒ“ットのサーチ
     65ビットのサーチ
    8266#
    8367def SearchBit(val)
     
    9175
    9276#
    93 ãƒ“ットフィールドのオフセットとビット位置の定義の生成
     77ビットフィールドのオフセットとビット位置の定義の生成
    9478#
    9579def GenerateDefineBit(label, structSize, outputSize)
     
    138122
    139123#
    140 #  バイトé
    141 ç½®ã®ãƒã‚§ãƒƒã‚¯
     124#  バイト配置のチェック
    142125#
    143126def magicCheck(size, check)
  • asp3_gr_sakura/trunk/kernel/interrupt.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              割込み管理機能
     44 *              割込み管理機能
    6045 */
    6146
     
    6752
    6853/*
    69  *  トレースログマクロのデフォルト定義
     54 *  トレースログマクロのデフォルト定義
    7055 */
    7156#ifndef LOG_ISR_ENTER
     
    150135
    151136/*
    152  *  割込み番号の範囲の判定
     137 *  割込み番号の範囲の判定
    153138 */
    154139#ifndef VALID_INTNO_DISINT
     
    173158
    174159/*
    175  *  割込み優å
    176 ˆåº¦ã®ç¯„囲の判定
     160 *  割込み優先度の範囲の判定
    177161 */
    178162#ifndef VALID_INTPRI_CHGIPM
     
    182166
    183167/*
    184  *  割込みサービスルーチンの数
     168 *  割込みサービスルーチンの数
    185169 */
    186170#define tnum_isr        ((uint_t)(tmax_isrid - TMIN_ISRID + 1))
     
    188172
    189173/*
    190  *  割込みサービスルーチンIDから割込みサービスルーチン管理ブロックを取
    191  *  り出すためのマクロ
     174 *  割込みサービスルーチンIDから割込みサービスルーチン管理ブロックを取
     175 *  り出すためのマクロ
    192176 */
    193177#define INDEX_ISR(isrid)        ((uint_t)((isrid) - TMIN_ISRID))
     
    195179
    196180/*
    197  *  割込みサービスルーチンキューへの登録
     181 *  割込みサービスルーチンキューへの登録
    198182 */
    199183Inline void
     
    215199
    216200/*
    217  *  使用していない割込みサービスルーチン管理ブロックのリスト
     201 *  使用していない割込みサービスルーチン管理ブロックのリスト
    218202 */
    219203QUEUE   free_isrcb;
    220204
    221205/*
    222  *  割込みサービスルーチン機能の初期化
     206 *  割込みサービスルーチン機能の初期化
    223207 */
    224208void
     
    251235
    252236/*
    253  *  割込みサービスルーチンの呼出し
     237 *  割込みサービスルーチンの呼出し
    254238 */
    255239#ifdef TOPPERS_isrcal
     
    269253
    270254                if (p_queue->p_next != p_isr_queue) {
    271                         /* ISRの呼出し前の状æ
    272 ‹ã«æˆ»ã™ */
     255                        /* ISRの呼出し前の状態に戻す */
    273256                        if (sense_lock()) {
    274257                                unlock_cpu();
     
    281264
    282265/*
    283  *  割込みサービスルーチン呼出しキューの検索
     266 *  割込みサービスルーチン呼出しキューの検索
    284267 */
    285268Inline QUEUE *
     
    312295
    313296/*
    314  *  割込みサービスルーチンの生成
     297 *  割込みサービスルーチンの生成
    315298 *
    316  *  pk_cisr->exinfは,エラーチェックをせず,一度しか参ç
    317 §ã—ないため,ロー
    318  *  カル変数にコピーするå¿
    319 è¦ãŒãªã„(途中で書き換わっても支障がない).
     299 *  pk_cisr->exinfは,エラーチェックをせず,一度しか参照しないため,ロー
     300 *  カル変数にコピーする必要がない(途中で書き換わっても支障がない).
    320301 */
    321302#ifdef TOPPERS_acre_isr
     
    375356
    376357/*
    377  *  割込みサービスルーチンの削除
     358 *  割込みサービスルーチンの削除
    378359 */
    379360#ifdef TOPPERS_del_isr
     
    415396
    416397/*
    417  *  割込み管理機能の初期化
     398 *  割込み管理機能の初期化
    418399 */
    419400#ifdef TOPPERS_intini
     
    441422
    442423/*
    443  *  割込みの禁止[NGKI3555ï¼½
     424 *  割込みの禁止[NGKI3555]
    444425 */
    445426#ifdef TOPPERS_dis_int
    446 #ifdef TOPPERS_SUPPORT_DIS_INT                                  /*ï¼»NGKI3093ï¼½*/
     427#ifdef TOPPERS_SUPPORT_DIS_INT                                  /*[NGKI3093]*/
    447428
    448429ER
     
    453434
    454435        LOG_DIS_INT_ENTER(intno);
    455         CHECK_PAR(VALID_INTNO_DISINT(intno));           /*ï¼»NGKI3083][NGKI3087ï¼½*/
     436        CHECK_PAR(VALID_INTNO_DISINT(intno));           /*[NGKI3083][NGKI3087]*/
    456437
    457438        locked = sense_lock();
     
    460441        }
    461442        if (check_intno_cfg(intno)) {
    462                 disable_int(intno);                                             /*ï¼»NGKI3086ï¼½*/
     443                disable_int(intno);                                             /*[NGKI3086]*/
    463444                ercd = E_OK;
    464445        }
    465446        else {
    466                 ercd = E_OBJ;                                                   /*ï¼»NGKI3085ï¼½*/
     447                ercd = E_OBJ;                                                   /*[NGKI3085]*/
    467448        }
    468449        if (!locked) {
     
    479460
    480461/*
    481  *  割込みの許可[NGKI3556ï¼½
     462 *  割込みの許可[NGKI3556]
    482463 */
    483464#ifdef TOPPERS_ena_int
    484 #ifdef TOPPERS_SUPPORT_ENA_INT                                  /*ï¼»NGKI3106ï¼½*/
     465#ifdef TOPPERS_SUPPORT_ENA_INT                                  /*[NGKI3106]*/
    485466
    486467ER
     
    491472
    492473        LOG_ENA_INT_ENTER(intno);
    493         CHECK_PAR(VALID_INTNO_DISINT(intno));           /*ï¼»NGKI3096][NGKI3100ï¼½*/
     474        CHECK_PAR(VALID_INTNO_DISINT(intno));           /*[NGKI3096][NGKI3100]*/
    494475
    495476        locked = sense_lock();
     
    498479        }
    499480        if (check_intno_cfg(intno)) {
    500                 enable_int(intno);                                              /*ï¼»NGKI3099ï¼½*/
     481                enable_int(intno);                                              /*[NGKI3099]*/
    501482                ercd = E_OK;
    502483        }
    503484        else {
    504                 ercd = E_OBJ;                                                   /*ï¼»NGKI3098ï¼½*/
     485                ercd = E_OBJ;                                                   /*[NGKI3098]*/
    505486        }
    506487        if (!locked) {
     
    517498
    518499/*
    519  *  割込み要求のクリア[NGKI3920ï¼½
     500 *  割込み要求のクリア[NGKI3920]
    520501 */
    521502#ifdef TOPPERS_clr_int
    522 #ifdef TOPPERS_SUPPORT_CLR_INT                                  /*ï¼»NGKI3927ï¼½*/
     503#ifdef TOPPERS_SUPPORT_CLR_INT                                  /*[NGKI3927]*/
    523504
    524505ER
     
    529510
    530511        LOG_CLR_INT_ENTER(intno);
    531         CHECK_PAR(VALID_INTNO_CLRINT(intno));           /*ï¼»NGKI3921][NGKI3930ï¼½*/
     512        CHECK_PAR(VALID_INTNO_CLRINT(intno));           /*[NGKI3921][NGKI3930]*/
    532513
    533514        locked = sense_lock();
     
    536517        }
    537518        if (check_intno_cfg(intno) && check_intno_clear(intno)) {
    538                 clear_int(intno);                                               /*ï¼»NGKI3924ï¼½*/
     519                clear_int(intno);                                               /*[NGKI3924]*/
    539520                ercd = E_OK;
    540521        }
    541522        else {
    542                 ercd = E_OBJ;                                                   /*ï¼»NGKI3923][NGKI3929ï¼½*/
     523                ercd = E_OBJ;                                                   /*[NGKI3923][NGKI3929]*/
    543524        }
    544525        if (!locked) {
     
    555536
    556537/*
    557  *  割込みの要求[NGKI3932ï¼½
     538 *  割込みの要求[NGKI3932]
    558539 */
    559540#ifdef TOPPERS_ras_int
    560 #ifdef TOPPERS_SUPPORT_RAS_INT                                  /*ï¼»NGKI3939ï¼½*/
     541#ifdef TOPPERS_SUPPORT_RAS_INT                                  /*[NGKI3939]*/
    561542
    562543ER
     
    567548
    568549        LOG_RAS_INT_ENTER(intno);
    569         CHECK_PAR(VALID_INTNO_RASINT(intno));           /*ï¼»NGKI3933][NGKI3942ï¼½*/
     550        CHECK_PAR(VALID_INTNO_RASINT(intno));           /*[NGKI3933][NGKI3942]*/
    570551
    571552        locked = sense_lock();
     
    574555        }
    575556        if (check_intno_cfg(intno) && check_intno_raise(intno)) {
    576                 raise_int(intno);                                               /*ï¼»NGKI3936ï¼½*/
     557                raise_int(intno);                                               /*[NGKI3936]*/
    577558                ercd = E_OK;
    578559        }
    579560        else {
    580                 ercd = E_OBJ;                                                   /*ï¼»NGKI3935][NGKI3941ï¼½*/
     561                ercd = E_OBJ;                                                   /*[NGKI3935][NGKI3941]*/
    581562        }
    582563        if (!locked) {
     
    593574
    594575/*
    595  *  割込み要求のチェック[NGKI3944ï¼½
     576 *  割込み要求のチェック[NGKI3944]
    596577 */
    597578#ifdef TOPPERS_prb_int
    598 #ifdef TOPPERS_SUPPORT_PRB_INT                                  /*ï¼»NGKI3951ï¼½*/
     579#ifdef TOPPERS_SUPPORT_PRB_INT                                  /*[NGKI3951]*/
    599580
    600581ER_BOOL
     
    605586
    606587        LOG_PRB_INT_ENTER(intno);
    607         CHECK_PAR(VALID_INTNO_PRBINT(intno));           /*ï¼»NGKI3945][NGKI3952ï¼½*/
     588        CHECK_PAR(VALID_INTNO_PRBINT(intno));           /*[NGKI3945][NGKI3952]*/
    608589
    609590        locked = sense_lock();
     
    612593        }
    613594        if (check_intno_cfg(intno)) {
    614                 ercd = (ER_BOOL) probe_int(intno);              /*ï¼»NGKI3948ï¼½*/
    615         }
    616         else {
    617                 ercd = E_OBJ;                                                   /*ï¼»NGKI3947ï¼½*/
     595                ercd = (ER_BOOL) probe_int(intno);              /*[NGKI3948]*/
     596        }
     597        else {
     598                ercd = E_OBJ;                                                   /*[NGKI3947]*/
    618599        }
    619600        if (!locked) {
     
    630611
    631612/*
    632  *  割込み優å
    633 ˆåº¦ãƒžã‚¹ã‚¯ã®å¤‰æ›´ï¼»NGKI3107ï¼½
     613 *  割込み優先度マスクの変更[NGKI3107]
    634614 */
    635615#ifdef TOPPERS_chg_ipm
     
    641621
    642622        LOG_CHG_IPM_ENTER(intpri);
    643         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3108][NGKI3109ï¼½*/
    644         CHECK_PAR(VALID_INTPRI_CHGIPM(intpri));         /*ï¼»NGKI3113][NGKI3114ï¼½*/
     623        CHECK_TSKCTX_UNL();                                                     /*[NGKI3108][NGKI3109]*/
     624        CHECK_PAR(VALID_INTPRI_CHGIPM(intpri));         /*[NGKI3113][NGKI3114]*/
    645625
    646626        lock_cpu();
    647         t_set_ipm(intpri);                                                      /*ï¼»NGKI3111ï¼½*/
     627        t_set_ipm(intpri);                                                      /*[NGKI3111]*/
    648628        if (intpri == TIPM_ENAALL && enadsp) {
    649629                dspflg = true;
     
    681661
    682662/*
    683  *  割込み優å
    684 ˆåº¦ãƒžã‚¹ã‚¯ã®å‚ç
    685 §ï¼»NGKI3115ï¼½
     663 *  割込み優先度マスクの参照[NGKI3115]
    686664 */
    687665#ifdef TOPPERS_get_ipm
     
    693671
    694672        LOG_GET_IPM_ENTER(p_intpri);
    695         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3116][NGKI3117ï¼½*/
     673        CHECK_TSKCTX_UNL();                                                     /*[NGKI3116][NGKI3117]*/
    696674
    697675        lock_cpu();
    698         *p_intpri = t_get_ipm();                                        /*ï¼»NGKI3120ï¼½*/
     676        *p_intpri = t_get_ipm();                                        /*[NGKI3120]*/
    699677        ercd = E_OK;
    700678        unlock_cpu();
  • asp3_gr_sakura/trunk/kernel/interrupt.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              割込み管理機能
     44 *              割込み管理機能
    6045 */
    6146
     
    6752
    6853/*
    69  *  割込みサービスルーチン初期化ブロック
     54 *  割込みサービスルーチン初期化ブロック
    7055 */
    7156typedef struct isr_initialization_block {
    72         ATR                     isratr;                 /* 割込みサービスルーチン属性 */
    73         intptr_t        exinf;                  /* 割込みサービスルーチンの拡張æƒ
    74 å ± */
    75         QUEUE           *p_isr_queue;   /* 登録å
    76 ˆå‰²è¾¼ã¿ã‚µãƒ¼ãƒ“スルーチン呼出しキュー */
    77         ISR                     isr;                    /* 割込みサービスルーチンのå
    78 ˆé ­ç•ªåœ° */
    79         PRI                     isrpri;                 /* 割込みサービスルーチン優å
    80 ˆåº¦ */
     57        ATR                     isratr;                 /* 割込みサービスルーチン属性 */
     58        intptr_t        exinf;                  /* 割込みサービスルーチンの拡張情報 */
     59        QUEUE           *p_isr_queue;   /* 登録先割込みサービスルーチン呼出しキュー */
     60        ISR                     isr;                    /* 割込みサービスルーチンの先頭番地 */
     61        PRI                     isrpri;                 /* 割込みサービスルーチン優先度 */
    8162} ISRINIB;
    8263
    8364/*
    84  *  割込みサービスルーチン管理ブロック
     65 *  割込みサービスルーチン管理ブロック
    8566 */
    8667typedef struct isr_control_block {
    87         QUEUE           isr_queue;              /* 割込みサービスルーチン呼出しキュー */
    88         const ISRINIB *p_isrinib;       /* 初期化ブロックへのポインタ */
     68        QUEUE           isr_queue;              /* 割込みサービスルーチン呼出しキュー */
     69        const ISRINIB *p_isrinib;       /* 初期化ブロックへのポインタ */
    8970} ISRCB;
    9071
    9172/*
    92  *  割込みサービスルーチン呼出しキューを検索するためのデータ構造
     73 *  割込みサービスルーチン呼出しキューを検索するためのデータ構造
    9374 */
    9475typedef struct {
    95         INTNO           intno;                  /* 割込み番号 */
    96         QUEUE           *p_isr_queue;   /* 割込みサービスルーチン呼出しキュー */
     76        INTNO           intno;                  /* 割込み番号 */
     77        QUEUE           *p_isr_queue;   /* 割込みサービスルーチン呼出しキュー */
    9778} ISR_ENTRY;
    9879
    9980/*
    100  *  割込みサービスルーチン呼出しキューのエントリ数(kernel_cfg.c)
     81 *  割込みサービスルーチン呼出しキューのエントリ数(kernel_cfg.c)
    10182 */
    10283extern const uint_t tnum_isr_queue;
    10384
    10485/*
    105  *  割込みサービスルーチン呼出しキューリスト(kernel_cfg.c)
     86 *  割込みサービスルーチン呼出しキューリスト(kernel_cfg.c)
    10687 */
    10788extern const ISR_ENTRY isr_queue_list[];
    10889
    10990/*
    110  *  割込みサービスルーチン呼出しキューのエリア(kernel_cfg.c)
     91 *  割込みサービスルーチン呼出しキューのエリア(kernel_cfg.c)
    11192 */
    11293extern QUEUE isr_queue_table[];
    11394
    11495/*
    115  *  使用していない割込みサービスルーチン管理ブロックのリスト
     96 *  使用していない割込みサービスルーチン管理ブロックのリスト
    11697 */
    11798extern QUEUE    free_isrcb;
    11899
    119100/*
    120  *  割込みサービスルーチンIDの最大値(kernel_cfg.c)
     101 *  割込みサービスルーチンIDの最大値(kernel_cfg.c)
    121102 */
    122103extern const ID tmax_isrid;
     
    124105
    125106/*
    126  *  割込みサービスルーチン初期化ブロックのエリア(kernel_cfg.c)
     107 *  割込みサービスルーチン初期化ブロックのエリア(kernel_cfg.c)
    127108 */
    128109extern const ISRINIB    isrinib_table[];
     
    130111
    131112/*
    132  *  割込みサービスルーチン生成順序テーブル(kernel_cfg.c)
     113 *  割込みサービスルーチン生成順序テーブル(kernel_cfg.c)
    133114 */
    134115extern const ID isrorder_table[];
    135116
    136117/*
    137  *  割込みサービスルーチン管理ブロックのエリア(kernel_cfg.c)
     118 *  割込みサービスルーチン管理ブロックのエリア(kernel_cfg.c)
    138119 */
    139120extern ISRCB    isrcb_table[];
    140121
    141122/*
    142  *  割込みサービスルーチン管理ブロックから割込みサービスルーチンIDを取
    143  *  り出すためのマクロ
     123 *  割込みサービスルーチン管理ブロックから割込みサービスルーチンIDを取
     124 *  り出すためのマクロ
    144125 */
    145126#define ISRID(p_isrcb)  ((ID)(((p_isrcb) - isrcb_table) + TMIN_ISRID))
    146127
    147128/*
    148  *  割込みサービスルーチン機能の初期化
     129 *  割込みサービスルーチン機能の初期化
    149130 */
    150131extern void initialize_isr(void);
    151132
    152133/*
    153  *  割込みサービスルーチンの呼出し
     134 *  割込みサービスルーチンの呼出し
    154135 */
    155136extern void call_isr(QUEUE *p_isr_queue);
     
    158139
    159140/*
    160  *  割込みハンドラ初期化ブロック
     141 *  割込みハンドラ初期化ブロック
    161142 */
    162143typedef struct interrupt_handler_initialization_block {
    163         INHNO           inhno;                  /* 割込みハンドラ番号 */
    164         ATR                     inhatr;                 /* 割込みハンドラ属性 */
    165         FP                      int_entry;              /* 割込みハンドラの出å
    166 ¥å£å‡¦ç†ã®ç•ªåœ° */
     144        INHNO           inhno;                  /* 割込みハンドラ番号 */
     145        ATR                     inhatr;                 /* 割込みハンドラ属性 */
     146        FP                      int_entry;              /* 割込みハンドラの出入口処理の番地 */
    167147} INHINIB;
    168148
    169149/*
    170  *  定義する割込みハンドラ番号の数(kernel_cfg.c)
     150 *  定義する割込みハンドラ番号の数(kernel_cfg.c)
    171151 */
    172152extern const uint_t     tnum_def_inhno;
    173153
    174154/*
    175  *  割込みハンドラ初期化ブロックのエリア(kernel_cfg.c)
     155 *  割込みハンドラ初期化ブロックのエリア(kernel_cfg.c)
    176156 */
    177157extern const INHINIB    inhinib_table[];
     
    182162
    183163/*
    184  *  割込み要求ライン初期化ブロック
     164 *  割込み要求ライン初期化ブロック
    185165 */
    186166typedef struct interrupt_request_initialization_block {
    187         INTNO           intno;                  /* 割込み番号 */
    188         ATR                     intatr;                 /* 割込み属性 */
    189         PRI                     intpri;                 /* 割込み優å
    190 ˆåº¦ */
     167        INTNO           intno;                  /* 割込み番号 */
     168        ATR                     intatr;                 /* 割込み属性 */
     169        PRI                     intpri;                 /* 割込み優先度 */
    191170} INTINIB;
    192171
    193172/*
    194  *  設定する割込み要求ラインの数(kernel_cfg.c)
     173 *  設定する割込み要求ラインの数(kernel_cfg.c)
    195174 */
    196175extern const uint_t     tnum_cfg_intno;
    197176
    198177/*
    199  *  割込み要求ライン初期化ブロックのエリア(kernel_cfg.c)
     178 *  割込み要求ライン初期化ブロックのエリア(kernel_cfg.c)
    200179 */
    201180extern const INTINIB    intinib_table[];
     
    204183
    205184/*
    206  *  割込み管理機能の初期化
     185 *  割込み管理機能の初期化
    207186 */
    208187extern void     initialize_interrupt(void);
  • asp3_gr_sakura/trunk/kernel/interrupt.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010#
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
    47 #
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
    54 #
    55 #   $Id: interrupt.trb 678 2016-03-06 02:36:09Z ertl-hiro $
    56 #
    57 
    58 #
    59 #               å‰²è¾¼ã¿ç®¡ç†æ©Ÿèƒ½ã®ç”Ÿæˆã‚¹ã‚¯ãƒªãƒ—ト
    60 #
    61 
    62 #
    63 #  kernel_cfg.cの生成
     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#       免責すること.
     33#
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
     39#
     40#   $Id$
     41#
     42
     43#
     44#               割込み管理機能の生成スクリプト
     45#
     46
     47#
     48#  kernel_cfg.cの生成
    6449#
    6550$kernelCfgC.comment_header("Interrupt Management Functions")
    6651
    6752#
    68 #  CRE_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号のデ
    69 ãƒ•ã‚©ãƒ«ãƒˆå®šç¾©
     53#  CRE_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号のデ
     54フォルト定義
    7055#
    7156if $INTNO_CREISR_VALID.nil?
     
    7762
    7863#
    79 #  CFG_INTで使用できる割込み優å
    80 ˆåº¦ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå®šç¾©
     64#  CFG_INTで使用できる割込み優先度のデフォルト定義
    8165#
    8266if $INTPRI_CFGINT_VALID.nil?
     
    8569
    8670#
    87 å‰²è¾¼ã¿ç•ªå·ã¨å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ç•ªå·ã®å¤‰æ›ãƒ†ãƒ¼ãƒ–ルの作成
     71割込み番号と割込みハンドラ番号の変換テーブルの作成
    8872#
    8973if $INTNO_CREISR_VALID.length != $INHNO_CREISR_VALID.length
     
    10185
    10286#
    103 å‰²è¾¼ã¿è¦æ±‚ラインに関するエラーチェック
     87割込み要求ラインに関するエラーチェック
    10488#
    10589$cfgData[:CFG_INT].each do |key, params|
    106   #     intnoが割込み番号として正しくない場合(E_PAR)[NGKI2972ï¼½
     90  #     intnoが割込み番号として正しくない場合(E_PAR)[NGKI2972]
    10791  if $INTNO_VALID.index(params[:intno]).nil?
    10892    error_illegal("E_PAR", params, :intno)
    10993  end
    11094
    111   #     intatrが無効の場合(E_RSATR)[NGKI2969ï¼½
    112   #(TA_ENAINT,TA_EDGE,TARGET_INTATR以外のビットがセットされている場合)
     95  #     intatrが無効の場合(E_RSATR)[NGKI2969]
     96  #(TA_ENAINT,TA_EDGE,TARGET_INTATR以外のビットがセットされている場合)
    11397  if (params[:intatr] & ~($TA_ENAINT|$TA_EDGE|$TARGET_INTATR)) != 0
    11498    error_illegal_sym("E_RSATR", params, :intatr, :intno)
    11599  end
    116100
    117   #     intpriがCFG_INTに対する割込み優å
    118 ˆåº¦ã¨ã—て正しくない場合(E_PAR)
    119   #     ï¼»NGKI2973ï¼½
     101  #     intpriがCFG_INTに対する割込み優先度として正しくない場合(E_PAR)
     102  #     [NGKI2973]
    120103  if $INTPRI_CFGINT_VALID.index(params[:intpri]).nil?
    121104    error_illegal_sym("E_OBJ", params, :intpri, :intno)
    122105  end
    123106
    124   # カーネル管理外に固定されているintnoに対して,intpriにTMIN_INTPRIよ
    125   #     ã‚Šã‚‚小さい値が指定されなかった場合(E_OBJ)[NGKI2983ï¼½
     107  # カーネル管理外に固定されているintnoに対して,intpriにTMIN_INTPRIよ
     108  #     りも小さい値が指定されなかった場合(E_OBJ)[NGKI2983]
    126109  if !$INTNO_FIX_NONKERNEL.nil?
    127110    if !$INTNO_FIX_NONKERNEL.index(params[:intno]).nil?
     
    133116  end
    134117
    135   #     ã‚«ãƒ¼ãƒãƒ«ç®¡ç†ã«å›ºå®šã•ã‚Œã¦ã„ã‚‹intnoに対して,intpriにTMIN_INTPRIより
    136   #     ã‚‚小さい値が指定された場合(E_OBJ)[NGKI2984ï¼½
     118  #     カーネル管理に固定されているintnoに対して,intpriにTMIN_INTPRIより
     119  #     も小さい値が指定された場合(E_OBJ)[NGKI2984]
    137120  if !$INTNO_FIX_KERNEL.nil?
    138121    if !$INTNO_FIX_KERNEL.index(params[:intno]).nil?
     
    146129
    147130#
    148 å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ã«é–¢ã™ã‚‹ã‚¨ãƒ©ãƒ¼ãƒã‚§ãƒƒã‚¯
     131割込みハンドラに関するエラーチェック
    149132#
    150133$cfgData[:DEF_INH].each do |key, params|
    151   # inhnoが割込みハンドラ番号として正しくない場合(E_PAR)[NGKI3055ï¼½
     134  # inhnoが割込みハンドラ番号として正しくない場合(E_PAR)[NGKI3055]
    152135  if $INHNO_VALID.index(params[:inhno]).nil?
    153136    error_illegal("E_PAR", params, :inhno)
    154137  end
    155138
    156   # inhatrが無効の場合(E_RSATR)[NGKI3052ï¼½
    157   #(TARGET_INHATR以外のビットがセットされている場合)
     139  # inhatrが無効の場合(E_RSATR)[NGKI3052]
     140  #(TARGET_INHATR以外のビットがセットされている場合)
    158141  if (params[:inhatr] & ~($TARGET_INHATR)) != 0
    159142    error_illegal_sym("E_RSATR", params, :inhatr, :inhno)
    160143  end
    161144
    162   #     ã‚«ãƒ¼ãƒãƒ«ç®¡ç†å¤–に固定されているinhnoに対して,inhatrにTA_NONKERNELが
    163   #     æŒ‡å®šã•ã‚Œã¦ã„ない場合(E_RSATR)[NGKI3067ï¼½
     145  #     カーネル管理外に固定されているinhnoに対して,inhatrにTA_NONKERNELが
     146  #     指定されていない場合(E_RSATR)[NGKI3067]
    164147  if !$INHNO_FIX_NONKERNEL.nil?
    165148    if !$INHNO_FIX_NONKERNEL.index(params[:inhno]).nil?
     
    171154  end
    172155
    173   #     ã‚«ãƒ¼ãƒãƒ«ç®¡ç†ã«å›ºå®šã•ã‚Œã¦ã„ã‚‹inhnoに対して,inhatrにTA_NONKERNELが指
    174   #     å®šã•ã‚Œã¦ã„る場合(E_RSATR)[NGKI3068ï¼½
     156  #     カーネル管理に固定されているinhnoに対して,inhatrにTA_NONKERNELが指
     157  #     定されている場合(E_RSATR)[NGKI3068]
    175158  if !$INHNO_FIX_KERNEL.nil?
    176159    if !$INHNO_FIX_KERNEL.index(params[:inhno]).nil?
     
    185168    intnoVal = $toIntnoVal[params[:inhno].val]
    186169
    187     # inhnoに対応するintnoに対するCFG_INTがない場合(E_OBJ)[NGKI3062ï¼½
     170    # inhnoに対応するintnoに対するCFG_INTがない場合(E_OBJ)[NGKI3062]
    188171    if !$cfgData[:CFG_INT].has_key?(intnoVal)
    189172      error_ercd("E_OBJ", params, "intno `#{intnoVal}' corresponding to " \
     
    192175      intnoParams = $cfgData[:CFG_INT][intnoVal]
    193176      if (params[:inhatr] & $TA_NONKERNEL) == 0
    194         # inhatrにTA_NONKERNELが指定されておらず,inhnoに対応するintno
    195         # に対してCFG_INTで設定された割込み優å
    196 ˆåº¦ãŒTMIN_INTPRIよりも小
    197         # さい場合(E_OBJ)[NGKI3065ï¼½
     177        # inhatrにTA_NONKERNELが指定されておらず,inhnoに対応するintno
     178        # に対してCFG_INTで設定された割込み優先度がTMIN_INTPRIよりも小
     179        # さい場合(E_OBJ)[NGKI3065]
    198180        if intnoParams[:intpri] < $TMIN_INTPRI
    199181          error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}' " \
     
    201183        end
    202184      else
    203         # inhatrにTA_NONKERNELが指定されており,inhnoに対応するintnoに
    204         # 対してCFG_INTで設定された割込み優å
    205 ˆåº¦ãŒTMIN_INTPRI以上である
    206         # 場合(E_OBJ)[NGKI3066ï¼½
     185        # inhatrにTA_NONKERNELが指定されており,inhnoに対応するintnoに
     186        # 対してCFG_INTで設定された割込み優先度がTMIN_INTPRI以上である
     187        # 場合(E_OBJ)[NGKI3066]
    207188        if intnoParams[:intpri] >= $TMIN_INTPRI
    208189          error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}' " \
     
    215196
    216197#
    217 å‰²è¾¼ã¿ã‚µãƒ¼ãƒ“スルーチン(ISR)に関するエラーチェック
     198割込みサービスルーチン(ISR)に関するエラーチェック
    218199#
    219200$cfgData[:CRE_ISR].sort.each do |key, params|
    220   #     isratrが無効の場合(E_RSATR)[NGKI2998ï¼½
    221   #(TARGET_ISRATR以外のビットがセットされている場合)
     201  #     isratrが無効の場合(E_RSATR)[NGKI2998]
     202  #(TARGET_ISRATR以外のビットがセットされている場合)
    222203  if (params[:isratr] & ~($TARGET_ISRATR)) != 0
    223204    error_illegal("E_RSATR", params, "isratr")
    224205  end
    225206
    226   #     intnoがCRE_ISRに対する割込み番号として正しくない場合(E_PAR)
    227   #     ï¼»NGKI3003ï¼½
     207  #     intnoがCRE_ISRに対する割込み番号として正しくない場合(E_PAR)
     208  #     [NGKI3003]
    228209  if $INTNO_CREISR_VALID.index(params[:intno]).nil?
    229210    error_illegal("E_PAR", params, "intno")
    230211  end
    231212
    232   #     (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)でない場合(E_PAR)
    233   #     ï¼»NGKI3005ï¼½
     213  #     (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)でない場合(E_PAR)
     214  #     [NGKI3005]
    234215  if !($TMIN_ISRPRI <= params[:isrpri] && params[:isrpri] <= $TMAX_ISRPRI)
    235216    error_illegal("E_PAR", params, "isrpri")
     
    238219
    239220$INTNO_CREISR_VALID.each do |intnoVal|
    240   # 割込み番号intnoに対して登録されたISRのリストの作成
     221  # 割込み番号intnoに対して登録されたISRのリストの作成
    241222  isrParamsList = []
    242223  $cfgData[:CRE_ISR].sort.each do |key, params|
     
    246227  end
    247228
    248   #     å‰²è¾¼ã¿ç•ªå·intnoに対して登録されたISRが存在する場合
     229  #     割込み番号intnoに対して登録されたISRが存在する場合
    249230  if isrParamsList.size > 0
    250231    inhnoVal = $toInhnoVal[intnoVal]
    251232
    252     # intnoに対応するinhnoに対してDEF_INHがある場合(E_OBJ)[NGKI3013ï¼½
     233    # intnoに対応するinhnoに対してDEF_INHがある場合(E_OBJ)[NGKI3013]
    253234    if $cfgData[:DEF_INH].has_key?(inhnoVal)
    254235      inhnoParams = $cfgData[:DEF_INH][inhnoVal]
     
    257238    end
    258239
    259     # intnoに対するCFG_INTがない場合(E_OBJ)[NGKI3012ï¼½
     240    # intnoに対するCFG_INTがない場合(E_OBJ)[NGKI3012]
    260241    if !$cfgData[:CFG_INT].has_key?(intnoVal)
    261242      error_ercd("E_OBJ", isrParamsList[0], "%%intno in %apiname " \
     
    264245      intnoParams = $cfgData[:CFG_INT][intnoVal]
    265246
    266       # intnoに対してCFG_INTで設定された割込み優å
    267 ˆåº¦ãŒTMIN_INTPRIよりも
    268       # 小さい場合(E_OBJ)[NGKI3014ï¼½
     247      # intnoに対してCFG_INTで設定された割込み優先度がTMIN_INTPRIよりも
     248      # 小さい場合(E_OBJ)[NGKI3014]
    269249      if intnoParams[:intpri] < $TMIN_INTPRI
    270250        error_ercd("E_OBJ", isrParamsList[0],
     
    277257
    278258#
    279 å‰²è¾¼ã¿ã‚µãƒ¼ãƒ“スルーチン(ISR)管理のデータ構造
     259割込みサービスルーチン(ISR)管理のデータ構造
    280260#
    281261intnoIsrList = []
     
    313293
    314294#
    315 å‰²è¾¼ã¿ã‚µãƒ¼ãƒ“スルーチン(ISR)呼出しのための割込みハンドラ
     295割込みサービスルーチン(ISR)呼出しのための割込みハンドラ
    316296#
    317297intnoIsrList.each do |intnoVal|
    318298  inhnoVal = $toInhnoVal[intnoVal]
    319299
    320   # 次のDEF_INHに相当するデータを生成
     300  # 次のDEF_INHに相当するデータを生成
    321301  # DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> } );
    322302  $cfgData[:DEF_INH][inhnoVal] = {
     
    326306  }
    327307
    328   # 割込みサービスルーチン用の割込みハンドラ
     308  # 割込みサービスルーチン用の割込みハンドラ
    329309  $kernelCfgC.add("void")
    330310  $kernelCfgC.add("_kernel_inthdr_#{intnoVal}(void)")
     
    335315
    336316#
    337 #  割込みサービスルーチンに関する一般的なæƒ
    338 å ±ã®ç”Ÿæˆ
     317#  割込みサービスルーチンに関する一般的な情報の生成
    339318#
    340319class IsrObject < KernelObject
     
    344323
    345324  def prepare(key, params)
    346     # エラーチェックは実施済みなので,ここでの処理は不要
     325    # エラーチェックは実施済みなので,ここでの処理は不要
    347326  end
    348327
     
    355334IsrObject.new.generate()
    356335
    357 # 割込みサービスルーチン生成順序テーブルの生成
     336# 割込みサービスルーチン生成順序テーブルの生成
    358337$kernelCfgC.add("const ID _kernel_isrorder_table[TNUM_SISRID] = { ")
    359338$kernelCfgC.append("\t")
     
    366345
    367346#
    368 #  割込みハンドラのための標準的な初期化æƒ
    369 å ±ã®ç”Ÿæˆ
     347#  割込みハンドラのための標準的な初期化情報の生成
    370348#
    371349if !$OMIT_INITIALIZE_INTERRUPT || $USE_INHINIB_TABLE
    372350  #
    373   #  定義する割込みハンドラの数
     351  #  定義する割込みハンドラの数
    374352  #
    375353  $kernelCfgC.add(<<EOS)
     
    380358  if $cfgData[:DEF_INH].size != 0
    381359    #
    382     #  割込みハンドラのエントリ
     360    #  割込みハンドラのエントリ
    383361    #
    384362    $cfgData[:DEF_INH].each do |key, params|
     
    391369
    392370    #
    393     #  割込みハンドラ初期化ブロック
     371    #  割込みハンドラ初期化ブロック
    394372    #
    395373    $kernelCfgC.add("const INHINIB _kernel_inhinib_table[TNUM_DEF_INHNO] = {")
     
    413391
    414392#
    415 #  割込み要求ラインのための標準的な初期化æƒ
    416 å ±ã®ç”Ÿæˆ
     393#  割込み要求ラインのための標準的な初期化情報の生成
    417394#
    418395if !$OMIT_INITIALIZE_INTERRUPT || $USE_INTINIB_TABLE
    419396  #
    420   #  設定する割込み要求ラインの数
     397  #  設定する割込み要求ラインの数
    421398  #
    422399  $kernelCfgC.add(<<EOS)
     
    426403
    427404  #
    428   #  割込み要求ライン初期化ブロック
     405  #  割込み要求ライン初期化ブロック
    429406  #
    430407  if $cfgData[:CFG_INT].size != 0
     
    444421
    445422#
    446 å‰²è¾¼ã¿ç®¡ç†æ©Ÿèƒ½åˆæœŸåŒ–関数の追加
     423割込み管理機能初期化関数の追加
    447424#
    448425$initializeFunctions.push("_kernel_initialize_interrupt();")
  • asp3_gr_sakura/trunk/kernel/kernel.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010#
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     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#       免責すること.
    4733#
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
    5439#
    55 #   $Id: kernel.trb 716 2016-03-31 06:16:23Z ertl-hiro $
     40#   $Id$
    5641#
    5742
    5843#
    59 #               ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚¿ã®ãƒ‘ス2の生成スクリプト
    60 #
    61 
    62 #
    63 ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ファイルの指定
     44#               コンフィギュレータのパス2の生成スクリプト
     45#
     46
     47#
     48タイムスタンプファイルの指定
    6449#
    6550$timeStampFileName = "kernel_cfg.timestamp"
    6651
    6752#
    68 #  kernel_cfg.hのå
    69 ˆé ­éƒ¨åˆ†ã®ç”Ÿæˆ
     53#  kernel_cfg.hの先頭部分の生成
    7054#
    7155$kernelCfgH = GenFile.new("kernel_cfg.h")
     
    7761
    7862#
    79 #  kernel_cfg.cのå
    80 ˆé ­éƒ¨åˆ†ã®ç”Ÿæˆ
     63#  kernel_cfg.cの先頭部分の生成
    8164#
    8265$kernelCfgC = GenFile.new("kernel_cfg.c")
     
    9275
    9376#
    94 ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–(#include)
     77インクルードディレクティブ(#include)
    9578#
    9679$kernelCfgC.comment_header("Include Directives")
     
    10184
    10285#
    103 #  スタック領域の確保関数
    104 #
    105 #  スタック領域の定義分と,スタック領域のサイズ記述をé
    106 åˆ—で返す.
     86#  スタック領域の確保関数
     87#
     88#  スタック領域の定義分と,スタック領域のサイズ記述を配列で返す.
    10789#
    10890unless defined? AllocStack()
    10991  def AllocStack(stack, size)
    110     # 大きい方に丸めたサイズで確保する[NGKI1050][NGKI3220ï¼½
     92    # 大きい方に丸めたサイズで確保する[NGKI1050][NGKI3220]
    11193    $kernelCfgC.add("static STK_T #{stack}[COUNT_STK_T(#{size})];")
    11294    return("ROUND_STK_T(#{size})")
     
    11597
    11698#
    117 #  カーネルオブジェクトに関するæƒ
    118 å ±ã®ç”Ÿæˆï¼ˆä»®æƒ³ã‚¯ãƒ©ã‚¹ï¼‰
     99#  カーネルオブジェクトに関する情報の生成(仮想クラス)
    119100#
    120101class KernelObject
     
    131112
    132113  def generate()
    133     # AID_@OBJの処理
     114    # AID_@OBJの処理
    134115    numAutoObjid = 0
    135116    $cfgData["AID_#{@OBJ}".to_sym].each do |key, params|
     
    138119    numObjid = $cfgData[@api].size + numAutoObjid
    139120
    140     # kernel_cfg.hの生成
     121    # kernel_cfg.hの生成
    141122    $kernelCfgH.add("#define TNUM_#{@OBJ}ID\t#{numObjid}")
    142123
    143     # オブジェクトのID番号のマクロ定義の生成
     124    # オブジェクトのID番号のマクロ定義の生成
    144125    $cfgData[@api].sort.each do |key, params|
    145126      $kernelCfgH.add("#define #{params[@objid]}\t#{params[@objid].val}")
     
    147128    $kernelCfgH.add()
    148129
    149     # オブジェクトのID番号を保持する変数
     130    # オブジェクトのID番号を保持する変数
    150131    if $USE_EXTERNAL_ID
    151132      $cfgData[@api].sort.each do |key, params|
     
    156137    end
    157138
    158     # 静的に生成されたオブジェクトの数
     139    # 静的に生成されたオブジェクトの数
    159140    $kernelCfgC.add("#define TNUM_S#{@OBJ}ID\t#{$cfgData[@api].size}")
    160141
    161     # オブジェクトID番号の最大値
     142    # オブジェクトID番号の最大値
    162143    $kernelCfgC.add("const ID _kernel_tmax_#{@obj}id" \
    163144                                                        " = (TMIN_#{@OBJ}ID + TNUM_#{@OBJ}ID - 1);")
     
    165146                                                        " = (TMIN_#{@OBJ}ID + TNUM_S#{@OBJ}ID - 1);")
    166147
    167     # データ構造
     148    # データ構造
    168149    if $cfgData[@api].size > 0
    169       # 事前準備(エラーチェック,メモリ領域の生成)
     150      # 事前準備(エラーチェック,メモリ領域の生成)
    170151      $cfgData[@api].sort.each do |key, params|
    171152        prepare(key, params)
    172153      end
    173154
    174       # オブジェクトå
    175 ¨ä½“に対してå¿
    176 è¦ãªãƒ¡ãƒ¢ãƒªé ˜åŸŸã®ç”Ÿæˆï¼ˆã‚ªãƒ—ション)
     155      # オブジェクト全体に対して必要なメモリ領域の生成(オプション)
    177156      if respond_to?(:generateData)
    178157        generateData()
    179158      end
    180159
    181       # オブジェクト初期化ブロックの生成
     160      # オブジェクト初期化ブロックの生成
    182161      $kernelCfgC.add("const #{@OBJ_S}INIB _kernel_#{@obj_s}inib_table" \
    183162                                                                                                        "[TNUM_S#{@OBJ}ID] = {")
     
    193172    end
    194173
    195     # 動的生成オブジェクト用のオブジェクト初期化ブロック
     174    # 動的生成オブジェクト用のオブジェクト初期化ブロック
    196175    @inibList.each do |type, array|
    197176      if numAutoObjid > 0
     
    203182
    204183    if numObjid > 0
    205       # オブジェクト管理ブロックの生成
     184      # オブジェクト管理ブロックの生成
    206185      $kernelCfgC.add2("#{@OBJ_S}CB _kernel_#{@obj_s}cb_table" \
    207186                                                                                                        "[TNUM_#{@OBJ}ID];")
    208187
    209       # オブジェクト初期化関数の追加
     188      # オブジェクト初期化関数の追加
    210189      $initializeFunctions.push("_kernel_initialize_#{@object}();")
    211190    else
     
    217196
    218197#
    219 é€šçŸ¥ãƒãƒ³ãƒ‰ãƒ©ã®ç”Ÿæˆé–¢æ•°
     198通知ハンドラの生成関数
    220199#
    221200def generateNotifyHandler(key, params, objid)
    222   # パラメータを変数に格納
     201  # パラメータを変数に格納
    223202  nfymode = params[:nfymode]
    224203  nfymode1 = nfymode & 0x0f
     
    227206  par2 = params[:par2]
    228207
    229   # 通知処理のパラメータ数による補正処理
     208  # 通知処理のパラメータ数による補正処理
    230209  if nfymode == $TNFY_HANDLER || nfymode1 == $TNFY_SETVAR \
    231210                                                                || nfymode1 == $TNFY_SETFLG \
    232211                                                                || nfymode1 == $TNFY_SNDDTQ
    233     # 通知処理のパラメータが2つの場合
     212    # 通知処理のパラメータが2つの場合
    234213        numpar = 2
    235214        epar1 = params[:par3]
    236215        epar2 = params[:par4]
    237216  else
    238     # 通知処理のパラメータが1つの場合
     217    # 通知処理のパラメータが1つの場合
    239218    numpar = 1
    240219    epar1 = params[:par2]
     
    242221  end
    243222
    244   # パラメータ数のチェック
     223  # パラメータ数のチェック
    245224  if (numpar == 2 && par2.nil?) || (nfymode2 != 0 && epar1.nil?) \
    246225                                                                || (nfymode2 == $TENFY_SETFLG && epar2.nil?)
    247     # パラメータが足りない場合
     226    # パラメータが足りない場合
    248227    error_api(params, "too few parameters for nfymode `#{nfymode}' " \
    249228                                                                                        "in %apiname of %#{objid}")
    250229  elsif (nfymode2 == 0 && !epar1.nil?) \
    251230                                        || (nfymode2 != $TENFY_SETFLG && !epar2.nil?)
    252     # パラメータが多すぎる場合
     231    # パラメータが多すぎる場合
    253232    error_api(params, "too many parameters for nfymode `#{nfymode}' " \
    254233                                                                                        "in %apiname of %#{objid}")
    255234  elsif nfymode == $TNFY_HANDLER
    256     # タイムイベントハンドラの呼出し
     235    # タイムイベントハンドラの呼出し
    257236    funcname = "(NFYHDR)(#{par2})"
    258237  else
    259     # 通知ハンドラの関数名
     238    # 通知ハンドラの関数名
    260239    funcname = "_kernel_nfyhdr_#{params[objid]}"
    261240
    262     # エラー通知のための変数のアドレスとオブジェクトIDを格納する
    263     # 変数の生成(エラーチェックのためにå¿
    264 è¦ï¼‰
     241    # エラー通知のための変数のアドレスとオブジェクトIDを格納する
     242    # 変数の生成(エラーチェックのために必要)
    265243    if nfymode2 == $TENFY_SETVAR || nfymode2 == $TENFY_INCVAR
    266244      $kernelCfgC.add2("intptr_t *const #{funcname}_p_evar =" \
     
    276254    end
    277255
    278     # 関数のå
    279 ˆé ­éƒ¨åˆ†ã®ç”Ÿæˆ
     256    # 関数の先頭部分の生成
    280257    $kernelCfgC.add("static void")
    281258    $kernelCfgC.add("#{funcname}(intptr_t exinf)")
     
    283260
    284261    if nfymode2 == 0
    285       # エラー通知がない場合
     262      # エラー通知がない場合
    286263      errorCode = "(void) "
    287264    else
    288       # エラー通知がある場合
     265      # エラー通知がある場合
    289266      $kernelCfgC.add2("\tER\tercd;")
    290267      errorCode = "ercd = "
    291268    end
    292269
    293     # イベント通知処理の処理
     270    # イベント通知処理の処理
    294271    if nfymode1 == $TNFY_SETVAR && nfymode2 == 0
    295       # 変数の設定
     272      # 変数の設定
    296273      $kernelCfgC.add("\t*((intptr_t *) exinf) = (#{par2});")
    297274    elsif nfymode1 == $TNFY_INCVAR && nfymode2 == 0
    298       # 変数のインクリメント
     275      # 変数のインクリメント
    299276      $kernelCfgC.add("\t(void) loc_cpu();")
    300277      $kernelCfgC.add("\t*((intptr_t *) exinf) += 1;")
    301278      $kernelCfgC.add("\t(void) unl_cpu();")
    302279    elsif nfymode1 == $TNFY_ACTTSK
    303       # タスクの起動
     280      # タスクの起動
    304281      $kernelCfgC.add("\t#{errorCode}act_tsk((ID) exinf);")
    305282    elsif nfymode1 == $TNFY_WUPTSK
    306       # タスクの起床
     283      # タスクの起床
    307284      $kernelCfgC.add("\t#{errorCode}wup_tsk((ID) exinf);")
    308285    elsif nfymode1 == $TNFY_SIGSEM
    309       # セマフォの返却
     286      # セマフォの返却
    310287      $kernelCfgC.add("\t#{errorCode}sig_sem((ID) exinf);")
    311288    elsif nfymode1 == $TNFY_SETFLG
    312       # イベントフラグのセット
     289      # イベントフラグのセット
    313290      $kernelCfgC.add("\t#{errorCode}set_flg(((ID) exinf), #{par2});")
    314291    elsif nfymode1 == $TNFY_SNDDTQ
    315       # データキューへの送信
     292      # データキューへの送信
    316293      $kernelCfgC.add("\t#{errorCode}psnd_dtq(((ID) exinf), #{par2});")
    317294    else
     
    320297                       
    321298    if nfymode2 != 0
    322       # エラー通知処理の処理
     299      # エラー通知処理の処理
    323300      $kernelCfgC.add("\tif (ercd != E_OK) {")
    324301
    325302
    326303      if nfymode2 == $TENFY_SETVAR
    327         # 変数の設定
     304        # 変数の設定
    328305        $kernelCfgC.add("\t\t*#{funcname}_p_evar = (intptr_t) ercd;")
    329306      elsif nfymode2 == $TENFY_INCVAR
    330         # 変数のインクリメント
     307        # 変数のインクリメント
    331308        $kernelCfgC.add("\t\t(void) loc_cpu();")
    332309        $kernelCfgC.add("\t\t*#{funcname}_p_evar += 1;")
    333310        $kernelCfgC.add("\t\t(void) unl_cpu();")
    334311      elsif nfymode2 == $TENFY_ACTTSK
    335         # タスクの起動
     312        # タスクの起動
    336313        $kernelCfgC.add("\t\t(void) act_tsk(#{funcname}_etskid);")
    337314      elsif nfymode2 == $TENFY_WUPTSK
    338         # タスクの起床
     315        # タスクの起床
    339316        $kernelCfgC.add("\t\t(void) wup_tsk(#{funcname}_etskid);")
    340317      elsif nfymode2 == $TENFY_SIGSEM
    341         # セマフォの返却
     318        # セマフォの返却
    342319        $kernelCfgC.add("\t\t(void) sig_sem(#{funcname}_esemid);")
    343320      elsif nfymode2 == $TENFY_SETFLG
    344         # イベントフラグのセット
     321        # イベントフラグのセット
    345322        $kernelCfgC.add("\t\t(void) set_flg(#{funcname}_eflgid, #{epar2});")
    346323      elsif nfymode2 == $TENFY_SNDDTQ
    347         # データキューへの送信
     324        # データキューへの送信
    348325        $kernelCfgC.add("\t\t(void) psnd_dtq(#{funcname}_edtqid," \
    349326                                                                                                        " (intptr_t) ercd);")
     
    354331    end
    355332
    356     # 関数の末尾部分の生成
     333    # 関数の末尾部分の生成
    357334    $kernelCfgC.add2("}")
    358335  end
     
    361338
    362339#
    363 å„機能モジュールのコンフィギュレーション
     340各機能モジュールのコンフィギュレーション
    364341#
    365342$initializeFunctions = []
     
    378355
    379356#
    380 éžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆç”¨ã®ã‚¹ã‚¿ãƒƒã‚¯é ˜åŸŸ
     357非タスクコンテキスト用のスタック領域
    381358#
    382359$kernelCfgC.comment_header("Stack Area for Non-task Context")
    383360
    384361if $cfgData[:DEF_ICS].size == 0
    385   # DEF_ICSがない場合のデフォルト値の設定
     362  # DEF_ICSがない場合のデフォルト値の設定
    386363  if $DEFAULT_ISTK.nil?
    387     # スタック領域の自動割付け
     364    # スタック領域の自動割付け
    388365    istksz = AllocStack("_kernel_istack", "DEFAULT_ISTKSZ")
    389366    istk = "_kernel_istack"
     
    393370  end
    394371else
    395   # 静的API「DEF_ICS」が複数ある(E_OBJ)[NGKI3216ï¼½
     372  # 静的API「DEF_ICS」が複数ある(E_OBJ)[NGKI3216]
    396373  if $cfgData[:DEF_ICS].size > 1
    397374    error("E_OBJ: too many DEF_ICS")
    398375  end
    399376
    400   # DEF_ICSがある場合の処理
     377  # DEF_ICSがある場合の処理
    401378  params = $cfgData[:DEF_ICS][1]
    402379
    403   # パラメータが省略された時のデフォルト値の設定
     380  # パラメータが省略された時のデフォルト値の設定
    404381  params[:istk] ||= "NULL"
    405382
    406   # istkszがターゲット定義の最小値(TARGET_MIN_ISTKSZ,未定義の場合は1)
    407   # よりも小さい場合(E_PAR)[NGKI3254ï¼½
     383  # istkszがターゲット定義の最小値(TARGET_MIN_ISTKSZ,未定義の場合は1)
     384  # よりも小さい場合(E_PAR)[NGKI3254]
    408385  if params[:istksz] < $TARGET_MIN_ISTKSZ
    409386    error_wrong("E_PAR", params, :istksz, "too small")
     
    411388
    412389  if params[:istk] == "NULL"
    413     # スタック領域の自動割付け
     390    # スタック領域の自動割付け
    414391    istksz = AllocStack("_kernel_istack", params[:istksz])
    415392    istk = "_kernel_istack"
    416393  else
    417     # istkszがスタック領域のサイズとして正しくない場合(E_PAR)[NGKI3222ï¼½
     394    # istkszがスタック領域のサイズとして正しくない場合(E_PAR)[NGKI3222]
    418395    if (params[:istksz] & ($CHECK_STKSZ_ALIGN - 1)) != 0
    419396      error_wrong("E_PAR", params, :istksz, "not aligned")
     
    435412
    436413#
    437 ã‚«ãƒ¼ãƒãƒ«ãŒå‰²ã‚Šä»˜ã‘るメモリ領域
     414カーネルが割り付けるメモリ領域
    438415#
    439416$kernelCfgC.comment_header("Memory Area Allocated by Kernel")
    440417
    441418if $cfgData[:DEF_KMM].size == 0
    442   # DEF_KMMがない場合のデフォルト値の設定
     419  # DEF_KMMがない場合のデフォルト値の設定
    443420  kmmsz = "0"
    444421  kmm = "NULL"
    445422else
    446   # 静的API「DEF_KMM」が複数ある(E_OBJ)
     423  # 静的API「DEF_KMM」が複数ある(E_OBJ)
    447424  if ($cfgData[:DEF_KMM].size > 1)
    448425    error("E_OBJ: too many DEF_KMM")
    449426  end
    450427
    451   # DEF_KMMがある場合の処理
     428  # DEF_KMMがある場合の処理
    452429  params = $cfgData[:DEF_KMM][1]
    453430
    454   # パラメータが省略された時のデフォルト値の設定
     431  # パラメータが省略された時のデフォルト値の設定
    455432  params[:kmm] ||= "NULL"
    456433
    457   # kmmszが0の場合(E_PAR)
     434  # kmmszが0の場合(E_PAR)
    458435  if params[:kmmsz] == 0
    459436    error_wrong("E_PAR", params, :kmmsz, "zero")
     
    461438
    462439  if params[:kmm] == "NULL"
    463     # カーネルが割り付けるメモリ領域の自動割付け
     440    # カーネルが割り付けるメモリ領域の自動割付け
    464441    $kernelCfgC.add("static MB_T _kernel_memory" \
    465442                                        "[TOPPERS_COUNT_SZ(#{params[:kmmsz]}, sizeof(MB_T))];")
     
    467444    kmm = "_kernel_memory"
    468445  else
    469     # kmmszがカーネルが割り付けるメモリ領域のサイズとして正しくない場合
    470     # (E_PAR)
     446    # kmmszがカーネルが割り付けるメモリ領域のサイズとして正しくない場合
     447    # (E_PAR)
    471448    if (params[:kmmsz] & ($CHECK_MB_ALIGN - 1)) != 0
    472449      error_wrong("E_PAR", params, :kmmsz, "not aligned")
     
    484461
    485462#
    486 ã‚¿ã‚¤ãƒ ã‚¤ãƒ™ãƒ³ãƒˆç®¡ç†
     463タイムイベント管理
    487464#
    488465$kernelCfgC.comment_header("Time Event Management")
     
    492469
    493470#
    494 å„モジュールの初期化関数
     471各モジュールの初期化関数
    495472#
    496473$kernelCfgC.comment_header("Module Initialization Function")
     
    506483
    507484#
    508 åˆæœŸåŒ–ルーチン機能
     485初期化ルーチン機能
    509486#
    510487$kernelCfgC.comment_header("Initialization Routine")
    511488
    512 # エラーチェック
     489# エラーチェック
    513490$cfgData[:ATT_INI].each do |key, params|
    514   # iniatrが無効の場合(E_RSATR)[NGKI3241ï¼½
    515   #(TA_NULLでない場合)
     491  # iniatrが無効の場合(E_RSATR)[NGKI3241]
     492  #(TA_NULLでない場合)
    516493  if (params[:iniatr] != $TA_NULL)
    517494    error_illegal_sym("E_RSATR", params, :iniatr, :inirtn)
     
    519496end
    520497
    521 # 初期化ルーチンの実行関数の生成
     498# 初期化ルーチンの実行関数の生成
    522499$kernelCfgC.append(<<EOS)
    523500void
     
    532509
    533510#
    534 çµ‚了処理ルーチン機能
     511終了処理ルーチン機能
    535512#
    536513$kernelCfgC.comment_header("Termination Routine")
    537514
    538 # エラーチェック
     515# エラーチェック
    539516$cfgData[:ATT_TER].each do |key, params|
    540   # teratrが無効の場合(E_RSATR)[NGKI3248ï¼½
    541   #(TA_NULLでない場合)
     517  # teratrが無効の場合(E_RSATR)[NGKI3248]
     518  #(TA_NULLでない場合)
    542519  if (params[:teratr] != $TA_NULL)
    543520    error_illegal_sym("E_RSATR", params, :teratr, :terrtn)
     
    545522end
    546523
    547 # 終了処理ルーチンの実行関数の生成
     524# 終了処理ルーチンの実行関数の生成
    548525$kernelCfgC.append(<<EOS)
    549526void
     
    558535
    559536#
    560 #  kernel_cfg.hの末尾部分の生成
     537#  kernel_cfg.hの末尾部分の生成
    561538#
    562539$kernelCfgH.append(<<EOS)
  • asp3_gr_sakura/trunk/kernel/kernel_api.def

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/plain to text/plain; charset=UTF-8
  • asp3_gr_sakura/trunk/kernel/kernel_check.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     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#       免責すること.
    4733
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
    54 #
    55 #   $Id: kernel_check.trb 662 2016-02-27 02:33:51Z ertl-hiro $
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
     39#
     40#   $Id$
    5641
    5742
    5843#
    59 #               ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚¿ã®ãƒ‘ス3の生成スクリプト
    60 #
    61 
    62 #
    63 ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ファイルの指定
     44#               コンフィギュレータのパス3の生成スクリプト
     45#
     46
     47#
     48タイムスタンプファイルの指定
    6449#
    6550$timeStampFileName = "check.timestamp"
    6651
    6752#
    68 ãƒ‡ãƒ¼ã‚¿ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®LMAからVMAへのコピー
     53データセクションのLMAからVMAへのコピー
    6954#
    7055if !$lmaList.nil?
     
    8671
    8772#
    88 #  通知æƒ
    89 å ±ã®ãƒã‚§ãƒƒã‚¯é–¢æ•°
     73#  通知情報のチェック関数
    9074#
    9175$tmax_tskid = $TMIN_TSKID + $cfgData[:CRE_TSK].size - 1
     
    9579
    9680def checkNotifyHandler(key, params, objid, exinf, nfyhdr)
    97   # パラメータを変数に格納
     81  # パラメータを変数に格納
    9882  nfymode = params[:nfymode]
    9983  nfymode1 = nfymode & 0x0f
     
    10387  funcname = "_kernel_nfyhdr_#{params[objid]}"
    10488
    105   # 通知処理のパラメータ数による補正処理
     89  # 通知処理のパラメータ数による補正処理
    10690  if nfymode1 == $TNFY_SETVAR || nfymode1 == $TNFY_SETFLG \
    10791                                                                || nfymode1 == $TNFY_SNDDTQ
    108     # 通知処理のパラメータが2つの場合
     92    # 通知処理のパラメータが2つの場合
    10993    epar1 = params[:par3]
    11094    epar2 = params[:par4]
    11195  else
    112     # 通知処理のパラメータが1つの場合
     96    # 通知処理のパラメータが1つの場合
    11397    epar1 = params[:par2]
    11498    epar2 = params[:par3]
    11599  end
    116100
    117   #     ã‚¿ã‚¤ãƒ ã‚¤ãƒ™ãƒ³ãƒˆãƒãƒ³ãƒ‰ãƒ©ã®å
    118 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI3693ï¼½
     101  #     タイムイベントハンドラの先頭番地のチェック[NGKI3693]
    119102  if nfymode == $TNFY_HANDLER
    120103    tmehdr = nfyhdr
     
    129112  end
    130113
    131   #     ã‚¤ãƒ™ãƒ³ãƒˆé€šçŸ¥å‡¦ç†ã®å¤‰æ•°ã®ç•ªåœ°ã¨ã‚ªãƒ–ジェクトIDのチェック
     114  #     イベント通知処理の変数の番地とオブジェクトIDのチェック
    132115  if nfymode1 == $TNFY_SETVAR || nfymode1 == $TNFY_INCVAR
    133     # 変数の設定/インクリメントによるタイムイベントの通知
     116    # 変数の設定/インクリメントによるタイムイベントの通知
    134117        p_var = exinf
    135118    params1 = params.dup
    136119    params1[:p_var] = par1
    137120
    138     # 変数の番地のチェック[NGKI3699][NGKI3897ï¼½
     121    # 変数の番地のチェック[NGKI3699][NGKI3897]
    139122    if (p_var & ($CHECK_INTPTR_ALIGN - 1)) != 0
    140123      error_wrong_id("E_PAR", params1, :p_var, objid, "not aligned")
     
    144127    end
    145128  elsif (nfymode1 == $TNFY_ACTTSK || nfymode1 == $TNFY_WUPTSK)
    146     # タスクの起動/起床によるタイムイベントの通知
     129    # タスクの起動/起床によるタイムイベントの通知
    147130    tskid = exinf
    148131    params1 = params.dup
    149132    params1[:tskid] = par1
    150133
    151     # タスクIDのチェック[NGKI3704ï¼½
     134    # タスクIDのチェック[NGKI3704]
    152135    if !($TMIN_TSKID <= tskid && tskid <= $tmax_tskid)
    153136      error_illegal_id("E_ID", params1, :tskid, objid)
    154137    end
    155138  elsif nfymode1 == $TNFY_SIGSEM
    156     # セマフォの資源の返却によるタイムイベントの通知
     139    # セマフォの資源の返却によるタイムイベントの通知
    157140    semid = exinf
    158141    params1 = params.dup
    159142    params1[:semid] = par1
    160143
    161     # セマフォIDのチェック[NGKI3707ï¼½
     144    # セマフォIDのチェック[NGKI3707]
    162145    if !($TMIN_SEMID <= semid && semid <= $tmax_semid)
    163146      error_illegal_id("E_ID", params1, :semid, objid)
    164147    end
    165148  elsif nfymode1 == $TNFY_SETFLG
    166     # イベントフラグのセットによるタイムイベントの通知
     149    # イベントフラグのセットによるタイムイベントの通知
    167150    flgid = exinf
    168151    params1 = params.dup
    169152    params1[:flgid] = par1
    170153
    171     # イベントフラグIDのチェック[NGKI3710ï¼½
     154    # イベントフラグIDのチェック[NGKI3710]
    172155    if !($TMIN_FLGID <= flgid && flgid <= $tmax_flgid)
    173156      error_illegal_id("E_ID", params1, :flgid, objid)
    174157    end
    175158  elsif nfymode1 == $TNFY_SNDDTQ
    176     # データキューへの送信によるタイムイベントの通知
     159    # データキューへの送信によるタイムイベントの通知
    177160    dtqid = exinf
    178161    params1 = params.dup
    179162    params1[:dtqid] = par1
    180163
    181     # データキューIDのチェック[NGKI3713ï¼½
     164    # データキューIDのチェック[NGKI3713]
    182165    if !($TMIN_DTQID <= dtqid && dtqid <= $tmax_dtqid)
    183166      error_illegal_id("E_ID", params1, :dtqid, objid)
     
    185168  end
    186169
    187   # エラー通知処理の変数の番地とオブジェクトIDのチェック
     170  # エラー通知処理の変数の番地とオブジェクトIDのチェック
    188171  if (nfymode2 == $TENFY_SETVAR || nfymode2 == $TENFY_INCVAR)
    189     # 変数の設定/インクリメントによるエラーの通知
     172    # 変数の設定/インクリメントによるエラーの通知
    190173    p_var = PEEK(SYMBOL(funcname + "_p_evar"), $sizeof_intptr_t)
    191174    params1 = params.dup
    192175    params1[:p_var] = epar1
    193176
    194     # 変数の番地のチェック[NGKI3701][NGKI3897ï¼½
     177    # 変数の番地のチェック[NGKI3701][NGKI3897]
    195178    if (p_var & ($CHECK_INTPTR_ALIGN - 1)) != 0
    196179      error_wrong_id("E_PAR", params1, :p_var, objid, "not aligned")
     
    200183    end
    201184  elsif nfymode2 == $TENFY_ACTTSK || nfymode2 == $TENFY_WUPTSK
    202     # タスクの起動/起床によるエラーの通知
     185    # タスクの起動/起床によるエラーの通知
    203186    tskid = PEEK(SYMBOL(funcname + "_etskid"), $sizeof_ID)
    204187    params1 = params.dup
    205188    params1[:tskid] = epar1
    206189
    207     # タスクIDのチェック[NGKI3704ï¼½
     190    # タスクIDのチェック[NGKI3704]
    208191    if !($TMIN_TSKID <= tskid && tskid <= $tmax_tskid)
    209192      error_illegal_id("E_ID", params1, :tskid, objid)
    210193    end
    211194  elsif nfymode2 == $TENFY_SIGSEM
    212     # セマフォの資源の返却によるエラーの通知
     195    # セマフォの資源の返却によるエラーの通知
    213196        semid = PEEK(SYMBOL(funcname + "_esemid"), $sizeof_ID)
    214197    params1 = params.dup
    215198    params1[:semid] = epar1
    216199
    217     # セマフォIDのチェック[NGKI3707ï¼½
     200    # セマフォIDのチェック[NGKI3707]
    218201    if !($TMIN_SEMID <= semid && semid <= $tmax_semid)
    219202      error_illegal_id("E_ID", params1, :semid, objid)
    220203    end
    221204  elsif nfymode2 == $TENFY_SETFLG
    222     # イベントフラグのセットによるエラーの通知
     205    # イベントフラグのセットによるエラーの通知
    223206    flgid = PEEK(SYMBOL(funcname + "_eflgid"), $sizeof_ID)
    224207    params1 = params.dup
    225208    params1[:flgid] = epar1
    226209
    227     # イベントフラグIDのチェック[NGKI3710ï¼½
     210    # イベントフラグIDのチェック[NGKI3710]
    228211    if !($TMIN_FLGID <= flgid && flgid <= $tmax_flgid)
    229212      error_illegal_id("E_ID", params1, :flgid, objid)
    230213    end
    231214  elsif nfymode2 == $TENFY_SNDDTQ
    232     # データキューへの送信によるエラーの通知
     215    # データキューへの送信によるエラーの通知
    233216    dtqid = PEEK(SYMBOL(funcname + "_edtqid"), $sizeof_ID)
    234217    params1 = params.dup
    235218    params1[:dtqid] = epar1
    236219
    237     # データキューIDのチェック[NGKI3715ï¼½
     220    # データキューIDのチェック[NGKI3715]
    238221    if !($TMIN_DTQID <= dtqid && dtqid <= $tmax_dtqid)
    239222      error_illegal_id("E_ID", params1, :dtqid, objid)
     
    243226
    244227#
    245 ã‚¿ã‚¹ã‚¯ã«é–¢ã™ã‚‹ãƒã‚§ãƒƒã‚¯
     228タスクに関するチェック
    246229#
    247230tinib = SYMBOL("_kernel_tinib_table")
     
    249232  task = PEEK(tinib + $offsetof_TINIB_task, $sizeof_TASK)
    250233
    251   # タスクのå
    252 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI1033ï¼½
     234  # タスクの先頭番地のチェック[NGKI1033]
    253235  if (task & ($CHECK_FUNC_ALIGN - 1)) != 0
    254236    error_wrong_id("E_PAR", params, :task, :tskid, "not aligned")
     
    258240  end
    259241
    260   # タスクのスタック領域のå
    261 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI1056ï¼½
     242  # タスクのスタック領域の先頭番地のチェック[NGKI1056]
    262243  if $USE_TSKINICTXB
    263244    stk = GetStackTskinictxb(key, params, tinib)
     
    276257
    277258#
    278 å›ºå®šé•·ãƒ¡ãƒ¢ãƒªãƒ—ールに関するチェック
     259固定長メモリプールに関するチェック
    279260#
    280261mpfinib = SYMBOL("_kernel_mpfinib_table")
     
    282263  mpf = PEEK(mpfinib + $offsetof_MPFINIB_mpf, $sizeof_void_ptr)
    283264
    284   # 固定長メモリプール領域のå
    285 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI2249ï¼½
     265  # 固定長メモリプール領域の先頭番地のチェック[NGKI2249]
    286266  if (mpf & ($CHECK_MPF_ALIGN - 1)) != 0
    287267    error_wrong_id("E_PAR", params, :mpf, :mpfid, "not aligned")
     
    295275
    296276#
    297 å‘¨æœŸé€šçŸ¥ã«é–¢ã™ã‚‹ãƒã‚§ãƒƒã‚¯
     277周期通知に関するチェック
    298278#
    299279cycinib = SYMBOL("_kernel_cycinib_table")
     
    302282  nfyhdr = PEEK(cycinib + $offsetof_CYCINIB_nfyhdr, $sizeof_NFYHDR)
    303283
    304   #     é€šçŸ¥æƒ
    305 å ±ã®ãƒã‚§ãƒƒã‚¯
     284  #     通知情報のチェック
    306285  checkNotifyHandler(key, params, :cycid, exinf, nfyhdr)
    307286
     
    310289
    311290#
    312 ã‚¢ãƒ©ãƒ¼ãƒ é€šçŸ¥ã«é–¢ã™ã‚‹ãƒã‚§ãƒƒã‚¯
     291アラーム通知に関するチェック
    313292#
    314293alminib = SYMBOL("_kernel_alminib_table")
     
    317296  nfyhdr = PEEK(alminib + $offsetof_ALMINIB_nfyhdr, $sizeof_NFYHDR)
    318297
    319   #     é€šçŸ¥æƒ
    320 å ±ã®ãƒã‚§ãƒƒã‚¯
     298  #     通知情報のチェック
    321299  checkNotifyHandler(key, params, :almid, exinf, nfyhdr)
    322300
     
    325303
    326304#
    327 ã‚ªãƒ¼ãƒãƒ©ãƒ³ãƒãƒ³ãƒ‰ãƒ©ã«é–¢ã™ã‚‹ãƒã‚§ãƒƒã‚¯
     305オーバランハンドラに関するチェック
    328306#
    329307ovrinib = SYMBOL("_kernel_ovrinib")
     
    331309  ovrhdr = PEEK(ovrinib + $offsetof_OVRINIB_ovrhdr, $sizeof_OVRHDR)
    332310
    333   # オーバランハンドラのå
    334 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI2613ï¼½
     311  # オーバランハンドラの先頭番地のチェック[NGKI2613]
    335312  if (ovrhdr & ($CHECK_FUNC_ALIGN - 1)) != 0
    336313    error_wrong("E_PAR", $cfgData[:DEF_OVR][1], :ovrhdr, "not aligned")
     
    342319
    343320#
    344 å‰²è¾¼ã¿ã‚µãƒ¼ãƒ“スルーチンに関するチェック
     321割込みサービスルーチンに関するチェック
    345322#
    346323isrinib = SYMBOL("_kernel_isrinib_table")
     
    348325  isr = PEEK(isrinib + $offsetof_ISRINIB_isr, $sizeof_ISR)
    349326
    350   # 割込みサービスルーチンのå
    351 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI3004ï¼½
     327  # 割込みサービスルーチンの先頭番地のチェック[NGKI3004]
    352328  if (isr & ($CHECK_FUNC_ALIGN - 1)) != 0
    353329    error_wrong_id("E_PAR", params, :isr, :isrid, "not aligned")
     
    361337
    362338#
    363 éžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆç”¨ã®ã‚¹ã‚¿ãƒƒã‚¯é ˜åŸŸã«é–¢ã™ã‚‹ãƒã‚§ãƒƒã‚¯
     339非タスクコンテキスト用のスタック領域に関するチェック
    364340#
    365341istkAddr = SYMBOL("_kernel_istk")
     
    367343  istk = PEEK(istkAddr, $sizeof_void_ptr)
    368344
    369   # 非タスクコンテキスト用のスタック領域のå
    370 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI3222ï¼½
     345  # 非タスクコンテキスト用のスタック領域の先頭番地のチェック[NGKI3222]
    371346  if (istk & ($CHECK_STACK_ALIGN - 1)) != 0
    372347    error_wrong("E_PAR", $cfgData[:DEF_ICS][1], :istk, "not aligned")
     
    378353
    379354#
    380 ã‚«ãƒ¼ãƒãƒ«ãŒå‰²ã‚Šä»˜ã‘るメモリ領域に関するチェック
     355カーネルが割り付けるメモリ領域に関するチェック
    381356#
    382357kmmAddr = SYMBOL("_kernel_kmm")
     
    384359  kmm = PEEK(kmmAddr, $sizeof_void_ptr)
    385360
    386   # カーネルが割り付けるメモリ領域のå
    387 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯
     361  # カーネルが割り付けるメモリ領域の先頭番地のチェック
    388362  if (kmm & ($CHECK_MB_ALIGN - 1)) != 0
    389363    error_wrong("E_PAR", $cfgData[:DEF_KMM][1], :kmm, "not aligned")
  • asp3_gr_sakura/trunk/kernel/kernel_impl.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
    47  *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     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 *      免責すること.
     33 *
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              TOPPERS/ASPカーネルå†
    60 éƒ¨å‘け標準ヘッダファイル
    61  *
    62  *  このヘッダファイルは,カーネルを構成するプログラムのソースファイル
    63  *  でå¿
    64 ãšã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã™ã‚‹ã¹ãæ¨™æº–ヘッダファイルである.
    65  *
    66  *  アセンブリ言語のソースファイルからこのファイルをインクルードする時
    67  *  は,TOPPERS_MACRO_ONLYを定義しておく.これにより,マクロ定義以外を
    68  *  除くようになっている.
     44 *              TOPPERS/ASPカーネル内部向け標準ヘッダファイル
     45 *
     46 *  このヘッダファイルは,カーネルを構成するプログラムのソースファイル
     47 *  で必ずインクルードするべき標準ヘッダファイルである.
     48 *
     49 *  アセンブリ言語のソースファイルからこのファイルをインクルードする時
     50 *  は,TOPPERS_MACRO_ONLYを定義しておく.これにより,マクロ定義以外を
     51 *  除くようになっている.
    6952 */
    7053
     
    7356
    7457/*
    75  *  カーネルのå†
    76 éƒ¨è­˜åˆ¥åã®ãƒªãƒãƒ¼ãƒ 
     58 *  カーネルの内部識別名のリネーム
    7759 */
    7860#include "kernel_rename.h"
    7961
    8062/*
    81  *  アプリケーションとå
    82 ±é€šã®ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«
     63 *  アプリケーションと共通のヘッダファイル
    8364 */
    8465#include <kernel.h>
    8566
    8667/*
    87  *  システムログ機能のための定義
     68 *  システムログ機能のための定義
    8869 */
    8970#include <t_syslog.h>
    9071
    9172/*
    92  *  ターゲット依存æƒ
    93 å ±ã®å®šç¾©
     73 *  ターゲット依存情報の定義
    9474 */
    9575#include "target_kernel_impl.h"
    9676
    9777/*
    98  *  すべての関数をコンパイルするための定義
     78 *  すべての関数をコンパイルするための定義
    9979 */
    10080#ifdef ALLFUNC
     
    10383
    10484/*
    105  *  ビットフィールドでの符号無し整数型
    106  *
    107  *  8ビット以下のå¹
    108 ã®ãƒ“ットフィールドで,符号無し整数値を保持したい場合
    109  *  に用いるべきデータ型.ANSI Cでは,ビットフィールドのデータ型には
    110  *  intとunsigned intしか許されないため,デフォルトの定義はunsigned
    111  *  intとしているが,ターゲットおよびツール依存で,unsigned charまたは
    112  *  unsigned shortに定義した方が効率が良い場合がある.
     85 *  ビットフィールドでの符号無し整数型
     86 *
     87 *  8ビット以下の幅のビットフィールドで,符号無し整数値を保持したい場合
     88 *  に用いるべきデータ型.ANSI Cでは,ビットフィールドのデータ型には
     89 *  intとunsigned intしか許されないため,デフォルトの定義はunsigned
     90 *  intとしているが,ターゲットおよびツール依存で,unsigned charまたは
     91 *  unsigned shortに定義した方が効率が良い場合がある.
    11392 */
    11493#ifndef BIT_FIELD_UINT
     
    11796
    11897/*
    119  *  ビットフィールドでのブール型
    120  *
    121  *  1ビットå¹
    122 ã®ãƒ“ットフィールドで,ブール値を保持したい場合に用いるべき
    123  *  データ型.デフォルトではBIT_FIELD_UINTと同一に定義しているが,ブー
    124  *  ル値を保持することを明示するために別の名称としている.
     98 *  ビットフィールドでのブール型
     99 *
     100 *  1ビット幅のビットフィールドで,ブール値を保持したい場合に用いるべき
     101 *  データ型.デフォルトではBIT_FIELD_UINTと同一に定義しているが,ブー
     102 *  ル値を保持することを明示するために別の名称としている.
    125103 */
    126104#ifndef BIT_FIELD_BOOL
     
    129107
    130108/*
    131  *  オブジェクトIDの最小値の定義
    132  */
    133 #define TMIN_TSKID              1               /* タスクIDの最小値 */
    134 #define TMIN_SEMID              1               /* セマフォIDの最小値 */
    135 #define TMIN_FLGID              1               /* フラグIDの最小値 */
    136 #define TMIN_DTQID              1               /* データキューIDの最小値 */
    137 #define TMIN_PDQID              1               /* 優å
    138 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼IDの最小値 */
    139 #define TMIN_MTXID              1               /* ミューテックスIDの最小値 */
    140 #define TMIN_MPFID              1               /* 固定長メモリプールIDの最小値 */
    141 #define TMIN_CYCID              1               /* 周期通知IDの最小値 */
    142 #define TMIN_ALMID              1               /* アラーム通知IDの最小値 */
    143 #define TMIN_ISRID              1               /* 割込みサービスルーチンIDの最小値 */
    144 
    145 /*
    146  *  優å
    147 ˆåº¦ã®æ®µéšŽæ•°ã®å®šç¾©
     109 *  オブジェクトIDの最小値の定義
     110 */
     111#define TMIN_TSKID              1               /* タスクIDの最小値 */
     112#define TMIN_SEMID              1               /* セマフォIDの最小値 */
     113#define TMIN_FLGID              1               /* フラグIDの最小値 */
     114#define TMIN_DTQID              1               /* データキューIDの最小値 */
     115#define TMIN_PDQID              1               /* 優先度データキューIDの最小値 */
     116#define TMIN_MTXID              1               /* ミューテックスIDの最小値 */
     117#define TMIN_MPFID              1               /* 固定長メモリプールIDの最小値 */
     118#define TMIN_CYCID              1               /* 周期通知IDの最小値 */
     119#define TMIN_ALMID              1               /* アラーム通知IDの最小値 */
     120#define TMIN_ISRID              1               /* 割込みサービスルーチンIDの最小値 */
     121
     122/*
     123 *  優先度の段階数の定義
    148124 */
    149125#define TNUM_TPRI               (TMAX_TPRI - TMIN_TPRI + 1)
     
    152128
    153129/*
    154  *  カーネルå†
    155 éƒ¨ã§ä½¿ç”¨ã™ã‚‹å±žæ€§ã®å®šç¾©
    156  */
    157 #define TA_NOEXS                ((ATR)(-1))                     /* 未登録状æ
    158 ‹ */
     130 *  カーネル内部で使用する属性の定義
     131 */
     132#define TA_NOEXS                ((ATR)(-1))                     /* 未登録状態 */
    159133
    160134#ifndef TA_MEMALLOC
    161 #define TA_MEMALLOC             UINT_C(0x8000)          /* メモリ領域をカーネルで確保 */
     135#define TA_MEMALLOC             UINT_C(0x8000)          /* メモリ領域をカーネルで確保 */
    162136#endif /* TA_MEMALLOC */
    163137#ifndef TA_MBALLOC
    164 #define TA_MBALLOC              UINT_C(0x4000)          /* 管理領域をカーネルで確保 */
     138#define TA_MBALLOC              UINT_C(0x4000)          /* 管理領域をカーネルで確保 */
    165139#endif /* TA_MBALLOC */
    166140
    167141/*
    168  *  ターゲット定義のエラーチェックマクロのデフォルト値の定義
     142 *  ターゲット定義のエラーチェックマクロのデフォルト値の定義
    169143 */
    170144#ifndef TARGET_TSKATR
    171 #define TARGET_TSKATR           0U              /* ターゲット定義のタスク属性 */
     145#define TARGET_TSKATR           0U              /* ターゲット定義のタスク属性 */
    172146#endif /* TARGET_TSKATR */
    173147
    174148#ifndef TARGET_ISRATR
    175 #define TARGET_ISRATR           0U              /* ターゲット定義のISR属性 */
     149#define TARGET_ISRATR           0U              /* ターゲット定義のISR属性 */
    176150#endif /* TARGET_ISRATR */
    177151
    178152/*
    179  *  ヘッダファイルを持たないモジュールの関数・変数の宣言
     153 *  ヘッダファイルを持たないモジュールの関数・変数の宣言
    180154 */
    181155#ifndef TOPPERS_MACRO_ONLY
    182156
    183157/*
    184  *  TECSの初期化(init_tecs.c)
     158 *  TECSの初期化(init_tecs.c)
    185159 */
    186160extern void initialize_tecs(void);
    187161
    188162/*
    189  *  各モジュールの初期化(kernel_cfg.c)
     163 *  各モジュールの初期化(kernel_cfg.c)
    190164 */
    191165extern void     initialize_object(void);
    192166
    193167/*
    194  *  初期化ルーチンの実行(kernel_cfg.c)
     168 *  初期化ルーチンの実行(kernel_cfg.c)
    195169 */
    196170extern void     call_inirtn(void);
    197171
    198172/*
    199  *  終了処理ルーチンの実行(kernel_cfg.c)
     173 *  終了処理ルーチンの実行(kernel_cfg.c)
    200174 */
    201175extern void     call_terrtn(void);
    202176
    203177/*
    204  *  非タスクコンテキスト用のスタック領域(kernel_cfg.c)
    205  */
    206 extern const size_t     istksz;         /* スタック領域のサイズ(丸めた値) */
    207 extern STK_T *const     istk;           /* スタック領域のå
    208 ˆé ­ç•ªåœ° */
     178 *  非タスクコンテキスト用のスタック領域(kernel_cfg.c)
     179 */
     180extern const size_t     istksz;         /* スタック領域のサイズ(丸めた値) */
     181extern STK_T *const     istk;           /* スタック領域の先頭番地 */
    209182#ifdef TOPPERS_ISTKPT
    210 extern STK_T *const     istkpt;         /* スタックポインタの初期値 */
     183extern STK_T *const     istkpt;         /* スタックポインタの初期値 */
    211184#endif /* TOPPERS_ISTKPT */
    212185
    213186/*
    214  *  カーネルが割り付けるメモリ領域(kernel_cfg.c)
    215  */
    216 extern const size_t     kmmsz;          /* カーネルが割り付けるメモリ領域のサイズ */
    217 extern MB_T *const      kmm;            /* カーネルが割り付けるメモリ領域のå
    218 ˆé ­ç•ªåœ° */
    219 
    220 /*
    221  *  カーネル動作状æ
    222 ‹ãƒ•ãƒ©ã‚°ï¼ˆstartup.c)
     187 *  カーネルが割り付けるメモリ領域(kernel_cfg.c)
     188 */
     189extern const size_t     kmmsz;          /* カーネルが割り付けるメモリ領域のサイズ */
     190extern MB_T *const      kmm;            /* カーネルが割り付けるメモリ領域の先頭番地 */
     191
     192/*
     193 *  カーネル動作状態フラグ(startup.c)
    223194 */
    224195extern bool_t   kerflg;
    225196
    226197/*
    227  *  カーネルの起動(startup.c)
     198 *  カーネルの起動(startup.c)
    228199 */
    229200extern void     sta_ker(void);
    230201
    231202/*
    232  *  カーネルの終了処理(startup.c)
     203 *  カーネルの終了処理(startup.c)
    233204 */
    234205extern void     exit_kernel(void);
    235206
    236207/*
    237  *  カーネルの割り付けるメモリ領域の管理(startup.c)
     208 *  カーネルの割り付けるメモリ領域の管理(startup.c)
    238209 */
    239210extern void initialize_kmm(void);
     
    242213
    243214/*
    244  *  通知ハンドラの型定義
     215 *  通知ハンドラの型定義
    245216 */
    246217typedef void    (*NFYHDR)(intptr_t exinf);
    247218
    248219/*
    249  *  通知方法のエラーチェック
     220 *  通知方法のエラーチェック
    250221 */
    251222extern ER check_nfyinfo(const T_NFYINFO *p_nfyinfo);
    252223
    253224/*
    254  *  通知ハンドラ
     225 *  通知ハンドラ
    255226 */
    256227extern void notify_handler(intptr_t exinf);
  • asp3_gr_sakura/trunk/kernel/kernel_int.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              kernel_cfg.c(およびcfg1_out.c)用ヘッダファイル
     44 *              kernel_cfg.c(およびcfg1_out.c)用ヘッダファイル
    6045 */
    6146
     
    6449
    6550/*
    66  *  カーネル標準ヘッダファイル
     51 *  カーネル標準ヘッダファイル
    6752 */
    6853#include "kernel_impl.h"
    6954
    7055/*
    71  *  カーネルの各ヘッダファイル
     56 *  カーネルの各ヘッダファイル
    7257 */
    7358#include "task.h"
     
    8671
    8772/*
    88  *  リネームしたシンボルをå
    89 ƒã«æˆ»ã™ãŸã‚ã®ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«
     73 *  リネームしたシンボルを元に戻すためのヘッダファイル
    9074 */
    9175#include "kernel_unrename.h"
    9276
    9377/*
    94  *  å†
    95 å®¹ãŒç©ºã®é
    96 åˆ—を生成するためのマクロ
     78 *  内容が空の配列を生成するためのマクロ
    9779 */
    9880#ifndef TOPPERS_EMPTY_LABEL
  • asp3_gr_sakura/trunk/kernel/kernel_rename.def

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/plain to text/plain; charset=UTF-8
  • asp3_gr_sakura/trunk/kernel/kernel_rename.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
  • asp3_gr_sakura/trunk/kernel/kernel_sym.def

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/plain to text/plain; charset=UTF-8
  • asp3_gr_sakura/trunk/kernel/kernel_unrename.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
  • asp3_gr_sakura/trunk/kernel/mempfix.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              固定長メモリプール機能
     44 *              固定長メモリプール機能
    6045 */
    6146
     
    6752
    6853/*
    69  *  トレースログマクロのデフォルト定義
     54 *  トレースログマクロのデフォルト定義
    7055 */
    7156#ifndef LOG_ACRE_MPF_ENTER
     
    134119
    135120/*
    136  *  固定長メモリプールの数
     121 *  固定長メモリプールの数
    137122 */
    138123#define tnum_mpf        ((uint_t)(tmax_mpfid - TMIN_MPFID + 1))
     
    140125
    141126/*
    142  *  固定長メモリプールIDから固定長メモリプール管理ブロックを取り出すた
    143  *  めのマクロ
     127 *  固定長メモリプールIDから固定長メモリプール管理ブロックを取り出すた
     128 *  めのマクロ
    144129 */
    145130#define INDEX_MPF(mpfid)        ((uint_t)((mpfid) - TMIN_MPFID))
     
    147132
    148133/*
    149  *  特殊なインデックス値の定義
    150  */
    151 #define INDEX_NULL              (~0U)           /* 空きブロックリストの最後 */
    152 #define INDEX_ALLOC             (~1U)           /* 割当て済みのブロック */
     134 *  特殊なインデックス値の定義
     135 */
     136#define INDEX_NULL              (~0U)           /* 空きブロックリストの最後 */
     137#define INDEX_ALLOC             (~1U)           /* 割当て済みのブロック */
    153138
    154139#ifdef TOPPERS_mpfini
    155140
    156141/*
    157  *  使用していない固定長メモリプール管理ブロックのリスト
     142 *  使用していない固定長メモリプール管理ブロックのリスト
    158143 */
    159144QUEUE   free_mpfcb;
    160145
    161146/*
    162  *  固定長メモリプール機能の初期化
     147 *  固定長メモリプール機能の初期化
    163148 */
    164149void
     
    190175
    191176/*
    192  *  固定長メモリプールからブロックを獲得
     177 *  固定長メモリプールからブロックを獲得
    193178 */
    194179#ifdef TOPPERS_mpfget
     
    216201
    217202/*
    218  *  固定長メモリプールの生成
     203 *  固定長メモリプールの生成
    219204 */
    220205#ifdef TOPPERS_acre_mpf
     
    301286
    302287/*
    303  *  固定長メモリプールの削除
     288 *  固定長メモリプールの削除
    304289 */
    305290#ifdef TOPPERS_del_mpf
     
    350335
    351336/*
    352  *  固定長メモリブロックの獲得
     337 *  固定長メモリブロックの獲得
    353338 */
    354339#ifdef TOPPERS_get_mpf
     
    396381
    397382/*
    398  *  固定長メモリブロックの獲得(ポーリング)
     383 *  固定長メモリブロックの獲得(ポーリング)
    399384 */
    400385#ifdef TOPPERS_pget_mpf
     
    432417
    433418/*
    434  *  固定長メモリブロックの獲得(タイムアウトあり)
     419 *  固定長メモリブロックの獲得(タイムアウトあり)
    435420 */
    436421#ifdef TOPPERS_tget_mpf
     
    484469
    485470/*
    486  *  固定長メモリブロックの返却
     471 *  固定長メモリブロックの返却
    487472 */
    488473#ifdef TOPPERS_rel_mpf
     
    542527
    543528/*
    544  *  固定長メモリプールの再初期化
     529 *  固定長メモリプールの再初期化
    545530 */
    546531#ifdef TOPPERS_ini_mpf
     
    581566
    582567/*
    583  *  固定長メモリプールの状æ
    584 ‹å‚ç
    585 §
     568 *  固定長メモリプールの状態参照
    586569 */
    587570#ifdef TOPPERS_ref_mpf
  • asp3_gr_sakura/trunk/kernel/mempfix.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              固定長メモリプール機能
     44 *              固定長メモリプール機能
    6045 */
    6146
     
    6853
    6954/*
    70  *  固定長メモリブロック管理ブロック
     55 *  固定長メモリブロック管理ブロック
    7156 *
    72  *  nextフィールドには,メモリブロックが割当て済みの場合はINDEX_ALLOCを,
    73  *  未割当ての場合は次の未割当てブロックのインデックス番号を格納する.
    74  *  最後の未割当てブロックの場合には,INDEX_NULLを格納する.
     57 *  nextフィールドには,メモリブロックが割当て済みの場合はINDEX_ALLOCを,
     58 *  未割当ての場合は次の未割当てブロックのインデックス番号を格納する.
     59 *  最後の未割当てブロックの場合には,INDEX_NULLを格納する.
    7560 */
    7661typedef struct fixed_memoryblock_management_block {
    77         uint_t          next;                   /* 次の未割当てブロック */
     62        uint_t          next;                   /* 次の未割当てブロック */
    7863} MPFMB;
    7964
    8065/*
    81  *  固定長メモリプール初期化ブロック
     66 *  固定長メモリプール初期化ブロック
    8267 *
    83  *  この構造体は,同期・通信オブジェクトの初期化ブロックのå
    84 ±é€šéƒ¨åˆ†
    85  *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
    86  *  最初のフィールドがå
    87 ±é€šã«ãªã£ã¦ã„る.
     68 *  この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分
     69 *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
     70 *  最初のフィールドが共通になっている.
    8871 */
    8972typedef struct fixed_memorypool_initialization_block {
    90         ATR                     mpfatr;                 /* 固定長メモリプール属性 */
    91         uint_t          blkcnt;                 /* メモリブロック数 */
    92         uint_t          blksz;                  /* メモリブロックのサイズ(丸めた値) */
    93         void            *mpf;                   /* 固定長メモリプール領域のå
    94 ˆé ­ç•ªåœ° */
    95         MPFMB           *p_mpfmb;               /* 固定長メモリプール管理領域のå
    96 ˆé ­ç•ªåœ° */
     73        ATR                     mpfatr;                 /* 固定長メモリプール属性 */
     74        uint_t          blkcnt;                 /* メモリブロック数 */
     75        uint_t          blksz;                  /* メモリブロックのサイズ(丸めた値) */
     76        void            *mpf;                   /* 固定長メモリプール領域の先頭番地 */
     77        MPFMB           *p_mpfmb;               /* 固定長メモリプール管理領域の先頭番地 */
    9778} MPFINIB;
    9879
    9980/*
    100  *  固定長メモリプール管理ブロック
     81 *  固定長メモリプール管理ブロック
    10182 *
    102  *  この構造体は,同期・通信オブジェクトの管理ブロックのå
    103 ±é€šéƒ¨åˆ†ï¼ˆWOBJCB)
    104  *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
    105  *  フィールドがå
    106 ±é€šã«ãªã£ã¦ã„る.
     83 *  この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB)
     84 *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
     85 *  フィールドが共通になっている.
    10786 */
    10887typedef struct fixed_memorypool_control_block {
    109         QUEUE           wait_queue;             /* 固定長メモリプールå¾
    110 ã¡ã‚­ãƒ¥ãƒ¼ */
    111         const MPFINIB *p_mpfinib;       /* 初期化ブロックへのポインタ */
    112         uint_t          fblkcnt;                /* 未割当てブロック数 */
    113         uint_t          unused;                 /* 未使用ブロックのå
    114 ˆé ­ */
    115         uint_t          freelist;               /* 未割当てブロックのリスト */
     88        QUEUE           wait_queue;             /* 固定長メモリプール待ちキュー */
     89        const MPFINIB *p_mpfinib;       /* 初期化ブロックへのポインタ */
     90        uint_t          fblkcnt;                /* 未割当てブロック数 */
     91        uint_t          unused;                 /* 未使用ブロックの先頭 */
     92        uint_t          freelist;               /* 未割当てブロックのリスト */
    11693} MPFCB;
    11794
    11895/*
    119  *  固定長メモリプールå¾
    120 ã¡æƒ
    121 å ±ãƒ–ロックの定義
     96 *  固定長メモリプール待ち情報ブロックの定義
    12297 *
    123  *  この構造体は,同期・通信オブジェクトのå¾
    124 ã¡æƒ
    125 å ±ãƒ–ロックのå
    126 ±é€šéƒ¨åˆ†
    127  *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
    128  *  最初の2つのフィールドがå
    129 ±é€šã«ãªã£ã¦ã„る.
     98 *  この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分
     99 *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
     100 *  最初の2つのフィールドが共通になっている.
    130101 */
    131102typedef struct fixed_memorypool_waiting_information {
    132         WINFO           winfo;                  /* 標準のå¾
    133 ã¡æƒ
    134 å ±ãƒ–ロック */
    135         MPFCB           *p_mpfcb;               /* å¾
    136 ã£ã¦ã„る固定長メモリプールの管理ブロック*/
    137         void            *blk;                   /* 獲得したメモリブロック */
     103        WINFO           winfo;                  /* 標準の待ち情報ブロック */
     104        MPFCB           *p_mpfcb;               /* 待っている固定長メモリプールの管理ブロック*/
     105        void            *blk;                   /* 獲得したメモリブロック */
    138106} WINFO_MPF;
    139107
    140108/*
    141  *  使用していない固定長メモリプール管理ブロックのリスト
     109 *  使用していない固定長メモリプール管理ブロックのリスト
    142110 */
    143111extern QUEUE    free_mpfcb;
    144112
    145113/*
    146  *  固定長メモリプールIDの最大値(kernel_cfg.c)
     114 *  固定長メモリプールIDの最大値(kernel_cfg.c)
    147115 */
    148116extern const ID tmax_mpfid;
     
    150118
    151119/*
    152  *  固定長メモリプール初期化ブロックのエリア(kernel_cfg.c)
     120 *  固定長メモリプール初期化ブロックのエリア(kernel_cfg.c)
    153121 */
    154122extern const MPFINIB    mpfinib_table[];
     
    156124
    157125/*
    158  *  固定長メモリプール管理ブロックのエリア(kernel_cfg.c)
     126 *  固定長メモリプール管理ブロックのエリア(kernel_cfg.c)
    159127 */
    160128extern MPFCB    mpfcb_table[];
    161129
    162130/*
    163  *  固定長メモリプール管理ブロックから固定長メモリプールIDを取り出すた
    164  *  めのマクロ
     131 *  固定長メモリプール管理ブロックから固定長メモリプールIDを取り出すた
     132 *  めのマクロ
    165133 */
    166134#define MPFID(p_mpfcb)  ((ID)(((p_mpfcb) - mpfcb_table) + TMIN_MPFID))
    167135
    168136/*
    169  *  固定長メモリプール機能の初期化
     137 *  固定長メモリプール機能の初期化
    170138 */
    171139extern void     initialize_mempfix(void);
    172140
    173141/*
    174  *  固定長メモリプールからブロックを獲得
     142 *  固定長メモリプールからブロックを獲得
    175143 */
    176144extern void     get_mpf_block(MPFCB *p_mpfcb, void **p_blk);
  • asp3_gr_sakura/trunk/kernel/mempfix.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010#
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     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#       免責すること.
    4733#
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
    5439#
    55 #   $Id: mempfix.trb 672 2016-03-05 15:33:08Z ertl-hiro $
     40#   $Id$
    5641#
    5742
    5843#
    59 #               å›ºå®šé•·ãƒ¡ãƒ¢ãƒªãƒ—ール機能の生成スクリプト
     44#               固定長メモリプール機能の生成スクリプト
    6045#
    6146
     
    6651
    6752  def prepare(key, params)
    68     # パラメータが省略された時のデフォルト値の設定
     53    # パラメータが省略された時のデフォルト値の設定
    6954    params[:mpf] ||= "NULL"
    7055    params[:mpfmb] ||= "NULL"
    7156
    72     # mpfatrが無効の場合(E_RSATR)[NGKI2225ï¼½
    73     #(TA_TPRI以外のビットがセットされている場合)
     57    # mpfatrが無効の場合(E_RSATR)[NGKI2225]
     58    #(TA_TPRI以外のビットがセットされている場合)
    7459    if (params[:mpfatr] & ~($TA_TPRI)) != 0
    7560      error_illegal_id("E_RSATR", params, :mpfatr, :mpfid)
    7661    end
    7762
    78     # blkcntが0の場合(E_PAR)[NGKI2229ï¼½
     63    # blkcntが0の場合(E_PAR)[NGKI2229]
    7964    if params[:blkcnt] == 0
    8065      error_illegal_id("E_PAR", params, :blkcnt, :mpfid)
    8166    end
    8267
    83     # blkszが0の場合(E_PAR)[NGKI2230ï¼½
     68    # blkszが0の場合(E_PAR)[NGKI2230]
    8469    if params[:blksz] == 0
    8570      error_illegal_id("E_PAR", params, :blksz, :mpfid)
    8671    end
    8772
    88     # 固定長メモリプール領域
     73    # 固定長メモリプール領域
    8974    if params[:mpf] == "NULL"
    9075      mpfName = "_kernel_mpf_#{params[:mpfid]}"
     
    9681    end
    9782
    98     # mpfmbがNULLでない場合(E_NOSPT)[ASPS0166ï¼½
     83    # mpfmbがNULLでない場合(E_NOSPT)[ASPS0166]
    9984    if params[:mpfmb] != "NULL"
    10085      error_illegal_id("E_NOSPT", params, :mpfmb, :mpfid)
    10186    end
    10287
    103     # 固定長メモリプール管理領域
     88    # 固定長メモリプール管理領域
    10489    mpfmbName = "_kernel_mpfmb_#{params[:mpfid]}"
    10590    $kernelCfgC.add("static MPFMB #{mpfmbName}[#{params[:blkcnt]}];")
     
    115100
    116101#
    117 #  固定長メモリプールに関するæƒ
    118 å ±ã®ç”Ÿæˆ
     102#  固定長メモリプールに関する情報の生成
    119103#
    120104$kernelCfgC.comment_header("Fixed-sized Memorypool Functions")
  • asp3_gr_sakura/trunk/kernel/mutex.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
    9  *  上記著作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    12  *  変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    16  *      スコード中に含まれていること.
    17  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18  *      用できる形で再é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21  *      è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23  *      の無保証規定を掲載すること.
    24  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25  *      用できない形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27  *      と.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *    (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35  *        報告すること.
    36  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37  *      害からも,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    41  *      由に基づく請求からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43  *      å
    44 è²¬ã™ã‚‹ã“と.
     9 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
    4531 *
    46  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    47 ãŠ
    48  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    50  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    51  *  の責任を負わない.
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    5237 *
    5338 *  $Id$
     
    5540
    5641/*
    57  *              ミューテックス機能
     42 *              ミューテックス機能
    5843 */
    5944
     
    6651
    6752/*
    68  *  トレースログマクロのデフォルト定義
     53 *  トレースログマクロのデフォルト定義
    6954 */
    7055#ifndef LOG_ACRE_MTX_ENTER
     
    133118
    134119/*
    135  *  ミューテックスの数
     120 *  ミューテックスの数
    136121 */
    137122#define tnum_mtx        ((uint_t)(tmax_mtxid - TMIN_MTXID + 1))
     
    139124
    140125/*
    141  *  ミューテックスIDからミューテックス管理ブロックを取り出すためのマクロ
     126 *  ミューテックスIDからミューテックス管理ブロックを取り出すためのマクロ
    142127 */
    143128#define INDEX_MTX(mtxid)        ((uint_t)((mtxid) - TMIN_MTXID))
     
    145130
    146131/*
    147  *  ミューテックスのプロトコルを判断するマクロ
     132 *  ミューテックスのプロトコルを判断するマクロ
    148133 */
    149134#define MTXPROTO_MASK                   0x03U
     
    154139
    155140/*
    156  *  使用していないミューテックス管理ブロックのリスト
     141 *  使用していないミューテックス管理ブロックのリスト
    157142 */
    158143QUEUE   free_mtxcb;
    159144
    160145/*
    161  *  ミューテックス機能の初期化
     146 *  ミューテックス機能の初期化
    162147 */
    163148void
     
    191176
    192177/*
    193  *  上限優å
    194 ˆåº¦é•åã®ãƒã‚§ãƒƒã‚¯
     178 *  上限優先度違反のチェック
    195179 */
    196180#ifdef TOPPERS_mtxchk
     
    202186
    203187        /*
    204          *  タスクがロックしている優å
    205 ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã®ä¸­ã§ï¼Œä¸Šé™å„ªå
    206 ˆ
    207          *  度がbpriorityよりも低いものがあれば,falseを返す.
     188         *  タスクがロックしている優先度上限ミューテックスの中で,上限優先
     189         *  度がbpriorityよりも低いものがあれば,falseを返す.
    208190         */
    209191        p_mtxcb = p_tcb->p_lastmtx;
     
    216198
    217199        /*
    218          *  タスクが優å
    219 ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã®ãƒ­ãƒƒã‚¯ã‚’å¾
    220 ã£ã¦ã„る場合に,そ
    221          *  の上限優å
    222 ˆåº¦ãŒbpriorityよりも低くければ,falseを返す.
     200         *  タスクが優先度上限ミューテックスのロックを待っている場合に,そ
     201         *  の上限優先度がbpriorityよりも低くければ,falseを返す.
    223202         */
    224203        if (TSTAT_WAIT_MTX(p_tcb->tstat)) {
     
    230209
    231210        /*
    232          *  いずれの条件にも当てはまらなければtrueを返す.
     211         *  いずれの条件にも当てはまらなければtrueを返す.
    233212         */
    234213        return(true);
     
    238217
    239218/*
    240  *  優å
    241 ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’ロックしているかのチェック
     219 *  優先度上限ミューテックスをロックしているかのチェック
    242220 */
    243221#ifdef TOPPERS_mtxscan
     
    261239
    262240/*
    263  *  タスクの現在優å
    264 ˆåº¦ã®è¨ˆç®—
     241 *  タスクの現在優先度の計算
    265242 *
    266  *  p_tcbで指定されるタスクの現在優å
    267 ˆåº¦ï¼ˆã«è¨­å®šã™ã¹ãå€¤ï¼‰ã‚’計算する.
     243 *  p_tcbで指定されるタスクの現在優先度(に設定すべき値)を計算する.
    268244 */
    269245Inline uint_t
     
    285261
    286262/*
    287  *  ミューテックスを解放した場合の現在優å
    288 ˆåº¦å¤‰æ›´å‡¦ç†
     263 *  ミューテックスを解放した場合の現在優先度変更処理
    289264 */
    290265#ifdef TOPPERS_mtxdrop
     
    307282
    308283/*
    309  *  ミューテックスのロック
     284 *  ミューテックスのロック
    310285 */
    311286#ifdef TOPPERS_mtxacq
     
    326301
    327302/*
    328  *  ミューテックスのロック解除
     303 *  ミューテックスのロック解除
    329304 */
    330305#ifdef TOPPERS_mtxrel
     
    340315        else {
    341316                /*
    342                  *  ミューテックスå¾
    343 ã¡ã‚­ãƒ¥ãƒ¼ã®å
    344 ˆé ­ã‚¿ã‚¹ã‚¯ï¼ˆp_tcb)に,ミューテッ
    345                  *  クスをロックさせる.
     317                 *  ミューテックス待ちキューの先頭タスク(p_tcb)に,ミューテッ
     318                 *  クスをロックさせる.
    346319                 */
    347320                p_tcb = (TCB *) queue_delete_next(&(p_mtxcb->wait_queue));
     
    364337
    365338/*
    366  *  タスクがロックしているすべてのミューテックスのロック解除
     339 *  タスクがロックしているすべてのミューテックスのロック解除
    367340 */
    368341#ifdef TOPPERS_mtxrela
     
    382355
    383356/*
    384  *  ミューテックスの生成[NGKI2022ï¼½
     357 *  ミューテックスの生成[NGKI2022]
    385358 */
    386359#ifdef TOPPERS_acre_mtx
     
    396369
    397370        LOG_ACRE_MTX_ENTER(pk_cmtx);
    398         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI2023][NGKI2024ï¼½*/
     371        CHECK_TSKCTX_UNL();                                                     /*[NGKI2023][NGKI2024]*/
    399372
    400373        mtxatr = pk_cmtx->mtxatr;
     
    402375
    403376        if (mtxatr == TA_CEILING) {
    404                 CHECK_PAR(VALID_TPRI(ceilpri));                 /*ï¼»NGKI2037ï¼½*/
    405         }
    406         else {
    407                 CHECK_RSATR(mtxatr, TA_TPRI);                   /*ï¼»NGKI2025ï¼½*/
     377                CHECK_PAR(VALID_TPRI(ceilpri));                 /*[NGKI2037]*/
     378        }
     379        else {
     380                CHECK_RSATR(mtxatr, TA_TPRI);                   /*[NGKI2025]*/
    408381        }
    409382
    410383        lock_cpu();
    411384        if (tnum_mtx == 0 || queue_empty(&free_mtxcb)) {
    412                 ercd = E_NOID;                                                  /*ï¼»NGKI2031ï¼½*/
     385                ercd = E_NOID;                                                  /*[NGKI2031]*/
    413386        }
    414387        else {
     
    419392
    420393                queue_initialize(&(p_mtxcb->wait_queue));
    421                 p_mtxcb->p_loctsk = NULL;                               /*ï¼»NGKI2033ï¼½*/
     394                p_mtxcb->p_loctsk = NULL;                               /*[NGKI2033]*/
    422395                ercd = MTXID(p_mtxcb);
    423396        }
     
    432405
    433406/*
    434  *  ミューテックスの削除[NGKI2056ï¼½
     407 *  ミューテックスの削除[NGKI2056]
    435408 */
    436409#ifdef TOPPERS_del_mtx
     
    445418
    446419        LOG_DEL_MTX_ENTER(mtxid);
    447         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI2057][NGKI2058ï¼½*/
    448         CHECK_ID(VALID_MTXID(mtxid));                           /*ï¼»NGKI2059ï¼½*/
     420        CHECK_TSKCTX_UNL();                                                     /*[NGKI2057][NGKI2058]*/
     421        CHECK_ID(VALID_MTXID(mtxid));                           /*[NGKI2059]*/
    449422        p_mtxcb = get_mtxcb(mtxid);
    450423
    451424        lock_cpu();
    452425        if (p_mtxcb->p_mtxinib->mtxatr == TA_NOEXS) {
    453                 ercd = E_NOEXS;                                                 /*ï¼»NGKI2060ï¼½*/
     426                ercd = E_NOEXS;                                                 /*[NGKI2060]*/
    454427        }
    455428        else if (mtxid <= tmax_smtxid) {
    456                 ercd = E_OBJ;                                                   /*ï¼»NGKI2062ï¼½*/
    457         }
    458         else {
    459                 init_wait_queue(&(p_mtxcb->wait_queue));        /*ï¼»NGKI2065ï¼½*/
     429                ercd = E_OBJ;                                                   /*[NGKI2062]*/
     430        }
     431        else {
     432                init_wait_queue(&(p_mtxcb->wait_queue));        /*[NGKI2065]*/
    460433                p_loctsk = p_mtxcb->p_loctsk;
    461434                if (p_loctsk != NULL) {
    462435                        /*
    463                          *  p_loctskがロックしているミューテックスのリストから対象
    464                          *  ミュークスを削除し,å¿
    465 è¦ãªå ´åˆã«ã¯p_loctskの現在優å
    466 ˆåº¦
    467                          *  を変更する[NGKI2064].
     436                         *  p_loctskがロックしているミューテックスのリストから対象
     437                         *  ミュークスを削除し,必要な場合にはp_loctskの現在優先度
     438                         *  を変更する[NGKI2064].
    468439                         */
    469440                        pp_prevmtx = &(p_loctsk->p_lastmtx);
     
    478449                }
    479450                p_mtxinib = (MTXINIB *)(p_mtxcb->p_mtxinib);
    480                 p_mtxinib->mtxatr = TA_NOEXS;                                           /*ï¼»NGKI2063ï¼½*/
     451                p_mtxinib->mtxatr = TA_NOEXS;                                           /*[NGKI2063]*/
    481452                queue_insert_prev(&free_mtxcb, &(p_mtxcb->wait_queue));
    482453                if (p_runtsk != p_schedtsk) {
     
    495466
    496467/*
    497  *  ミューテックスのロック
     468 *  ミューテックスのロック
    498469 */
    499470#ifdef TOPPERS_loc_mtx
     
    525496                mutex_acquire(p_runtsk, p_mtxcb);
    526497                /*
    527                  *  優å
    528 ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’ロックした場合,p_runtskの優å
    529 ˆåº¦
    530                  *  が上がる可能性があるが,ディスパッチがå¿
    531 è¦ã«ãªã‚‹ã“とはない.
     498                 *  優先度上限ミューテックスをロックした場合,p_runtskの優先度
     499                 *  が上がる可能性があるが,ディスパッチが必要になることはない.
    532500                 */
    533501                assert(p_runtsk == p_schedtsk);
     
    553521
    554522/*
    555  *  ミューテックスのロック(ポーリング)
     523 *  ミューテックスのロック(ポーリング)
    556524 */
    557525#ifdef TOPPERS_ploc_mtx
     
    579547                mutex_acquire(p_runtsk, p_mtxcb);
    580548                /*
    581                  *  優å
    582 ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’ロックした場合,p_runtskの優å
    583 ˆåº¦
    584                  *  が上がる可能性があるが,ディスパッチがå¿
    585 è¦ã«ãªã‚‹ã“とはない.
     549                 *  優先度上限ミューテックスをロックした場合,p_runtskの優先度
     550                 *  が上がる可能性があるが,ディスパッチが必要になることはない.
    586551                 */
    587552                assert(p_runtsk == p_schedtsk);
     
    604569
    605570/*
    606  *  ミューテックスのロック(タイムアウトあり)
     571 *  ミューテックスのロック(タイムアウトあり)
    607572 */
    608573#ifdef TOPPERS_tloc_mtx
     
    636601                mutex_acquire(p_runtsk, p_mtxcb);
    637602                /*
    638                  *  優å
    639 ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’ロックした場合,p_runtskの優å
    640 ˆåº¦
    641                  *  が上がる可能性があるが,ディスパッチがå¿
    642 è¦ã«ãªã‚‹ã“とはない.
     603                 *  優先度上限ミューテックスをロックした場合,p_runtskの優先度
     604                 *  が上がる可能性があるが,ディスパッチが必要になることはない.
    643605                 */
    644606                assert(p_runtsk == p_schedtsk);
     
    668630
    669631/*
    670  *  ミューテックスのロック解除
     632 *  ミューテックスのロック解除
    671633 */
    672634#ifdef TOPPERS_unl_mtx
     
    709671
    710672/*
    711  *  ミューテックスの再初期化
     673 *  ミューテックスの再初期化
    712674 */
    713675#ifdef TOPPERS_ini_mtx
     
    759721
    760722/*
    761  *  ミューテックスの状æ
    762 ‹å‚ç
    763 §
     723 *  ミューテックスの状態参照
    764724 */
    765725#ifdef TOPPERS_ref_mtx
  • asp3_gr_sakura/trunk/kernel/mutex.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
    9  *  上記著作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    12  *  変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    16  *      スコード中に含まれていること.
    17  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18  *      用できる形で再é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21  *      è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23  *      の無保証規定を掲載すること.
    24  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25  *      用できない形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27  *      と.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *    (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35  *        報告すること.
    36  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37  *      害からも,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    41  *      由に基づく請求からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43  *      å
    44 è²¬ã™ã‚‹ã“と.
     9 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
    4531 *
    46  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    47 ãŠ
    48  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    50  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    51  *  の責任を負わない.
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    5237 *
    5338 *  $Id$
     
    5540
    5641/*
    57  *              ミューテックス機能
     42 *              ミューテックス機能
    5843 */
    5944
     
    6651
    6752/*
    68  *  ミューテックス初期化ブロック
     53 *  ミューテックス初期化ブロック
    6954 *
    70  *  この構造体は,同期・通信オブジェクトの初期化ブロックのå
    71 ±é€šéƒ¨åˆ†
    72  *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
    73  *  最初のフィールドがå
    74 ±é€šã«ãªã£ã¦ã„る.
     55 *  この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分
     56 *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
     57 *  最初のフィールドが共通になっている.
    7558 */
    7659typedef struct mutex_initialization_block {
    77         ATR                     mtxatr;                 /* ミューテックス属性 */
    78         uint_t          ceilpri;                /* ミューテックスの上限優å
    79 ˆåº¦ï¼ˆå†
    80 éƒ¨è¡¨ç¾ï¼‰*/
     60        ATR                     mtxatr;                 /* ミューテックス属性 */
     61        uint_t          ceilpri;                /* ミューテックスの上限優先度(内部表現)*/
    8162} MTXINIB;
    8263
    8364/*
    84  *  ミューテックス管理ブロック
     65 *  ミューテックス管理ブロック
    8566 *
    86  *  この構造体は,同期・通信オブジェクトの管理ブロックのå
    87 ±é€šéƒ¨åˆ†ï¼ˆWOBJCB)
    88  *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
    89  *  フィールドがå
    90 ±é€šã«ãªã£ã¦ã„る.
     67 *  この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB)
     68 *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
     69 *  フィールドが共通になっている.
    9170 */
    9271struct mutex_control_block {
    93         QUEUE           wait_queue;             /* ミューテックスå¾
    94 ã¡ã‚­ãƒ¥ãƒ¼ */
    95         const MTXINIB *p_mtxinib;       /* 初期化ブロックへのポインタ */
    96         TCB                     *p_loctsk;              /* ミューテックスをロックしているタスク */
    97         MTXCB           *p_prevmtx;             /* この前にロックしたミューテックス */
     72        QUEUE           wait_queue;             /* ミューテックス待ちキュー */
     73        const MTXINIB *p_mtxinib;       /* 初期化ブロックへのポインタ */
     74        TCB                     *p_loctsk;              /* ミューテックスをロックしているタスク */
     75        MTXCB           *p_prevmtx;             /* この前にロックしたミューテックス */
    9876};
    9977
    10078/*
    101  *  ミューテックスå¾
    102 ã¡æƒ
    103 å ±ãƒ–ロックの定義
     79 *  ミューテックス待ち情報ブロックの定義
    10480 *
    105  *  この構造体は,同期・通信オブジェクトのå¾
    106 ã¡æƒ
    107 å ±ãƒ–ロックのå
    108 ±é€šéƒ¨åˆ†
    109  *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
    110  *  すべてのフィールドがå
    111 ±é€šã«ãªã£ã¦ã„る.
     81 *  この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分
     82 *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
     83 *  すべてのフィールドが共通になっている.
    11284 */
    11385typedef struct mutex_waiting_information {
    114         WINFO   winfo;                  /* 標準のå¾
    115 ã¡æƒ
    116 å ±ãƒ–ロック */
    117         MTXCB   *p_mtxcb;               /* å¾
    118 ã£ã¦ã„るミューテックスの管理ブロック */
     86        WINFO   winfo;                  /* 標準の待ち情報ブロック */
     87        MTXCB   *p_mtxcb;               /* 待っているミューテックスの管理ブロック */
    11988} WINFO_MTX;
    12089
    12190/*
    122  *  使用していないミューテックス管理ブロックのリスト
     91 *  使用していないミューテックス管理ブロックのリスト
    12392 */
    12493extern QUEUE    free_mtxcb;
    12594
    12695/*
    127  *  ミューテックスIDの最大値(kernel_cfg.c)
     96 *  ミューテックスIDの最大値(kernel_cfg.c)
    12897 */
    12998extern const ID tmax_mtxid;
     
    131100
    132101/*
    133  *  ミューテックス初期化ブロックのエリア(kernel_cfg.c)
     102 *  ミューテックス初期化ブロックのエリア(kernel_cfg.c)
    134103 */
    135104extern const MTXINIB    mtxinib_table[];
     
    137106
    138107/*
    139  *  ミューテックス管理ブロックのエリア(kernel_cfg.c)
     108 *  ミューテックス管理ブロックのエリア(kernel_cfg.c)
    140109 */
    141110extern MTXCB    mtxcb_table[];
    142111
    143112/*
    144  *  ミューテックス管理ブロックからミューテックスIDを取り出すためのマクロ
     113 *  ミューテックス管理ブロックからミューテックスIDを取り出すためのマクロ
    145114 */
    146115#define MTXID(p_mtxcb)  ((ID)(((p_mtxcb) - mtxcb_table) + TMIN_MTXID))
    147116
    148117/*
    149  *  ミューテックス機能の初期化
     118 *  ミューテックス機能の初期化
    150119 */
    151120extern void     initialize_mutex(void);
    152121
    153122/*
    154  *  上限優å
    155 ˆåº¦é•åã®ãƒã‚§ãƒƒã‚¯
     123 *  上限優先度違反のチェック
    156124 *
    157  *  chg_priの中で上限優å
    158 ˆåº¦é•åã®ãƒã‚§ãƒƒã‚¯ã‚’行うために用いる関数であり,
    159  *  p_tcbで指定されるタスクがロックしている優å
    160 ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã¨ï¼Œ
    161  *  ロックをå¾
    162 ã£ã¦ã„る優å
    163 ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã®ä¸­ã§ï¼Œä¸Šé™å„ªå
    164 ˆåº¦ãŒ
    165  *  bpriorityよりも低いものがあればfalseを,そうでなければtrueを返す.
     125 *  chg_priの中で上限優先度違反のチェックを行うために用いる関数であり,
     126 *  p_tcbで指定されるタスクがロックしている優先度上限ミューテックスと,
     127 *  ロックを待っている優先度上限ミューテックスの中で,上限優先度が
     128 *  bpriorityよりも低いものがあればfalseを,そうでなければtrueを返す.
    166129 */
    167130extern bool_t   mutex_check_ceilpri(TCB *p_tcb, uint_t bpriority);
    168131
    169132/*
    170  *  優å
    171 ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’ロックしているかのチェック
     133 *  優先度上限ミューテックスをロックしているかのチェック
    172134 *
    173  *  p_tcbで指定されるタスクが優å
    174 ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’ロックしていれば
    175  *  true,そうでなければfalseを返す.
     135 *  p_tcbで指定されるタスクが優先度上限ミューテックスをロックしていれば
     136 *  true,そうでなければfalseを返す.
    176137 */
    177138extern bool_t   mutex_scan_ceilmtx(TCB *p_tcb);
    178139
    179140/*
    180  *  ミューテックスをロック解除した場合の現在優å
    181 ˆåº¦å¤‰æ›´å‡¦ç†
     141 *  ミューテックスをロック解除した場合の現在優先度変更処理
    182142 *
    183  *  p_tcbで指定されるタスクが,p_mtxcbで指定されるミューテックスをロッ
    184  *  ク解除した際の現在優å
    185 ˆåº¦å¤‰æ›´å‡¦ç†ã‚’行う.
     143 *  p_tcbで指定されるタスクが,p_mtxcbで指定されるミューテックスをロッ
     144 *  ク解除した際の現在優先度変更処理を行う.
    186145 */
    187146extern void     mutex_drop_priority(TCB *p_tcb, MTXCB *p_mtxcb);
    188147
    189148/*
    190  *  ミューテックスのロック
     149 *  ミューテックスのロック
    191150 *
    192  *  p_tcbで指定されるタスクに,p_mtxcbで指定されるミューテックスをロッ
    193  *  クさせる.
     151 *  p_tcbで指定されるタスクに,p_mtxcbで指定されるミューテックスをロッ
     152 *  クさせる.
    194153 */
    195154extern void     mutex_acquire(TCB *p_tcb, MTXCB *p_mtxcb);
    196155
    197156/*
    198  *  ミューテックスのロック解除
     157 *  ミューテックスのロック解除
    199158 *
    200  *  p_mtxcbで指定されるミューテックスをロック解除する.ロック解除した
    201  *  ミューテックスに,ロックå¾
    202 ã¡çŠ¶æ
    203 ‹ã®ã‚¿ã‚¹ã‚¯ãŒã‚る場合には,そのタスク
    204  *  にミューテックスをロックさせる.
     159 *  p_mtxcbで指定されるミューテックスをロック解除する.ロック解除した
     160 *  ミューテックスに,ロック待ち状態のタスクがある場合には,そのタスク
     161 *  にミューテックスをロックさせる.
    205162 */
    206163extern void     mutex_release(MTXCB *p_mtxcb);
    207164
    208165/*
    209  *  タスクがロックしているすべてのミューテックスのロック解除
     166 *  タスクがロックしているすべてのミューテックスのロック解除
    210167 *
    211  *  p_tcbで指定されるタスクに,それがロックしているすべてのミューテック
    212  *  スをロック解除させる.ロック解除したミューテックスに,ロックå¾
    213 ã¡çŠ¶
    214  *  æ
    215 ‹ã®ã‚¿ã‚¹ã‚¯ãŒã‚る場合には,そのタスクにミューテックスをロックさせる.
     168 *  p_tcbで指定されるタスクに,それがロックしているすべてのミューテック
     169 *  スをロック解除させる.ロック解除したミューテックスに,ロック待ち状
     170 *  態のタスクがある場合には,そのタスクにミューテックスをロックさせる.
    216171 *
    217  *  この関数は,タスクの終了時に使われるものであるため,p_tcbで指定され
    218  *  るタスクの優å
    219 ˆåº¦ã‚’変更する処理は行わない.ただし,この関数の中で他
    220  *  のタスクの優å
    221 ˆåº¦ãŒå¤‰åŒ–し,実行すべきタスクが変わることがある.その
    222  *  ため,この関数から戻った後に,ディスパッチがå¿
    223 è¦ã‹åˆ¤åˆ¥ã—て,å¿
    224 è¦ãª
    225  *  場合にはディスパッチを行わなければならない.
     172 *  この関数は,タスクの終了時に使われるものであるため,p_tcbで指定され
     173 *  るタスクの優先度を変更する処理は行わない.ただし,この関数の中で他
     174 *  のタスクの優先度が変化し,実行すべきタスクが変わることがある.その
     175 *  ため,この関数から戻った後に,ディスパッチが必要か判別して,必要な
     176 *  場合にはディスパッチを行わなければならない.
    226177 */
    227178extern void     mutex_release_all(TCB *p_tcb);
  • asp3_gr_sakura/trunk/kernel/mutex.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010#
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     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#       免責すること.
    4733#
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
    5439#
    55 #   $Id: mutex.trb 630 2016-02-14 11:30:17Z ertl-hiro $
     40#   $Id$
    5641#
    5742
    5843#
    59 #               ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹æ©Ÿèƒ½ã®ç”Ÿæˆã‚¹ã‚¯ãƒªãƒ—ト
     44#               ミューテックス機能の生成スクリプト
    6045#
    6146
     
    6651
    6752  def prepare(key, params)
    68     # mtxatrが無効の場合(E_RSATR)[NGKI2025ï¼½
    69     # (TA_NULL,TA_TPRI,TA_CEILINGのいずれでもない場合)
     53    # mtxatrが無効の場合(E_RSATR)[NGKI2025]
     54    # (TA_NULL,TA_TPRI,TA_CEILINGのいずれでもない場合)
    7055    if !(params[:mtxatr] == $TA_NULL || params[:mtxatr] == $TA_TPRI \
    7156                                                                                || params[:mtxatr] == $TA_CEILING)
     
    7459
    7560    if params[:mtxatr] == $TA_CEILING
    76       # 優å
    77 ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã®å ´åˆ
    78       # ceilpriが未指定の場合はエラーとする
     61      # 優先度上限ミューテックスの場合
     62      # ceilpriが未指定の場合はエラーとする
    7963      if params[:ceilpri].nil?
    8064        error_api(params, "ceilpri must be specified in %apiname of %mtxid")
    8165
    82       # (TMIN_TPRI <= ceilpri && ceilpri <= TMAX_TPRI)でない場合(E_PAR)
    83       # ï¼»NGKI2037ï¼½
     66      # (TMIN_TPRI <= ceilpri && ceilpri <= TMAX_TPRI)でない場合(E_PAR)
     67      # [NGKI2037]
    8468      elsif !($TMIN_TPRI <= params[:ceilpri] && params[:ceilpri] <= $TMAX_TPRI)
    8569        error_illegal_id("E_PAR", params, :ceilpri, :mtxid)
    8670      end
    8771    else
    88       # 優å
    89 ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã§ãªã„場合
    90       # ceilpriが指定されている場合は警告メッセージを出す
     72      # 優先度上限ミューテックスでない場合
     73      # ceilpriが指定されている場合は警告メッセージを出す
    9174      if !params[:ceilpri].nil?
    9275        warning_api(params, "%%ceilpri is ignored in %apiname of %mtxid")
     
    10285
    10386#
    104 #  ミューテックスに関するæƒ
    105 å ±ã®ç”Ÿæˆ
     87#  ミューテックスに関する情報の生成
    10688#
    10789$kernelCfgC.comment_header("Mutex Functions")
  • asp3_gr_sakura/trunk/kernel/overrun.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
    9  *  上記著作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    12  *  変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    16  *      スコード中に含まれていること.
    17  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18  *      用できる形で再é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21  *      è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23  *      の無保証規定を掲載すること.
    24  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25  *      用できない形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27  *      と.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *    (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35  *        報告すること.
    36  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37  *      害からも,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    41  *      由に基づく請求からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43  *      å
    44 è²¬ã™ã‚‹ã“と.
     9 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
    4531 *
    46  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    47 ãŠ
    48  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    50  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    51  *  の責任を負わない.
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    5237 *
    5338 *  $Id$
     
    5540
    5641/*
    57  *              オーバランハンドラ機能
     42 *              オーバランハンドラ機能
    5843 */
    5944
     
    6752
    6853/*
    69  *  トレースログマクロのデフォルト定義
     54 *  トレースログマクロのデフォルト定義
    7055 */
    7156#ifndef LOG_OVR_ENTER
     
    10489
    10590/*
    106  *  オーバランタイマが動作中かを示すフラグ
     91 *  オーバランタイマが動作中かを示すフラグ
    10792 */
    10893bool_t  ovrtimer_flag;
    10994
    11095/*
    111  *  オーバランハンドラ機能の初期化
     96 *  オーバランハンドラ機能の初期化
    11297 */
    11398void
     
    120105
    121106/*
    122  *  オーバランハンドラ用タイマの動作開始
     107 *  オーバランハンドラ用タイマの動作開始
    123108 */
    124109#ifdef TOPPERS_ovrsta
     
    138123
    139124/*
    140  *  オーバランハンドラ用タイマの停止
     125 *  オーバランハンドラ用タイマの停止
    141126 */
    142127#ifdef TOPPERS_ovrstp
     
    157142
    158143/*
    159  *  オーバランハンドラの動作開始
     144 *  オーバランハンドラの動作開始
    160145 */
    161146#ifdef TOPPERS_sta_ovr
     
    200185
    201186/*
    202  *  オーバランハンドラの動作停止
     187 *  オーバランハンドラの動作停止
    203188 */
    204189#ifdef TOPPERS_stp_ovr
     
    240225
    241226/*
    242  *  オーバランハンドラの状æ
    243 ‹å‚ç
    244 §
     227 *  オーバランハンドラの状態参照
    245228 */
    246229#ifdef TOPPERS_ref_ovr
     
    287270
    288271/*
    289  *  オーバランハンドラ起動ルーチン
     272 *  オーバランハンドラ起動ルーチン
    290273 *
    291  *  オーバランハンドラの呼出し後に,呼出し前の状æ
    292 ‹ï¼ˆCPUロックフラグ,割
    293  *  込み優å
    294 ˆåº¦ãƒžã‚¹ã‚¯ï¼‰ã«æˆ»ã•ãªã„のは,このルーチンからのリターン後に,
    295  *  割込み出口処理でå
    296 ƒã®çŠ¶æ
    297 ‹ã«æˆ»ã™ãŸã‚ã§ã‚る.
     274 *  オーバランハンドラの呼出し後に,呼出し前の状態(CPUロックフラグ,割
     275 *  込み優先度マスク)に戻さないのは,このルーチンからのリターン後に,
     276 *  割込み出口処理で元の状態に戻すためである.
    298277 */
    299278#ifdef TOPPERS_ovrcal
     
    318297        else {
    319298                /*
    320                  *  このルーチンが呼び出される前に,オーバランハンドラの起動が
    321                  *  キャンセルされた場合
     299                 *  このルーチンが呼び出される前に,オーバランハンドラの起動が
     300                 *  キャンセルされた場合
    322301                 */
    323302                unlock_cpu();
  • asp3_gr_sakura/trunk/kernel/overrun.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
    9  *  上記著作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    12  *  変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    16  *      スコード中に含まれていること.
    17  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18  *      用できる形で再é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21  *      è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23  *      の無保証規定を掲載すること.
    24  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25  *      用できない形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27  *      と.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *    (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35  *        報告すること.
    36  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37  *      害からも,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    41  *      由に基づく請求からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43  *      å
    44 è²¬ã™ã‚‹ã“と.
     9 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
    4531 *
    46  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    47 ãŠ
    48  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    50  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    51  *  の責任を負わない.
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    5237 *
    5338 *  $Id$
     
    5540
    5641/*
    57  *              オーバランハンドラ機能
     42 *              オーバランハンドラ機能
    5843 */
    5944
     
    6550
    6651/*
    67  *  オーバランハンドラ初期化ブロック
     52 *  オーバランハンドラ初期化ブロック
    6853 */
    6954typedef struct overrun_handler_initialization_block {
    70         ATR                     ovratr;                 /* オーバランハンドラ属性 */
    71         OVRHDR          ovrhdr;                 /* オーバランハンドラの起動番地 */
     55        ATR                     ovratr;                 /* オーバランハンドラ属性 */
     56        OVRHDR          ovrhdr;                 /* オーバランハンドラの起動番地 */
    7257} OVRINIB;
    7358
    7459/*
    75  *  オーバランハンドラ初期化ブロックのエリア(kernel_cfg.c)
     60 *  オーバランハンドラ初期化ブロックのエリア(kernel_cfg.c)
    7661 */
    7762extern const OVRINIB    ovrinib[];
    7863
    7964/*
    80  *  オーバランタイマが動作中かを示すフラグ
     65 *  オーバランタイマが動作中かを示すフラグ
    8166 */
    8267extern bool_t   ovrtimer_flag;
    8368
    8469/*
    85  *  オーバランハンドラ機能の初期化
     70 *  オーバランハンドラ機能の初期化
    8671 */
    8772extern void     initialize_overrun(void);
    8873
    8974/*
    90  *  オーバランハンドラ用タイマの動作開始
     75 *  オーバランハンドラ用タイマの動作開始
    9176 */
    9277extern void     ovrtimer_start(void);
    9378
    9479/*
    95  *  オーバランハンドラ用タイマの停止
     80 *  オーバランハンドラ用タイマの停止
    9681 */
    9782extern void     ovrtimer_stop(uint_t int_num);
    9883
    9984/*
    100  *  オーバランハンドラ起動ルーチン
     85 *  オーバランハンドラ起動ルーチン
    10186 */
    10287extern void     call_ovrhdr(void);
  • asp3_gr_sakura/trunk/kernel/overrun.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     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#       免責すること.
    4733
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
    5439#
    55 #   $Id: overrun.trb 581 2016-02-04 06:23:23Z ertl-hiro $
     40#   $Id$
    5641
    5742
    5843#
    59 #               ã‚ªãƒ¼ãƒãƒ©ãƒ³ãƒãƒ³ãƒ‰ãƒ©æ©Ÿèƒ½ã®ç”Ÿæˆã‚¹ã‚¯ãƒªãƒ—ト
     44#               オーバランハンドラ機能の生成スクリプト
    6045#
    6146
    6247#
    63 ã‚ªãƒ¼ãƒãƒ©ãƒ³ãƒãƒ³ãƒ‰ãƒ©ãŒã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ない場合のエラーチェック
     48オーバランハンドラがサポートされていない場合のエラーチェック
    6449#
    6550if !$TOPPERS_SUPPORT_OVRHDR
     
    7055
    7156#
    72 #  オーバランハンドラ機能に関するæƒ
    73 å ±ã®ç”Ÿæˆ
     57#  オーバランハンドラ機能に関する情報の生成
    7458#
    7559$kernelCfgC.comment_header("Overrun Handler Functions")
    7660
    7761if $cfgData[:DEF_OVR].size() > 0
    78   # 静的API「DEF_OVR」が複数ある(E_OBJ)[NGKI2619ï¼½
     62  # 静的API「DEF_OVR」が複数ある(E_OBJ)[NGKI2619]
    7963  if $cfgData[:DEF_OVR].size() > 1
    8064    error("E_OBJ: too many DEF_OVR")
     
    8367  params = $cfgData[:DEF_OVR][1]
    8468
    85   # ovratrが無効の場合(E_RSATR)[NGKI2612ï¼½
    86   #(TA_NULLでない場合)
     69  # ovratrが無効の場合(E_RSATR)[NGKI2612]
     70  #(TA_NULLでない場合)
    8771  if params[:ovratr] != $TA_NULL
    8872    error_illegal("E_RSATR", params, :ovratr)
    8973  end
    9074
    91   #     ã‚ªãƒ¼ãƒãƒ©ãƒ³ãƒãƒ³ãƒ‰ãƒ©åˆæœŸåŒ–ブロックの生成
     75  #     オーバランハンドラ初期化ブロックの生成
    9276  $kernelCfgC.add("const OVRINIB _kernel_ovrinib[1] = {")
    9377  $kernelCfgC.add("\t{ (#{params[:ovratr]}), (OVRHDR)(#{params[:ovrhdr]}) }")
    9478  $kernelCfgC.add2("};")
    9579
    96   # オーバランハンドラ機能初期化関数の追加
     80  # オーバランハンドラ機能初期化関数の追加
    9781  $initializeFunctions.push("_kernel_initialize_overrun();")
    9882else
  • asp3_gr_sakura/trunk/kernel/pridataq.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              優å
    60 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼æ©Ÿèƒ½
     44 *              優先度データキュー機能
    6145 */
    6246
     
    6852
    6953/*
    70  *  トレースログマクロのデフォルト定義
     54 *  トレースログマクロのデフォルト定義
    7155 */
    7256#ifndef LOG_ACRE_PDQ_ENTER
     
    151135
    152136/*
    153  *  優å
    154 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®æ•°
     137 *  優先度データキューの数
    155138 */
    156139#define tnum_pdq        ((uint_t)(tmax_pdqid - TMIN_PDQID + 1))
     
    158141
    159142/*
    160  *  優å
    161 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼IDから優å
    162 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†ãƒ–ロックを取り出すた
    163  *  めのマクロ
     143 *  優先度データキューIDから優先度データキュー管理ブロックを取り出すた
     144 *  めのマクロ
    164145 */
    165146#define INDEX_PDQ(pdqid)        ((uint_t)((pdqid) - TMIN_PDQID))
     
    169150
    170151/*
    171  *  使用していない優å
    172 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†ãƒ–ロックのリスト
     152 *  使用していない優先度データキュー管理ブロックのリスト
    173153 */
    174154QUEUE   free_pdqcb;
    175155
    176156/*
    177  *  優å
    178 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼æ©Ÿèƒ½ã®åˆæœŸåŒ–
     157 *  優先度データキュー機能の初期化
    179158 */
    180159void
     
    208187
    209188/*
    210  *  優å
    211 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†é ˜åŸŸã¸ã®ãƒ‡ãƒ¼ã‚¿ã®æ ¼ç´
     189 *  優先度データキュー管理領域へのデータの格納
    212190 */
    213191#ifdef TOPPERS_pdqenq
     
    246224
    247225/*
    248  *  優å
    249 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†é ˜åŸŸã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿ã®å–出し
     226 *  優先度データキュー管理領域からのデータの取出し
    250227 */
    251228#ifdef TOPPERS_pdqdeq
     
    270247
    271248/*
    272  *  優å
    273 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®ãƒ‡ãƒ¼ã‚¿é€ä¿¡
     249 *  優先度データキューへのデータ送信
    274250 */
    275251#ifdef TOPPERS_pdqsnd
     
    299275
    300276/*
    301  *  優å
    302 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿å—ä¿¡
     277 *  優先度データキューからのデータ受信
    303278 */
    304279#ifdef TOPPERS_pdqrcv
     
    337312
    338313/*
    339  *  優å
    340 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®ç”Ÿæˆ
     314 *  優先度データキューの生成
    341315 */
    342316#ifdef TOPPERS_acre_pdq
     
    403377
    404378/*
    405  *  優å
    406 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®å‰Šé™¤
     379 *  優先度データキューの削除
    407380 */
    408381#ifdef TOPPERS_del_pdq
     
    451424
    452425/*
    453  *  優å
    454 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®é€ä¿¡
     426 *  優先度データキューへの送信
    455427 */
    456428#ifdef TOPPERS_snd_pdq
     
    503475
    504476/*
    505  *  優å
    506 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®é€ä¿¡ï¼ˆãƒãƒ¼ãƒªãƒ³ã‚°ï¼‰
     477 *  優先度データキューへの送信(ポーリング)
    507478 */
    508479#ifdef TOPPERS_psnd_pdq
     
    551522
    552523/*
    553  *  優å
    554 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®é€ä¿¡ï¼ˆã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã‚り)
     524 *  優先度データキューへの送信(タイムアウトあり)
    555525 */
    556526#ifdef TOPPERS_tsnd_pdq
     
    609579
    610580/*
    611  *  優å
    612 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã‹ã‚‰ã®å—ä¿¡
     581 *  優先度データキューからの受信
    613582 */
    614583#ifdef TOPPERS_rcv_pdq
     
    662631
    663632/*
    664  *  優å
    665 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã‹ã‚‰ã®å—信(ポーリング)
     633 *  優先度データキューからの受信(ポーリング)
    666634 */
    667635#ifdef TOPPERS_prcv_pdq
     
    701669
    702670/*
    703  *  優å
    704 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã‹ã‚‰ã®å—信(タイムアウトあり)
     671 *  優先度データキューからの受信(タイムアウトあり)
    705672 */
    706673#ifdef TOPPERS_trcv_pdq
     
    759726
    760727/*
    761  *  優å
    762 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®å†åˆæœŸåŒ–
     728 *  優先度データキューの再初期化
    763729 */
    764730#ifdef TOPPERS_ini_pdq
     
    801767
    802768/*
    803  *  優å
    804 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®çŠ¶æ
    805 ‹å‚ç
    806 §
     769 *  優先度データキューの状態参照
    807770 */
    808771#ifdef TOPPERS_ref_pdq
  • asp3_gr_sakura/trunk/kernel/pridataq.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              優å
    60 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼æ©Ÿèƒ½
     44 *              優先度データキュー機能
    6145 */
    6246
     
    6953
    7054/*
    71  *  優å
    72 ˆåº¦ãƒ‡ãƒ¼ã‚¿ç®¡ç†ãƒ–ロック
     55 *  優先度データ管理ブロック
    7356 */
    7457typedef struct pridata_management_block PDQMB;
    7558
    7659struct pridata_management_block {
    77         PDQMB           *p_next;                /* 次のデータ */
    78         intptr_t        data;                   /* データ本体 */
    79         PRI                     datapri;                /* データ優å
    80 ˆåº¦ */
     60        PDQMB           *p_next;                /* 次のデータ */
     61        intptr_t        data;                   /* データ本体 */
     62        PRI                     datapri;                /* データ優先度 */
    8163};
    8264
    8365/*
    84  *  優å
    85 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼åˆæœŸåŒ–ブロック
     66 *  優先度データキュー初期化ブロック
    8667 *
    87  *  この構造体は,同期・通信オブジェクトの初期化ブロックのå
    88 ±é€šéƒ¨åˆ†
    89  *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
    90  *  最初のフィールドがå
    91 ±é€šã«ãªã£ã¦ã„る.
     68 *  この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分
     69 *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
     70 *  最初のフィールドが共通になっている.
    9271 */
    9372typedef struct pridataq_initialization_block {
    94         ATR                     pdqatr;                 /* 優å
    95 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼å±žæ€§ */
    96         uint_t          pdqcnt;                 /* 優å
    97 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®å®¹é‡ */
    98         PRI                     maxdpri;                /* データ優å
    99 ˆåº¦ã®æœ€å¤§å€¤ */
    100         PDQMB           *p_pdqmb;               /* 優å
    101 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†é ˜åŸŸã®å
    102 ˆé ­ç•ªåœ° */
     73        ATR                     pdqatr;                 /* 優先度データキュー属性 */
     74        uint_t          pdqcnt;                 /* 優先度データキューの容量 */
     75        PRI                     maxdpri;                /* データ優先度の最大値 */
     76        PDQMB           *p_pdqmb;               /* 優先度データキュー管理領域の先頭番地 */
    10377} PDQINIB;
    10478
    10579/*
    106  *  優å
    107 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†ãƒ–ロック
     80 *  優先度データキュー管理ブロック
    10881 *
    109  *  この構造体は,同期・通信オブジェクトの管理ブロックのå
    110 ±é€šéƒ¨åˆ†ï¼ˆWOBJCB)
    111  *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
    112  *  フィールドがå
    113 ±é€šã«ãªã£ã¦ã„る.
     82 *  この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB)
     83 *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
     84 *  フィールドが共通になっている.
    11485 */
    11586typedef struct pridataq_control_block {
    116         QUEUE           swait_queue;    /* 優å
    117 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼é€ä¿¡å¾
    118 ã¡ã‚­ãƒ¥ãƒ¼ */
    119         const PDQINIB *p_pdqinib;       /* 初期化ブロックへのポインタ */
    120         QUEUE           rwait_queue;    /* 優å
    121 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼å—ä¿¡å¾
    122 ã¡ã‚­ãƒ¥ãƒ¼ */
    123         uint_t          count;                  /* 優å
    124 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ä¸­ã®ãƒ‡ãƒ¼ã‚¿ã®æ•° */
    125         PDQMB           *p_head;                /* 最初のデータ */
    126         uint_t          unused;                 /* 未使用データ管理ブロックのå
    127 ˆé ­ */
    128         PDQMB           *p_freelist;    /* 未割当てデータ管理ブロックのリスト */
     87        QUEUE           swait_queue;    /* 優先度データキュー送信待ちキュー */
     88        const PDQINIB *p_pdqinib;       /* 初期化ブロックへのポインタ */
     89        QUEUE           rwait_queue;    /* 優先度データキュー受信待ちキュー */
     90        uint_t          count;                  /* 優先度データキュー中のデータの数 */
     91        PDQMB           *p_head;                /* 最初のデータ */
     92        uint_t          unused;                 /* 未使用データ管理ブロックの先頭 */
     93        PDQMB           *p_freelist;    /* 未割当てデータ管理ブロックのリスト */
    12994} PDQCB;
    13095
    13196/*
    132  *  優å
    133 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼å¾
    134 ã¡æƒ
    135 å ±ãƒ–ロックの定義
     97 *  優先度データキュー待ち情報ブロックの定義
    13698 *
    137  *  この構造体は,同期・通信オブジェクトのå¾
    138 ã¡æƒ
    139 å ±ãƒ–ロックのå
    140 ±é€šéƒ¨åˆ†
    141  *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
    142  *  最初の2つのフィールドがå
    143 ±é€šã«ãªã£ã¦ã„る.
     99 *  この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分
     100 *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
     101 *  最初の2つのフィールドが共通になっている.
    144102 */
    145103typedef struct pridataq_send_waiting_information {
    146         WINFO           winfo;                  /* 標準のå¾
    147 ã¡æƒ
    148 å ±ãƒ–ロック */
    149         PDQCB           *p_pdqcb;               /* å¾
    150 ã£ã¦ã„る優å
    151 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®ç®¡ç†ãƒ–ロック*/
    152         intptr_t        data;                   /* 送信データ */
    153         PRI                     datapri;                /* データ優å
    154 ˆåº¦ */
     104        WINFO           winfo;                  /* 標準の待ち情報ブロック */
     105        PDQCB           *p_pdqcb;               /* 待っている優先度データキューの管理ブロック*/
     106        intptr_t        data;                   /* 送信データ */
     107        PRI                     datapri;                /* データ優先度 */
    155108} WINFO_SPDQ;
    156109
    157110typedef struct pridataq_receive_waiting_information {
    158         WINFO           winfo;                  /* 標準のå¾
    159 ã¡æƒ
    160 å ±ãƒ–ロック */
    161         PDQCB           *p_pdqcb;               /* å¾
    162 ã£ã¦ã„る優å
    163 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®ç®¡ç†ãƒ–ロック*/
    164         intptr_t        data;                   /* 受信データ */
    165         PRI                     datapri;                /* データ優å
    166 ˆåº¦ */
     111        WINFO           winfo;                  /* 標準の待ち情報ブロック */
     112        PDQCB           *p_pdqcb;               /* 待っている優先度データキューの管理ブロック*/
     113        intptr_t        data;                   /* 受信データ */
     114        PRI                     datapri;                /* データ優先度 */
    167115} WINFO_RPDQ;
    168116
    169117/*
    170  *  使用していない優å
    171 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†ãƒ–ロックのリスト
     118 *  使用していない優先度データキュー管理ブロックのリスト
    172119 */
    173120extern QUEUE    free_pdqcb;
    174121
    175122/*
    176  *  優å
    177 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼IDの最大値(kernel_cfg.c)
     123 *  優先度データキューIDの最大値(kernel_cfg.c)
    178124 */
    179125extern const ID tmax_pdqid;
     
    181127
    182128/*
    183  *  優å
    184 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼åˆæœŸåŒ–ブロックのエリア(kernel_cfg.c)
     129 *  優先度データキュー初期化ブロックのエリア(kernel_cfg.c)
    185130 */
    186131extern const PDQINIB    pdqinib_table[];
     
    188133
    189134/*
    190  *  優å
    191 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†ãƒ–ロックのエリア(kernel_cfg.c)
     135 *  優先度データキュー管理ブロックのエリア(kernel_cfg.c)
    192136 */
    193137extern PDQCB    pdqcb_table[];
    194138
    195139/*
    196  *  優å
    197 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†ãƒ–ロックから優å
    198 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼IDを取り出すた
    199  *  めのマクロ
     140 *  優先度データキュー管理ブロックから優先度データキューIDを取り出すた
     141 *  めのマクロ
    200142 */
    201143#define PDQID(p_pdqcb)  ((ID)(((p_pdqcb) - pdqcb_table) + TMIN_PDQID))
    202144
    203145/*
    204  *  優å
    205 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼æ©Ÿèƒ½ã®åˆæœŸåŒ–
     146 *  優先度データキュー機能の初期化
    206147 */
    207148extern void     initialize_pridataq(void);
    208149
    209150/*
    210  *  優å
    211 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†é ˜åŸŸã¸ã®ãƒ‡ãƒ¼ã‚¿ã®æ ¼ç´
     151 *  優先度データキュー管理領域へのデータの格納
    212152 */
    213153extern void     enqueue_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri);
    214154
    215155/*
    216  *  優å
    217 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†é ˜åŸŸã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿ã®å–出し
     156 *  優先度データキュー管理領域からのデータの取出し
    218157 */
    219158extern void     dequeue_pridata(PDQCB *p_pdqcb, intptr_t *p_data, PRI *p_datapri);
    220159
    221160/*
    222  *  優å
    223 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®ãƒ‡ãƒ¼ã‚¿é€ä¿¡
     161 *  優先度データキューへのデータ送信
    224162 */
    225163extern bool_t   send_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri);
    226164
    227165/*
    228  *  優å
    229 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿å—ä¿¡
     166 *  優先度データキューからのデータ受信
    230167 */
    231168extern bool_t   receive_pridata(PDQCB *p_pdqcb, intptr_t *p_data,
  • asp3_gr_sakura/trunk/kernel/pridataq.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010#
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     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#       免責すること.
    4733#
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
    5439#
    55 #   $Id: pridataq.trb 668 2016-03-03 13:57:53Z ertl-hiro $
     40#   $Id$
    5641#
    5742
    5843#
    59 #               å„ªå
    60 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼æ©Ÿèƒ½ã®ç”Ÿæˆã‚¹ã‚¯ãƒªãƒ—ト
     44#               優先度データキュー機能の生成スクリプト
    6145#
    6246
     
    6751
    6852  def prepare(key, params)
    69     # パラメータが省略された時のデフォルト値の設定
     53    # パラメータが省略された時のデフォルト値の設定
    7054    params[:pdqmb] ||= "NULL"
    7155
    72     # pdqatrが無効の場合(E_RSATR)[NGKI1804ï¼½
    73     #(TA_TPRI以外のビットがセットされている場合)
     56    # pdqatrが無効の場合(E_RSATR)[NGKI1804]
     57    #(TA_TPRI以外のビットがセットされている場合)
    7458    if (params[:pdqatr] & ~($TA_TPRI)) != 0
    7559      error_illegal_id("E_RSATR", params, :pdqatr, :pdqid)
    7660    end
    7761
    78     # (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)でない場合(E_PAR)
    79     # ï¼»NGKI1819ï¼½
     62    # (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)でない場合(E_PAR)
     63    # [NGKI1819]
    8064    if !($TMIN_DPRI <= params[:maxdpri] && params[:maxdpri] <= $TMAX_DPRI)
    8165      error_illegal_id("E_PAR", params, :maxdpri, :pdqid)
    8266    end
    8367
    84     # pdqmbがNULLでない場合(E_NOSPT)[ASPS0142ï¼½
     68    # pdqmbがNULLでない場合(E_NOSPT)[ASPS0142]
    8569    if params[:pdqmb] != "NULL"
    8670      error_illegal_id("E_NOSPT", params, :pdqmb, :pdqid)
    8771    end
    8872
    89     # 優å
    90 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†é ˜åŸŸ
     73    # 優先度データキュー管理領域
    9174    if params[:pdqcnt] > 0
    9275      pdqmbName = "_kernel_pdqmb_#{params[:pdqid]}"
     
    10588
    10689#
    107 #  優å
    108 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã«é–¢ã™ã‚‹æƒ
    109 å ±ã®ç”Ÿæˆ
     90#  優先度データキューに関する情報の生成
    11091#
    11192$kernelCfgC.comment_header("Priority Dataqueue Functions")
  • asp3_gr_sakura/trunk/kernel/semaphore.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              セマフォ機能
     44 *              セマフォ機能
    6045 */
    6146
     
    6752
    6853/*
    69  *  トレースログマクロのデフォルト定義
     54 *  トレースログマクロのデフォルト定義
    7055 */
    7156#ifndef LOG_ACRE_SEM_ENTER
     
    134119
    135120/*
    136  *  セマフォの数
     121 *  セマフォの数
    137122 */
    138123#define tnum_sem        ((uint_t)(tmax_semid - TMIN_SEMID + 1))
     
    140125
    141126/*
    142  *  セマフォIDからセマフォ管理ブロックを取り出すためのマクロ
     127 *  セマフォIDからセマフォ管理ブロックを取り出すためのマクロ
    143128 */
    144129#define INDEX_SEM(semid)        ((uint_t)((semid) - TMIN_SEMID))
     
    148133
    149134/*
    150  *  使用していないセマフォ管理ブロックのリスト
     135 *  使用していないセマフォ管理ブロックのリスト
    151136 */
    152137QUEUE   free_semcb;
    153138
    154139/*
    155  *  セマフォ機能の初期化
     140 *  セマフォ機能の初期化
    156141 */
    157142void
     
    181166
    182167/*
    183  *  セマフォの生成
     168 *  セマフォの生成
    184169 */
    185170#ifdef TOPPERS_acre_sem
     
    230215
    231216/*
    232  *  セマフォの削除
     217 *  セマフォの削除
    233218 */
    234219#ifdef TOPPERS_del_sem
     
    273258
    274259/*
    275  *  セマフォ資源の返却
     260 *  セマフォ資源の返却
    276261 */
    277262#ifdef TOPPERS_sig_sem
     
    323308
    324309/*
    325  *  セマフォ資源の獲得
     310 *  セマフォ資源の獲得
    326311 */
    327312#ifdef TOPPERS_wai_sem
     
    366351
    367352/*
    368  *  セマフォ資源の獲得(ポーリング)
     353 *  セマフォ資源の獲得(ポーリング)
    369354 */
    370355#ifdef TOPPERS_pol_sem
     
    402387
    403388/*
    404  *  セマフォ資源の獲得(タイムアウトあり)
     389 *  セマフォ資源の獲得(タイムアウトあり)
    405390 */
    406391#ifdef TOPPERS_twai_sem
     
    451436
    452437/*
    453  *  セマフォの再初期化
     438 *  セマフォの再初期化
    454439 */
    455440#ifdef TOPPERS_ini_sem
     
    488473
    489474/*
    490  *  セマフォの状æ
    491 ‹å‚ç
    492 §
     475 *  セマフォの状態参照
    493476 */
    494477#ifdef TOPPERS_ref_sem
  • asp3_gr_sakura/trunk/kernel/semaphore.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              セマフォ機能
     44 *              セマフォ機能
    6045 */
    6146
     
    6853
    6954/*
    70  *  セマフォ初期化ブロック
     55 *  セマフォ初期化ブロック
    7156 *
    72  *  この構造体は,同期・通信オブジェクトの初期化ブロックのå
    73 ±é€šéƒ¨åˆ†
    74  *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
    75  *  最初のフィールドがå
    76 ±é€šã«ãªã£ã¦ã„る.
     57 *  この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分
     58 *  (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので,
     59 *  最初のフィールドが共通になっている.
    7760 */
    7861typedef struct semaphore_initialization_block {
    79         ATR                     sematr;                 /* セマフォ属性 */
    80         uint_t          isemcnt;                /* セマフォの資源数の初期値 */
    81         uint_t          maxsem;                 /* セマフォの最大資源数 */
     62        ATR                     sematr;                 /* セマフォ属性 */
     63        uint_t          isemcnt;                /* セマフォの資源数の初期値 */
     64        uint_t          maxsem;                 /* セマフォの最大資源数 */
    8265} SEMINIB;
    8366
    8467/*
    85  *  セマフォ管理ブロック
     68 *  セマフォ管理ブロック
    8669 *
    87  *  この構造体は,同期・通信オブジェクトの管理ブロックのå
    88 ±é€šéƒ¨åˆ†ï¼ˆWOBJCB)
    89  *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
    90  *  フィールドがå
    91 ±é€šã«ãªã£ã¦ã„る.
     70 *  この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB)
     71 *  を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの
     72 *  フィールドが共通になっている.
    9273 */
    9374typedef struct semaphore_control_block {
    94         QUEUE           wait_queue;             /* セマフォå¾
    95 ã¡ã‚­ãƒ¥ãƒ¼ */
    96         const SEMINIB *p_seminib;       /* 初期化ブロックへのポインタ */
    97         uint_t          semcnt;                 /* セマフォ現在カウント値 */
     75        QUEUE           wait_queue;             /* セマフォ待ちキュー */
     76        const SEMINIB *p_seminib;       /* 初期化ブロックへのポインタ */
     77        uint_t          semcnt;                 /* セマフォ現在カウント値 */
    9878} SEMCB;
    9979
    10080/*
    101  *  セマフォå¾
    102 ã¡æƒ
    103 å ±ãƒ–ロックの定義
     81 *  セマフォ待ち情報ブロックの定義
    10482 *
    105  *  この構造体は,同期・通信オブジェクトのå¾
    106 ã¡æƒ
    107 å ±ãƒ–ロックのå
    108 ±é€šéƒ¨åˆ†
    109  *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
    110  *  すべてのフィールドがå
    111 ±é€šã«ãªã£ã¦ã„る.
     83 *  この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分
     84 *  (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので,
     85 *  すべてのフィールドが共通になっている.
    11286 */
    11387typedef struct semaphore_waiting_information {
    114         WINFO   winfo;                  /* 標準のå¾
    115 ã¡æƒ
    116 å ±ãƒ–ロック */
    117         SEMCB   *p_semcb;               /* å¾
    118 ã£ã¦ã„るセマフォの管理ブロック */
     88        WINFO   winfo;                  /* 標準の待ち情報ブロック */
     89        SEMCB   *p_semcb;               /* 待っているセマフォの管理ブロック */
    11990} WINFO_SEM;
    12091
    12192/*
    122  *  使用していないセマフォ管理ブロックのリスト
     93 *  使用していないセマフォ管理ブロックのリスト
    12394 */
    12495extern QUEUE    free_semcb;
    12596
    12697/*
    127  *  セマフォIDの最大値(kernel_cfg.c)
     98 *  セマフォIDの最大値(kernel_cfg.c)
    12899 */
    129100extern const ID tmax_semid;
     
    131102
    132103/*
    133  *  セマフォ初期化ブロックのエリア(kernel_cfg.c)
     104 *  セマフォ初期化ブロックのエリア(kernel_cfg.c)
    134105 */
    135106extern const SEMINIB    seminib_table[];
     
    137108
    138109/*
    139  *  セマフォ管理ブロックのエリア(kernel_cfg.c)
     110 *  セマフォ管理ブロックのエリア(kernel_cfg.c)
    140111 */
    141112extern SEMCB    semcb_table[];
    142113
    143114/*
    144  *  セマフォ管理ブロックからセマフォIDを取り出すためのマクロ
     115 *  セマフォ管理ブロックからセマフォIDを取り出すためのマクロ
    145116 */
    146117#define SEMID(p_semcb)  ((ID)(((p_semcb) - semcb_table) + TMIN_SEMID))
    147118
    148119/*
    149  *  セマフォ機能の初期化
     120 *  セマフォ機能の初期化
    150121 */
    151122extern void     initialize_semaphore(void);
  • asp3_gr_sakura/trunk/kernel/semaphore.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010#
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     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#       免責すること.
    4733#
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
    5439#
    55 #   $Id: semaphore.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     40#   $Id$
    5641#
    5742
    5843#
    59 #               ã‚»ãƒžãƒ•ã‚©æ©Ÿèƒ½ã®ç”Ÿæˆã‚¹ã‚¯ãƒªãƒ—ト
     44#               セマフォ機能の生成スクリプト
    6045#
    6146
     
    6651
    6752  def prepare(key, params)
    68     # sematrが無効の場合(E_RSATR)[NGKI1456ï¼½
    69     #(TA_TPRI以外のビットがセットされている場合)
     53    # sematrが無効の場合(E_RSATR)[NGKI1456]
     54    #(TA_TPRI以外のビットがセットされている場合)
    7055    if (params[:sematr] & ~($TA_TPRI)) != 0
    7156      error_illegal_id("E_RSATR", params, :sematr, :semid)
    7257    end
    7358
    74     # (1 <= maxsem && maxsem <= TMAX_MAXSEM)でない場合(E_PAR)[NGKI1468ï¼½
     59    # (1 <= maxsem && maxsem <= TMAX_MAXSEM)でない場合(E_PAR)[NGKI1468]
    7560    if !(1 <= params[:maxsem] && params[:maxsem] <= $TMAX_MAXSEM)
    7661      error_illegal_id("E_PAR", params, :maxsem, :semid)
    7762    end
    7863
    79     # (0 <= isemcnt && isemcnt <= maxsem)でない場合(E_PAR)[NGKI1466ï¼½
     64    # (0 <= isemcnt && isemcnt <= maxsem)でない場合(E_PAR)[NGKI1466]
    8065    if !(0 <= params[:isemcnt] && params[:isemcnt] <= params[:maxsem])
    8166      error_wrong_id("E_PAR", params, :isemcnt, :semid, "too large")
     
    8974
    9075#
    91 #  セマフォに関するæƒ
    92 å ±ã®ç”Ÿæˆ
     76#  セマフォに関する情報の生成
    9377#
    9478$kernelCfgC.comment_header("Semaphore Functions")
  • asp3_gr_sakura/trunk/kernel/startup.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
    47  *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     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 *      免責すること.
     33 *
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              カーネルの初期化と終了処理
     44 *              カーネルの初期化と終了処理
    6045 */
    6146
     
    6550
    6651/*
    67  *  トレースログマクロのデフォルト定義
     52 *  トレースログマクロのデフォルト定義
    6853 */
    6954#ifndef LOG_KER_ENTER
     
    8671
    8772/*
    88  *  カーネル動作状æ
    89 ‹ãƒ•ãƒ©ã‚°
     73 *  カーネル動作状態フラグ
    9074 *
    91  *  スタートアップルーチンで,false(=0)に初期化されることを期å¾
    92 ã—て
    93  *  いる.
     75 *  スタートアップルーチンで,false(=0)に初期化されることを期待して
     76 *  いる.
    9477 */
    9578bool_t  kerflg = false;
    9679
    9780/*
    98  *  カーネルの起動
     81 *  カーネルの起動
    9982 */
    10083void
     
    10285{
    10386        /*
    104          *  TECSの初期化
     87         *  TECSの初期化
    10588         */
    10689#ifndef TOPPERS_OMIT_TECS
     
    10992
    11093        /*
    111          *  ターゲット依存の初期化
     94         *  ターゲット依存の初期化
    11295         */
    11396        target_initialize();
    11497
    11598        /*
    116          *  各モジュールの初期化
     99         *  各モジュールの初期化
    117100         *
    118          *  タイムイベント管理モジュールは他のモジュールよりå
    119 ˆã«åˆæœŸåŒ–
    120          *  するå¿
    121 è¦ãŒã‚る.
     101         *  タイムイベント管理モジュールは他のモジュールより先に初期化
     102         *  する必要がある.
    122103         */
    123104        initialize_kmm();
    124         initialize_tmevt();                                                             /*ï¼»ASPD1061ï¼½*/
     105        initialize_tmevt();                                                             /*[ASPD1061]*/
    125106        initialize_object();
    126107
    127108        /*
    128          *  初期化ルーチンの実行
     109         *  初期化ルーチンの実行
    129110         */
    130111        call_inirtn();
    131112
    132113        /*
    133          *  高分解能タイマの設定
    134          */
    135         current_hrtcnt = target_hrt_get_current();              /*ï¼»ASPD1063ï¼½*/
    136         set_hrt_event();                                                                /*ï¼»ASPD1064ï¼½*/
    137 
    138         /*
    139          *  カーネル動作の開始
     114         *  高分解能タイマの設定
     115         */
     116        current_hrtcnt = target_hrt_get_current();              /*[ASPD1063]*/
     117        set_hrt_event();                                                                /*[ASPD1064]*/
     118
     119        /*
     120         *  カーネル動作の開始
    140121         */
    141122        kerflg = true;
     
    148129
    149130/*
    150  *  カーネルの終了
     131 *  カーネルの終了
    151132 */
    152133#ifdef TOPPERS_ext_ker
     
    160141
    161142        /*
    162          *  割込みロック状æ
    163 ‹ã«ç§»è¡Œ
     143         *  割込みロック状態に移行
    164144         */
    165145        SIL_LOC_INT();
    166146
    167147        /*
    168          *  カーネル動作の終了
     148         *  カーネル動作の終了
    169149         */
    170150        LOG_KER_LEAVE();
     
    172152
    173153        /*
    174          *  カーネルの終了処理の呼出し
     154         *  カーネルの終了処理の呼出し
    175155         *
    176          *  非タスクコンテキストに切り換えて,exit_kernelを呼び出す.
     156         *  非タスクコンテキストに切り換えて,exit_kernelを呼び出す.
    177157         */
    178158        call_exit_kernel();
    179159
    180160        /*
    181          *  コンパイラの警告対策(ここへ来ることはないはず)
     161         *  コンパイラの警告対策(ここへ来ることはないはず)
    182162         */
    183163        SIL_UNL_INT();
     
    187167
    188168/*
    189  *  カーネルの終了処理
     169 *  カーネルの終了処理
    190170 */
    191171void
     
    193173{
    194174        /*
    195          *  終了処理ルーチンの実行
     175         *  終了処理ルーチンの実行
    196176         */
    197177        call_terrtn();
    198178
    199179        /*
    200          *  ターゲット依存の終了処理
     180         *  ターゲット依存の終了処理
    201181         */
    202182        target_exit();
     
    207187
    208188/*
    209  *  カーネルの割り付けるメモリ領域の管理
     189 *  カーネルの割り付けるメモリ領域の管理
    210190 *
    211  *  メモリ領域をå
    212 ˆé ­ã‹ã‚‰é †ã«å‰²ã‚Šå½“て,解放されたメモリ領域を再利用しな
    213  *  いメモリ管理モジュール.
     191 *  メモリ領域を先頭から順に割り当て,解放されたメモリ領域を再利用しな
     192 *  いメモリ管理モジュール.
    214193 */
    215194#ifdef TOPPERS_kermem
  • asp3_gr_sakura/trunk/kernel/sys_manage.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              システム状æ
    60 ‹ç®¡ç†æ©Ÿèƒ½
     44 *              システム状態管理機能
    6145 */
    6246
     
    6751
    6852/*
    69  *  トレースログマクロのデフォルト定義
     53 *  トレースログマクロのデフォルト定義
    7054 */
    7155#ifndef LOG_ROT_RDQ_ENTER
     
    174158
    175159/*
    176  *  タスクの優å
    177 ˆé †ä½ã®å›žè»¢ï¼»NGKI3548ï¼½
     160 *  タスクの優先順位の回転[NGKI3548]
    178161 */
    179162#ifdef TOPPERS_rot_rdq
     
    186169
    187170        LOG_ROT_RDQ_ENTER(tskpri);
    188         CHECK_UNL();                                                            /*ï¼»NGKI2684ï¼½*/
     171        CHECK_UNL();                                                            /*[NGKI2684]*/
    189172        if (tskpri == TPRI_SELF && !sense_context()) {
    190                 pri = p_runtsk->bpriority;                              /*ï¼»NGKI2689ï¼½*/
     173                pri = p_runtsk->bpriority;                              /*[NGKI2689]*/
    191174        }
    192175        else {
    193                 CHECK_PAR(VALID_TPRI(tskpri));                  /*ï¼»NGKI2685ï¼½*/
     176                CHECK_PAR(VALID_TPRI(tskpri));                  /*[NGKI2685]*/
    194177                pri = INT_PRIORITY(tskpri);
    195178        }
     
    216199
    217200/*
    218  *  実行状æ
    219 ‹ã®ã‚¿ã‚¹ã‚¯IDの参ç
    220 §ï¼»NGKI3550ï¼½
     201 *  実行状態のタスクIDの参照[NGKI3550]
    221202 */
    222203#ifdef TOPPERS_get_tid
     
    228209
    229210        LOG_GET_TID_ENTER(p_tskid);
    230         CHECK_UNL();                                                            /*ï¼»NGKI2707ï¼½*/
     211        CHECK_UNL();                                                            /*[NGKI2707]*/
    231212
    232213        lock_cpu();
     
    243224
    244225/*
    245  *  実行できるタスクの数の参ç
    246 §ï¼»NGKI3623ï¼½
     226 *  実行できるタスクの数の参照[NGKI3623]
    247227 */
    248228#ifdef TOPPERS_get_lod
     
    256236
    257237        LOG_GET_LOD_ENTER(p_tskid, p_load);
    258         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3624][NGKI3625ï¼½*/
     238        CHECK_TSKCTX_UNL();                                                     /*[NGKI3624][NGKI3625]*/
    259239        if (tskpri == TPRI_SELF) {
    260                 pri = p_runtsk->bpriority;                              /*ï¼»NGKI3631ï¼½*/
     240                pri = p_runtsk->bpriority;                              /*[NGKI3631]*/
    261241        }
    262242        else {
    263                 CHECK_PAR(VALID_TPRI(tskpri));                  /*ï¼»NGKI3626ï¼½*/
     243                CHECK_PAR(VALID_TPRI(tskpri));                  /*[NGKI3626]*/
    264244                pri = INT_PRIORITY(tskpri);
    265245        }
     
    284264
    285265/*
    286  *  指定した優å
    287 ˆé †ä½ã®ã‚¿ã‚¹ã‚¯IDの参ç
    288 §ï¼»NGKI3641ï¼½
     266 *  指定した優先順位のタスクIDの参照[NGKI3641]
    289267 */
    290268#ifdef TOPPERS_get_nth
     
    299277
    300278        LOG_GET_NTH_ENTER(p_tskid, nth, p_tskid);
    301         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3642][NGKI3643ï¼½*/
     279        CHECK_TSKCTX_UNL();                                                     /*[NGKI3642][NGKI3643]*/
    302280        if (tskpri == TPRI_SELF) {
    303                 pri = p_runtsk->bpriority;                              /*ï¼»NGKI3650ï¼½*/
     281                pri = p_runtsk->bpriority;                              /*[NGKI3650]*/
    304282        }
    305283        else {
    306                 CHECK_PAR(VALID_TPRI(tskpri));                  /*ï¼»NGKI3644ï¼½*/
     284                CHECK_PAR(VALID_TPRI(tskpri));                  /*[NGKI3644]*/
    307285                pri = INT_PRIORITY(tskpri);
    308286        }
     
    331309
    332310/*
    333  *  CPUロック状æ
    334 ‹ã¸ã®é·ç§»ï¼»NGKI3538ï¼½
     311 *  CPUロック状態への遷移[NGKI3538]
    335312 */
    336313#ifdef TOPPERS_loc_cpu
     
    343320        LOG_LOC_CPU_ENTER();
    344321
    345         if (!sense_lock()) {                                            /*ï¼»NGKI2731ï¼½*/
    346                 lock_cpu();                                                             /*ï¼»NGKI2730ï¼½*/
     322        if (!sense_lock()) {                                            /*[NGKI2731]*/
     323                lock_cpu();                                                             /*[NGKI2730]*/
    347324        }
    348325        ercd = E_OK;
     
    355332
    356333/*
    357  *  CPUロック状æ
    358 ‹ã®è§£é™¤ï¼»NGKI3539ï¼½
     334 *  CPUロック状態の解除[NGKI3539]
    359335 *
    360  *  CPUロック中は,ディスパッチがå¿
    361 è¦ã¨ãªã‚‹ã‚µãƒ¼ãƒ“スコールを呼び出すこ
    362  *  とはできないため,CPUロック状æ
    363 ‹ã®è§£é™¤æ™‚にディスパッチャを起動する
    364  *  å¿
    365 è¦ã¯ãªã„.
     336 *  CPUロック中は,ディスパッチが必要となるサービスコールを呼び出すこ
     337 *  とはできないため,CPUロック状態の解除時にディスパッチャを起動する
     338 *  必要はない.
    366339 */
    367340#ifdef TOPPERS_unl_cpu
     
    374347        LOG_UNL_CPU_ENTER();
    375348
    376         if (sense_lock()) {                                                     /*ï¼»NGKI2738ï¼½*/
    377                 unlock_cpu();                                                   /*ï¼»NGKI2737ï¼½*/
     349        if (sense_lock()) {                                                     /*[NGKI2738]*/
     350                unlock_cpu();                                                   /*[NGKI2737]*/
    378351        }
    379352        ercd = E_OK;
     
    386359
    387360/*
    388  *  ディスパッチの禁止[NGKI2740ï¼½
     361 *  ディスパッチの禁止[NGKI2740]
    389362 */
    390363#ifdef TOPPERS_dis_dsp
     
    396369
    397370        LOG_DIS_DSP_ENTER();
    398         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI2741][NGKI2742ï¼½*/
     371        CHECK_TSKCTX_UNL();                                                     /*[NGKI2741][NGKI2742]*/
    399372
    400373        lock_cpu();
     
    412385
    413386/*
    414  *  ディスパッチの許可[NGKI2746ï¼½
     387 *  ディスパッチの許可[NGKI2746]
    415388 */
    416389#ifdef TOPPERS_ena_dsp
     
    422395
    423396        LOG_ENA_DSP_ENTER();
    424         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI2747][NGKI2748ï¼½*/
     397        CHECK_TSKCTX_UNL();                                                     /*[NGKI2747][NGKI2748]*/
    425398
    426399        lock_cpu();
     
    460433
    461434/*
    462  *  コンテキストの参ç
    463 §ï¼»NGKI2752ï¼½
     435 *  コンテキストの参照[NGKI2752]
    464436 */
    465437#ifdef TOPPERS_sns_ctx
     
    479451
    480452/*
    481  *  CPUロック状æ
    482 ‹ã®å‚ç
    483 §ï¼»NGKI2754ï¼½
     453 *  CPUロック状態の参照[NGKI2754]
    484454 */
    485455#ifdef TOPPERS_sns_loc
     
    499469
    500470/*
    501  *  ディスパッチ禁止状æ
    502 ‹ã®å‚ç
    503 §ï¼»NGKI2756ï¼½
     471 *  ディスパッチ禁止状態の参照[NGKI2756]
    504472 */
    505473#ifdef TOPPERS_sns_dsp
     
    519487
    520488/*
    521  *  ディスパッチ保留状æ
    522 ‹ã®å‚ç
    523 §ï¼»NGKI2758ï¼½
     489 *  ディスパッチ保留状態の参照[NGKI2758]
    524490 */
    525491#ifdef TOPPERS_sns_dpn
     
    539505
    540506/*
    541  *  カーネル非動作状æ
    542 ‹ã®å‚ç
    543 §ï¼»NGKI2760ï¼½
     507 *  カーネル非動作状態の参照[NGKI2760]
    544508 */
    545509#ifdef TOPPERS_sns_ker
  • asp3_gr_sakura/trunk/kernel/task.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              タスク管理モジュール
     44 *              タスク管理モジュール
    6045 */
    6146
     
    6853
    6954/*
    70  *  実行状æ
    71 ‹ã®ã‚¿ã‚¹ã‚¯
     55 *  実行状態のタスク
    7256 */
    7357TCB             *p_runtsk;
    7458
    7559/*
    76  *  実行すべきタスク
     60 *  実行すべきタスク
    7761 */
    7862TCB             *p_schedtsk;
    7963
    8064/*
    81  *  ディスパッチ許可状æ
    82 ‹
     65 *  ディスパッチ許可状態
    8366 */
    8467bool_t  enadsp;
    8568
    8669/*
    87  *  タスクディスパッチ可能状æ
    88 ‹
     70 *  タスクディスパッチ可能状態
    8971 */
    9072bool_t  dspflg;
    9173
    9274/*
    93  *  レディキュー
     75 *  レディキュー
    9476 */
    9577QUEUE   ready_queue[TNUM_TPRI];
    9678
    9779/*
    98  *  レディキューサーチのためのビットマップ
     80 *  レディキューサーチのためのビットマップ
    9981 */
    10082uint16_t        ready_primap;
    10183
    10284/*
    103  *  使用していないTCBのリスト
     85 *  使用していないTCBのリスト
    10486 */
    10587QUEUE   free_tcb;
    10688
    10789/*
    108  *  タスク管理モジュールの初期化
     90 *  タスク管理モジュールの初期化
    10991 */
    11092void
     
    148130
    149131/*
    150  *  ビットマップサーチ関数
    151  *
    152  *  bitmapå†
    153 ã®1のビットのå†
    154 ï¼Œæœ€ã‚‚下位(右)のものをサーチし,そのビッ
    155  *  ト番号を返す.ビット番号は,最下位ビットを0とする.bitmapに0を指定
    156  *  してはならない.この関数では,bitmapが16ビットであることを仮定し,
    157  *  uint16_t型としている.
    158  *
    159  *  ビットサーチ命令を持つプロセッサでは,ビットサーチ命令を使うように
    160  *  書き直した方が効率が良い場合がある.このような場合には,ターゲット
    161  *  依存部でビットサーチ命令を使ったbitmap_searchを定義し,
    162  *  OMIT_BITMAP_SEARCHをマクロ定義すればよい.また,ビットサーチ命令の
    163  *  サーチ方向が逆などの理由で優å
    164 ˆåº¦ã¨ãƒ“ットとの対応を変更したい場合に
    165  *  は,PRIMAP_BITをマクロ定義すればよい.
    166  *
    167  *  また,ライブラリにffsがあるなら,次のように定義してライブラリ関数を
    168  *  使った方が効率が良い可能性もある.
     132 *  ビットマップサーチ関数
     133 *
     134 *  bitmap内の1のビットの内,最も下位(右)のものをサーチし,そのビッ
     135 *  ト番号を返す.ビット番号は,最下位ビットを0とする.bitmapに0を指定
     136 *  してはならない.この関数では,bitmapが16ビットであることを仮定し,
     137 *  uint16_t型としている.
     138 *
     139 *  ビットサーチ命令を持つプロセッサでは,ビットサーチ命令を使うように
     140 *  書き直した方が効率が良い場合がある.このような場合には,ターゲット
     141 *  依存部でビットサーチ命令を使ったbitmap_searchを定義し,
     142 *  OMIT_BITMAP_SEARCHをマクロ定義すればよい.また,ビットサーチ命令の
     143 *  サーチ方向が逆などの理由で優先度とビットとの対応を変更したい場合に
     144 *  は,PRIMAP_BITをマクロ定義すればよい.
     145 *
     146 *  また,ライブラリにffsがあるなら,次のように定義してライブラリ関数を
     147 *  使った方が効率が良い可能性もある.
    169148 *              #define bitmap_search(bitmap) (ffs(bitmap) - 1)
    170149 */
     
    198177
    199178/*
    200  *  優å
    201 ˆåº¦ãƒ“ットマップが空かのチェック
     179 *  優先度ビットマップが空かのチェック
    202180 */
    203181Inline bool_t
     
    208186
    209187/*
    210  *  優å
    211 ˆåº¦ãƒ“ットマップのサーチ
     188 *  優先度ビットマップのサーチ
    212189 */
    213190Inline uint_t
     
    218195
    219196/*
    220  *  優å
    221 ˆåº¦ãƒ“ットマップのセット
     197 *  優先度ビットマップのセット
    222198 */
    223199Inline void
     
    228204
    229205/*
    230  *  優å
    231 ˆåº¦ãƒ“ットマップのクリア
     206 *  優先度ビットマップのクリア
    232207 */
    233208Inline void
     
    238213
    239214/*
    240  *  最高優å
    241 ˆé †ä½ã‚¿ã‚¹ã‚¯ã®ã‚µãƒ¼ãƒ
     215 *  最高優先順位タスクのサーチ
    242216 */
    243217#ifdef TOPPERS_tsksched
     
    255229
    256230/*
    257  *  実行できる状æ
    258 ‹ã¸ã®é·ç§»
    259  *
    260  *  実行すべきタスクを更新するのは,実行できるタスクがなかった場合と,
    261  *  p_tcbの優å
    262 ˆåº¦ãŒå®Ÿè¡Œã™ã¹ãã‚¿ã‚¹ã‚¯ã®å„ªå
    263 ˆåº¦ã‚ˆã‚Šã‚‚高い場合である.
     231 *  実行できる状態への遷移
     232 *
     233 *  実行すべきタスクを更新するのは,実行できるタスクがなかった場合と,
     234 *  p_tcbの優先度が実行すべきタスクの優先度よりも高い場合である.
    264235 */
    265236#ifdef TOPPERS_tskrun
     
    283254
    284255/*
    285  *  実行できる状æ
    286 ‹ã‹ã‚‰ä»–の状æ
    287 ‹ã¸ã®é·ç§»
    288  *
    289  *  実行すべきタスクを更新するのは,p_tcbが実行すべきタスクであった場合
    290  *  である.p_tcbと同じ優å
    291 ˆåº¦ã®ã‚¿ã‚¹ã‚¯ãŒä»–にある場合は,p_tcbの次のタス
    292  *  クが実行すべきタスクになる.そうでない場合は,レディキューをサーチ
    293  *  するå¿
    294 è¦ãŒã‚る.
     256 *  実行できる状態から他の状態への遷移
     257 *
     258 *  実行すべきタスクを更新するのは,p_tcbが実行すべきタスクであった場合
     259 *  である.p_tcbと同じ優先度のタスクが他にある場合は,p_tcbの次のタス
     260 *  クが実行すべきタスクになる.そうでない場合は,レディキューをサーチ
     261 *  する必要がある.
    295262 */
    296263#ifdef TOPPERS_tsknrun
     
    321288
    322289/*
    323  *  休止状æ
    324 ‹ã¸ã®é·ç§»
     290 *  休止状態への遷移
    325291 */
    326292#ifdef TOPPERS_tskdmt
     
    344310
    345311/*
    346  *  休止状æ
    347 ‹ã‹ã‚‰å®Ÿè¡Œã§ãã‚‹çŠ¶æ
    348 ‹ã¸ã®é·ç§»
     312 *  休止状態から実行できる状態への遷移
    349313 */
    350314#ifdef TOPPERS_tskact
     
    362326
    363327/*
    364  *  タスクの優å
    365 ˆåº¦ã®å¤‰æ›´
    366  *
    367  *  タスクが実行できる状æ
    368 ‹ã®å ´åˆã«ã¯ï¼Œãƒ¬ãƒ‡ã‚£ã‚­ãƒ¥ãƒ¼ã®ä¸­ã§ã®ä½ç½®ã‚’変更す
    369  *  る.オブジェクトのå¾
    370 ã¡ã‚­ãƒ¥ãƒ¼ã®ä¸­ã§å¾
    371 ã¡çŠ¶æ
    372 ‹ã«ãªã£ã¦ã„る場合には,å¾
    373 
    374  *  ちキューの中での位置を変更する.
    375  *
    376  *  実行すべきタスクを更新するのは,(1) p_tcbが実行すべきタスクであって,
    377  *  その優å
    378 ˆåº¦ã‚’下げた場合,(2) p_tcbが実行すべきタスクではなく,変更後
    379  *  の優å
    380 ˆåº¦ãŒå®Ÿè¡Œã™ã¹ãã‚¿ã‚¹ã‚¯ã®å„ªå
    381 ˆåº¦ã‚ˆã‚Šã‚‚高い場合である.(1)の場合に
    382  *  は,レディキューをサーチするå¿
    383 è¦ãŒã‚る.
     328 *  タスクの優先度の変更
     329 *
     330 *  タスクが実行できる状態の場合には,レディキューの中での位置を変更す
     331 *  る.オブジェクトの待ちキューの中で待ち状態になっている場合には,待
     332 *  ちキューの中での位置を変更する.
     333 *
     334 *  実行すべきタスクを更新するのは,(1) p_tcbが実行すべきタスクであって,
     335 *  その優先度を下げた場合,(2) p_tcbが実行すべきタスクではなく,変更後
     336 *  の優先度が実行すべきタスクの優先度よりも高い場合である.(1)の場合に
     337 *  は,レディキューをサーチする必要がある.
    384338 */
    385339#ifdef TOPPERS_tskpri
     
    395349        if (TSTAT_RUNNABLE(p_tcb->tstat)) {
    396350                /*
    397                  *  タスクが実行できる状æ
    398 ‹ã®å ´åˆ
     351                 *  タスクが実行できる状態の場合
    399352                 */
    400353                queue_delete(&(p_tcb->task_queue));
     
    427380                if (TSTAT_WAIT_WOBJCB(p_tcb->tstat)) {
    428381                        /*
    429                          *  タスクが,同期・通信オブジェクトの管理ブロックのå
    430 ±é€šéƒ¨
    431                          *  分(WOBJCB)のå¾
    432 ã¡ã‚­ãƒ¥ãƒ¼ã«ã¤ãªãŒã‚Œã¦ã„る場合
     382                         *  タスクが,同期・通信オブジェクトの管理ブロックの共通部
     383                         *  分(WOBJCB)の待ちキューにつながれている場合
    433384                         */
    434385                        wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb,
     
    441392
    442393/*
    443  *  レディキューの回転
    444  *
    445  *  実行すべきタスクを更新するのは,実行すべきタスクがタスクキューの末
    446  *  尾に移動した場合である.
     394 *  レディキューの回転
     395 *
     396 *  実行すべきタスクを更新するのは,実行すべきタスクがタスクキューの末
     397 *  尾に移動した場合である.
    447398 */
    448399#ifdef TOPPERS_tskrot
     
    467418
    468419/*
    469  *  タスクの終了処理
     420 *  タスクの終了処理
    470421 */
    471422#ifdef TOPPERS_tskterm
  • asp3_gr_sakura/trunk/kernel/task.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              タスク管理モジュール
     44 *              タスク管理モジュール
    6045 */
    6146
     
    6853
    6954/*
    70  *  トレースログマクロのデフォルト定義
     55 *  トレースログマクロのデフォルト定義
    7156 */
    7257#ifndef LOG_TSKSTAT
     
    7560
    7661/*
    77  *  タスク優å
    78 ˆåº¦ã®å†
    79 éƒ¨è¡¨ç¾ãƒ»å¤–部表現変換マクロ
     62 *  タスク優先度の内部表現・外部表現変換マクロ
    8063 */
    8164#define INT_PRIORITY(x)         ((uint_t)((x) - TMIN_TPRI))
     
    8366
    8467/*
    85  *  タスク状æ
    86 ‹ã®å†
    87 éƒ¨è¡¨ç¾
    88  *
    89  *  TCB中のタスク状æ
    90 ‹ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã§ã¯ï¼Œã‚¿ã‚¹ã‚¯ã®çŠ¶æ
    91 ‹ã¨ï¼Œã‚¿ã‚¹ã‚¯ãŒå¾
    92 ã¡çŠ¶æ
    93 ‹
    94  *  の時のå¾
    95 ã¡è¦å› ã‚’表す.ただし,実行状æ
    96 ‹ï¼ˆRUNNING)と実行可能状æ
    97 ‹
    98  *  (READY)は区別せず,両状æ
    99 ‹ã‚’あわせて実行できる状æ
    100 ‹ï¼ˆRUNNABLE)とし
    101  *  て管理する.二重å¾
    102 ã¡çŠ¶æ
    103 ‹ã¯ï¼Œ(TS_WAITING_??? | TS_SUSPENDED)で表す.
    104  *
    105  *  タスクがå¾
    106 ã¡çŠ¶æ
    107 ‹ï¼ˆäºŒé‡å¾
    108 ã¡çŠ¶æ
    109 ‹ã‚’含む)の時は,TS_WAITING_???でå¾
    110 ã¡
    111  *  要因を表す.å¾
    112 ã¡è¦å› ï¼ˆ5ビットで表現される)の上位2ビットで,同期・
    113  *  通信オブジェクトのå¾
    114 ã¡ã‚­ãƒ¥ãƒ¼ã«ã¤ãªãŒã£ã¦ã„るかどうかを表す.同期・
    115  *  通信オブジェクトのå¾
    116 ã¡ã‚­ãƒ¥ãƒ¼ã«ã¤ãªãŒã‚‰ãªã„ものは上位2ビットを00,同
    117  *  期・通信オブジェクトの管理ブロックのå
    118 ±é€šéƒ¨åˆ†ï¼ˆWOBJCB)のå¾
    119 ã¡ã‚­ãƒ¥ãƒ¼
    120  *  につながるものは10または11,それ以外のå¾
    121 ã¡ã‚­ãƒ¥ãƒ¼ã«ã¤ãªãŒã‚‹ã‚‚のは01
    122  *  とする.
    123  */
    124 #define TS_DORMANT              0x00U                   /* 休止状æ
    125 ‹ */
    126 #define TS_RUNNABLE             0x01U                   /* 実行できる状æ
    127 ‹ */
    128 #define TS_SUSPENDED    0x02U                   /* 強制å¾
    129 ã¡çŠ¶æ
    130 ‹ */
    131 
    132 #define TS_WAITING_SLP  (0x01U << 2)    /* 起床å¾
    133 ã¡ */
    134 #define TS_WAITING_DLY  (0x02U << 2)    /* 時間経過å¾
    135 ã¡ */
    136 #define TS_WAITING_RDTQ (0x08U << 2)    /* データキューからの受信å¾
    137 ã¡ */
    138 #define TS_WAITING_RPDQ (0x09U << 2)    /* 優å
    139 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã‹ã‚‰ã®å—ä¿¡å¾
    140 ã¡ */
    141 #define TS_WAITING_SEM  (0x10U << 2)    /* セマフォ資源の獲得å¾
    142 ã¡ */
    143 #define TS_WAITING_FLG  (0x11U << 2)    /* イベントフラグå¾
    144 ã¡ */
    145 #define TS_WAITING_SDTQ (0x12U << 2)    /* データキューへの送信å¾
    146 ã¡ */
    147 #define TS_WAITING_SPDQ (0x13U << 2)    /* 優å
    148 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®é€ä¿¡å¾
    149 ã¡ */
    150 #define TS_WAITING_MTX  (0x14U << 2)    /* ミューテックスのロックå¾
    151 ã¡ */
    152 #define TS_WAITING_MPF  (0x15U << 2)    /* 固定長メモリブロックの獲得å¾
    153 ã¡ */
    154 
    155 #define TS_WAITING_MASK (0x1fU << 2)    /* å¾
    156 ã¡çŠ¶æ
    157 ‹ã®åˆ¤åˆ¥ç”¨ãƒžã‚¹ã‚¯ */
    158 
    159 /*
    160  *  タスク状æ
    161 ‹åˆ¤åˆ¥ãƒžã‚¯ãƒ­
    162  *
    163  *  TSTAT_DORMANTはタスクが休止状æ
    164 ‹ã§ã‚るかどうかを,TSTAT_RUNNABLEは
    165  *  タスクが実行できる状æ
    166 ‹ã§ã‚るかどうかを判別する.TSTAT_WAITINGはå¾
    167 
    168  *  ち状æ
    169 ‹ã¨äºŒé‡å¾
    170 ã¡çŠ¶æ
    171 ‹ã®ã„ずれかであるかどうかを,TSTAT_SUSPENDEDは
    172  *  強制å¾
    173 ã¡çŠ¶æ
    174 ‹ã¨äºŒé‡å¾
    175 ã¡çŠ¶æ
    176 ‹ã®ã„ずれかであるかどうかを判別する.
     68 *  タスク状態の内部表現
     69 *
     70 *  TCB中のタスク状態のフィールドでは,タスクの状態と,タスクが待ち状態
     71 *  の時の待ち要因を表す.ただし,実行状態(RUNNING)と実行可能状態
     72 *  (READY)は区別せず,両状態をあわせて実行できる状態(RUNNABLE)とし
     73 *  て管理する.二重待ち状態は,(TS_WAITING_??? | TS_SUSPENDED)で表す.
     74 *
     75 *  タスクが待ち状態(二重待ち状態を含む)の時は,TS_WAITING_???で待ち
     76 *  要因を表す.待ち要因(5ビットで表現される)の上位2ビットで,同期・
     77 *  通信オブジェクトの待ちキューにつながっているかどうかを表す.同期・
     78 *  通信オブジェクトの待ちキューにつながらないものは上位2ビットを00,同
     79 *  期・通信オブジェクトの管理ブロックの共通部分(WOBJCB)の待ちキュー
     80 *  につながるものは10または11,それ以外の待ちキューにつながるものは01
     81 *  とする.
     82 */
     83#define TS_DORMANT              0x00U                   /* 休止状態 */
     84#define TS_RUNNABLE             0x01U                   /* 実行できる状態 */
     85#define TS_SUSPENDED    0x02U                   /* 強制待ち状態 */
     86
     87#define TS_WAITING_SLP  (0x01U << 2)    /* 起床待ち */
     88#define TS_WAITING_DLY  (0x02U << 2)    /* 時間経過待ち */
     89#define TS_WAITING_RDTQ (0x08U << 2)    /* データキューからの受信待ち */
     90#define TS_WAITING_RPDQ (0x09U << 2)    /* 優先度データキューからの受信待ち */
     91#define TS_WAITING_SEM  (0x10U << 2)    /* セマフォ資源の獲得待ち */
     92#define TS_WAITING_FLG  (0x11U << 2)    /* イベントフラグ待ち */
     93#define TS_WAITING_SDTQ (0x12U << 2)    /* データキューへの送信待ち */
     94#define TS_WAITING_SPDQ (0x13U << 2)    /* 優先度データキューへの送信待ち */
     95#define TS_WAITING_MTX  (0x14U << 2)    /* ミューテックスのロック待ち */
     96#define TS_WAITING_MPF  (0x15U << 2)    /* 固定長メモリブロックの獲得待ち */
     97
     98#define TS_WAITING_MASK (0x1fU << 2)    /* 待ち状態の判別用マスク */
     99
     100/*
     101 *  タスク状態判別マクロ
     102 *
     103 *  TSTAT_DORMANTはタスクが休止状態であるかどうかを,TSTAT_RUNNABLEは
     104 *  タスクが実行できる状態であるかどうかを判別する.TSTAT_WAITINGは待
     105 *  ち状態と二重待ち状態のいずれかであるかどうかを,TSTAT_SUSPENDEDは
     106 *  強制待ち状態と二重待ち状態のいずれかであるかどうかを判別する.
    177107 */
    178108#define TSTAT_DORMANT(tstat)    ((tstat) == TS_DORMANT)
     
    182112
    183113/*
    184  *  タスクå¾
    185 ã¡è¦å› åˆ¤åˆ¥ãƒžã‚¯ãƒ­
    186  *
    187  *  TSTAT_WAIT_SLPはタスクが起床å¾
    188 ã¡ã§ã‚るかどうかを,TSTAT_WAIT_MTXは
    189  *  タスクがミューテックスå¾
    190 ã¡ã§ã‚るかどうかを判別する.
    191  *
    192  *  また,TSTAT_WAIT_WOBJ はタスクが同期・通信オブジェクトに対するå¾
    193 ã¡
    194  *  であるか(言い換えると,同期・通信オブジェクトのå¾
    195 ã¡ã‚­ãƒ¥ãƒ¼ã«ã¤ãªãŒ
    196  *  れているか)どうかを,TSTAT_WAIT_WOBJCBはタスクが同期・通信オブジェ
    197  *  クトの管理ブロックのå
    198 ±é€šéƒ¨åˆ†ï¼ˆWOBJCB)のå¾
    199 ã¡ã‚­ãƒ¥ãƒ¼ã«ã¤ãªãŒã‚Œã¦ã„ã‚‹
    200  *  かどうかを判別する.
     114 *  タスク待ち要因判別マクロ
     115 *
     116 *  TSTAT_WAIT_SLPはタスクが起床待ちであるかどうかを,TSTAT_WAIT_MTXは
     117 *  タスクがミューテックス待ちであるかどうかを判別する.
     118 *
     119 *  また,TSTAT_WAIT_WOBJ はタスクが同期・通信オブジェクトに対する待ち
     120 *  であるか(言い換えると,同期・通信オブジェクトの待ちキューにつなが
     121 *  れているか)どうかを,TSTAT_WAIT_WOBJCBはタスクが同期・通信オブジェ
     122 *  クトの管理ブロックの共通部分(WOBJCB)の待ちキューにつながれている
     123 *  かどうかを判別する.
    201124 */
    202125#define TSTAT_WAIT_SLP(tstat)   (((tstat) & ~TS_SUSPENDED) == TS_WAITING_SLP)
     
    207130
    208131/*
    209  *  å¾
    210 ã¡æƒ
    211 å ±ãƒ–ロック(WINFO)の定義
    212  *
    213  *  タスクがå¾
    214 ã¡çŠ¶æ
    215 ‹ã®é–“は,TCBおよびそのp_winfoで指されるWINFOを次の
    216  *  ように設定しなければならない.
    217  *
    218  *  (a) TCBのタスク状æ
    219 ‹ã‚’å¾
    220 ã¡çŠ¶æ
    221 ‹ï¼ˆTS_WAITING_???)にする.
    222  *
    223  *  (b) タイムアウトを監視するために,タイムイベントブロックを登録する.
    224  *  登録するタイムイベントブロックは,å¾
    225 ã¡ã«å
    226 ¥ã‚‹ã‚µãƒ¼ãƒ“スコール処理関数
    227  *  のローカル変数として確保し,それへのポインタをWINFOのp_tmevtbに記
    228  *  憶する.タイムアウトの監視がå¿
    229 è¦ãªã„場合(永ä¹
    230 å¾
    231 ã¡ã®å ´åˆï¼‰ã«ã¯ï¼Œ
    232  *  p_tmevtbをNULLにする.
    233  *
    234  *  同期・通信オブジェクトに対するå¾
    235 ã¡çŠ¶æ
    236 ‹ã®å ´åˆã«ã¯ï¼Œæ¨™æº–のWINFOに
    237  *  p_wobjcbフィールドを追加した構造体(WINFO_WOBJ,wait.hで定義)に,
    238  *  å¾
    239 ã¡å¯¾è±¡ã®åŒæœŸãƒ»é€šä¿¡ã‚ªãƒ–ジェクトに依存して記憶することがå¿
    240 è¦ãªæƒ
    241 å ±
    242  *  のためのフィールドを追加した構造体(WINFO_???)を定義し,WINFOの代
    243  *  わりに用いる.また,以下の(c)~(e)の設定を行うå¿
    244 è¦ãŒã‚る.同期・通
    245  *  信オブジェクトに関係しないå¾
    246 ã¡ï¼ˆèµ·åºŠå¾
    247 ã¡ï¼Œæ™‚間経過å¾
    248 ã¡ï¼‰ã®å ´åˆã«ã¯ï¼Œ
    249  *  これらはå¿
    250 è¦ãªã„.
    251  *
    252  *  (c) TCBをå¾
    253 ã¡å¯¾è±¡ã®åŒæœŸãƒ»é€šä¿¡ã‚ªãƒ–ジェクトのå¾
    254 ã¡ã‚­ãƒ¥ãƒ¼ã«ã¤ãªãï¼Žå¾
    255 
    256  *  ちキューにつなぐために,task_queueを使う.
    257  *
    258  *  (d) å¾
    259 ã¡å¯¾è±¡ã®åŒæœŸãƒ»é€šä¿¡ã‚ªãƒ–ジェクトの管理ブロックへのポインタを,
    260  *  WINFO_WOBJのp_wobjcbに記憶する.
    261  *
    262  *  (e) å¾
    263 ã¡å¯¾è±¡ã®åŒæœŸãƒ»é€šä¿¡ã‚ªãƒ–ジェクトに依存して記憶することがå¿
    264 è¦ãª
    265  *  æƒ
    266 å ±ãŒã‚る場合には,WINFO_???å†
    267 ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«è¨˜æ†¶ã™ã‚‹ï¼Ž
    268  *
    269  *  å¾
    270 ã¡çŠ¶æ
    271 ‹ã‚’解除する際には,å¾
    272 ã¡è§£é™¤ã—たタスクに対する返値をWINFOの
    273  *  wercdに設定する.wercdがå¿
    274 è¦ãªã®ã¯å¾
    275 ã¡è§£é™¤ä»¥é™ã§ã‚るのに対して,
    276  *  p_tmevtbはå¾
    277 ã¡è§£é™¤å¾Œã¯å¿
    278 è¦ãªã„ため,メモリ節約のためにå
    279 ±ç”¨ä½“を使っ
    280  *  ている.そのため,wercdへエラーコードを設定するのは,タイムイベント
    281  *  ブロックを登録解除した後にしなければならない.
     132 *  待ち情報ブロック(WINFO)の定義
     133 *
     134 *  タスクが待ち状態の間は,TCBおよびそのp_winfoで指されるWINFOを次の
     135 *  ように設定しなければならない.
     136 *
     137 *  (a) TCBのタスク状態を待ち状態(TS_WAITING_???)にする.
     138 *
     139 *  (b) タイムアウトを監視するために,タイムイベントブロックを登録する.
     140 *  登録するタイムイベントブロックは,待ちに入るサービスコール処理関数
     141 *  のローカル変数として確保し,それへのポインタをWINFOのp_tmevtbに記
     142 *  憶する.タイムアウトの監視が必要ない場合(永久待ちの場合)には,
     143 *  p_tmevtbをNULLにする.
     144 *
     145 *  同期・通信オブジェクトに対する待ち状態の場合には,標準のWINFOに
     146 *  p_wobjcbフィールドを追加した構造体(WINFO_WOBJ,wait.hで定義)に,
     147 *  待ち対象の同期・通信オブジェクトに依存して記憶することが必要な情報
     148 *  のためのフィールドを追加した構造体(WINFO_???)を定義し,WINFOの代
     149 *  わりに用いる.また,以下の(c)~(e)の設定を行う必要がある.同期・通
     150 *  信オブジェクトに関係しない待ち(起床待ち,時間経過待ち)の場合には,
     151 *  これらは必要ない.
     152 *
     153 *  (c) TCBを待ち対象の同期・通信オブジェクトの待ちキューにつなぐ.待
     154 *  ちキューにつなぐために,task_queueを使う.
     155 *
     156 *  (d) 待ち対象の同期・通信オブジェクトの管理ブロックへのポインタを,
     157 *  WINFO_WOBJのp_wobjcbに記憶する.
     158 *
     159 *  (e) 待ち対象の同期・通信オブジェクトに依存して記憶することが必要な
     160 *  情報がある場合には,WINFO_???内のフィールドに記憶する.
     161 *
     162 *  待ち状態を解除する際には,待ち解除したタスクに対する返値をWINFOの
     163 *  wercdに設定する.wercdが必要なのは待ち解除以降であるのに対して,
     164 *  p_tmevtbは待ち解除後は必要ないため,メモリ節約のために共用体を使っ
     165 *  ている.そのため,wercdへエラーコードを設定するのは,タイムイベント
     166 *  ブロックを登録解除した後にしなければならない.
    282167 */
    283168typedef union waiting_information {
    284         ER              wercd;                  /* å¾
    285 ã¡è§£é™¤æ™‚のエラーコード */
    286         TMEVTB  *p_tmevtb;              /* å¾
    287 ã¡çŠ¶æ
    288 ‹ç”¨ã®ã‚¿ã‚¤ãƒ ã‚¤ãƒ™ãƒ³ãƒˆãƒ–ロック */
     169        ER              wercd;                  /* 待ち解除時のエラーコード */
     170        TMEVTB  *p_tmevtb;              /* 待ち状態用のタイムイベントブロック */
    289171} WINFO;
    290172
    291173/*
    292  *  ミューテックス管理ブロックの型の前方参ç
    293 §
     174 *  ミューテックス管理ブロックの型の前方参照
    294175 */
    295176typedef struct mutex_control_block MTXCB;
    296177
    297178/*
    298  *  タスク初期化ブロック
    299  *
    300  *  タスクに関するæƒ
    301 å ±ã‚’,値が変わらないためにROMに置ける部分(タスク
    302  *  初期化ブロック)と,値が変化するためにRAMに置かなければならない部
    303  *  分(タスク管理ブロック,TCB)に分離し,TCBå†
    304 ã«å¯¾å¿œã™ã‚‹ã‚¿ã‚¹ã‚¯åˆæœŸåŒ–
    305  *  ブロックを指すポインタをå
    306 ¥ã‚Œã‚‹ï¼Žã‚¿ã‚¹ã‚¯åˆæœŸåŒ–ブロックå†
    307 ã«å¯¾å¿œã™ã‚‹
    308  *  TCBを指すポインタをå
    309 ¥ã‚Œã‚‹æ–¹æ³•ã®æ–¹ãŒï¼ŒRAMの節約の観点からは望ましい
    310  *  が,実行効率が悪くなるために採用していない.他のオブジェクトについ
    311  *  ても同様に扱う.
    312  *
    313  *  タスク初期化ブロックには,DEF_TEXで定義されるタスク例外処理ルーチ
    314  *  ンに関するæƒ
    315 å ±ã‚‚含む.
     179 *  タスク初期化ブロック
     180 *
     181 *  タスクに関する情報を,値が変わらないためにROMに置ける部分(タスク
     182 *  初期化ブロック)と,値が変化するためにRAMに置かなければならない部
     183 *  分(タスク管理ブロック,TCB)に分離し,TCB内に対応するタスク初期化
     184 *  ブロックを指すポインタを入れる.タスク初期化ブロック内に対応する
     185 *  TCBを指すポインタを入れる方法の方が,RAMの節約の観点からは望ましい
     186 *  が,実行効率が悪くなるために採用していない.他のオブジェクトについ
     187 *  ても同様に扱う.
     188 *
     189 *  タスク初期化ブロックには,DEF_TEXで定義されるタスク例外処理ルーチ
     190 *  ンに関する情報も含む.
    316191 */
    317192typedef struct task_initialization_block {
    318         ATR                     tskatr;                 /* タスク属性 */
    319         intptr_t        exinf;                  /* タスクの拡張æƒ
    320 å ± */
    321         TASK            task;                   /* タスクの起動番地 */
    322         uint_t          ipriority;              /* タスクの起動時優å
    323 ˆåº¦ï¼ˆå†
    324 éƒ¨è¡¨ç¾ï¼‰ */
     193        ATR                     tskatr;                 /* タスク属性 */
     194        intptr_t        exinf;                  /* タスクの拡張情報 */
     195        TASK            task;                   /* タスクの起動番地 */
     196        uint_t          ipriority;              /* タスクの起動時優先度(内部表現) */
    325197
    326198#ifdef USE_TSKINICTXB
    327         TSKINICTXB      tskinictxb;             /* タスク初期化コンテキストブロック */
     199        TSKINICTXB      tskinictxb;             /* タスク初期化コンテキストブロック */
    328200#else /* USE_TSKINICTXB */
    329         size_t          stksz;                  /* スタック領域のサイズ(丸めた値) */
    330         void            *stk;                   /* スタック領域のå
    331 ˆé ­ç•ªåœ° */
     201        size_t          stksz;                  /* スタック領域のサイズ(丸めた値) */
     202        void            *stk;                   /* スタック領域の先頭番地 */
    332203#endif /* USE_TSKINICTXB */
    333204} TINIB;
    334205
    335206/*
    336  *  タスク管理ブロック(TCB)
    337  *
    338  *  ASPカーネルでは,タスクの起動要求キューイング数の最大値(TMAX_ACTCNT)
    339  *  と起床要求キューイング数の最大値(TMAX_WUPCNT)は1に固定されている
    340  *  ため,キューイングされているかどうかの真偽値で表現することができる.
    341  *  また,強制å¾
    342 ã¡è¦æ±‚ネスト数の最大値(TMAX_SUSCNT)が1に固定されてい
    343  *  るので,強制å¾
    344 ã¡è¦æ±‚ネスト数(suscnt)はå¿
    345 è¦ãªã„.
    346  *
    347  *  TCBのいくつかのフィールドは,特定のタスク状æ
    348 ‹ã§ã®ã¿æœ‰åŠ¹ãªå€¤ã‚’保持し,
    349  *  それ以外の場合は値が保証されない(よって,参ç
    350 §ã—てはならない).各
    351  *  フィールドが有効な値を保持する条件は次の通り.
    352  *
    353  *  ・初期化後は常に有効:
    354  *              p_tinib,tstat,actque, staovr, leftotm
    355  *  ・休止状æ
    356 ‹ä»¥å¤–で有効(休止状æ
    357 ‹ã§ã¯åˆæœŸå€¤ã«ãªã£ã¦ã„る):
    358  *              bpriority,priority,wupque,raster,enater,p_lastmtx
    359  *  ・å¾
    360 ã¡çŠ¶æ
    361 ‹ï¼ˆäºŒé‡å¾
    362 ã¡çŠ¶æ
    363 ‹ã‚’含む)で有効:
     207 *  タスク管理ブロック(TCB)
     208 *
     209 *  ASPカーネルでは,タスクの起動要求キューイング数の最大値(TMAX_ACTCNT)
     210 *  と起床要求キューイング数の最大値(TMAX_WUPCNT)は1に固定されている
     211 *  ため,キューイングされているかどうかの真偽値で表現することができる.
     212 *  また,強制待ち要求ネスト数の最大値(TMAX_SUSCNT)が1に固定されてい
     213 *  るので,強制待ち要求ネスト数(suscnt)は必要ない.
     214 *
     215 *  TCBのいくつかのフィールドは,特定のタスク状態でのみ有効な値を保持し,
     216 *  それ以外の場合は値が保証されない(よって,参照してはならない).各
     217 *  フィールドが有効な値を保持する条件は次の通り.
     218 *
     219 *  ・初期化後は常に有効:
     220 *              p_tinib,tstat,actque, staovr, leftotm
     221 *  ・休止状態以外で有効(休止状態では初期値になっている):
     222 *              bpriority,priority,wupque,raster,enater,p_lastmtx
     223 *  ・待ち状態(二重待ち状態を含む)で有効:
    364224 *              p_winfo
    365  *  ・実行できる状æ
    366 ‹ã¨åŒæœŸãƒ»é€šä¿¡ã‚ªãƒ–ジェクトに対するå¾
    367 ã¡çŠ¶æ
    368 ‹ã§æœ‰åŠ¹ï¼š
     225 *  ・実行できる状態と同期・通信オブジェクトに対する待ち状態で有効:
    369226 *              task_queue
    370  *  ・実行可能状æ
    371 ‹ï¼Œå¾
    372 ã¡çŠ¶æ
    373 ‹ï¼Œå¼·åˆ¶å¾
    374 ã¡çŠ¶æ
    375 ‹ï¼ŒäºŒé‡å¾
    376 ã¡çŠ¶æ
    377 ‹ã§æœ‰åŠ¹ï¼š
     227 *  ・実行可能状態,待ち状態,強制待ち状態,二重待ち状態で有効:
    378228 *              tskctxb
    379229 */
    380230typedef struct task_control_block {
    381         QUEUE                   task_queue;             /* タスクキュー */
    382         const TINIB             *p_tinib;               /* 初期化ブロックへのポインタ */
     231        QUEUE                   task_queue;             /* タスクキュー */
     232        const TINIB             *p_tinib;               /* 初期化ブロックへのポインタ */
    383233
    384234#ifdef UINT8_MAX
    385         uint8_t                 tstat;                  /* タスク状æ
    386 ‹ï¼ˆå†
    387 éƒ¨è¡¨ç¾ï¼‰*/
    388         uint8_t                 bpriority;              /* ベース優å
    389 ˆåº¦ï¼ˆå†
    390 éƒ¨è¡¨ç¾ï¼‰*/
    391         uint8_t                 priority;               /* 現在の優å
    392 ˆåº¦ï¼ˆå†
    393 éƒ¨è¡¨ç¾ï¼‰*/
     235        uint8_t                 tstat;                  /* タスク状態(内部表現)*/
     236        uint8_t                 bpriority;              /* ベース優先度(内部表現)*/
     237        uint8_t                 priority;               /* 現在の優先度(内部表現)*/
    394238#else /* UINT8_MAX */
    395         BIT_FIELD_UINT  tstat : 8;              /* タスク状æ
    396 ‹ï¼ˆå†
    397 éƒ¨è¡¨ç¾ï¼‰*/
    398         BIT_FIELD_UINT  bpriority : 8;  /* ベース優å
    399 ˆåº¦ï¼ˆå†
    400 éƒ¨è¡¨ç¾ï¼‰*/
    401         BIT_FIELD_UINT  priority : 8    /* 現在の優å
    402 ˆåº¦ï¼ˆå†
    403 éƒ¨è¡¨ç¾ï¼‰*/;
     239        BIT_FIELD_UINT  tstat : 8;              /* タスク状態(内部表現)*/
     240        BIT_FIELD_UINT  bpriority : 8;  /* ベース優先度(内部表現)*/
     241        BIT_FIELD_UINT  priority : 8    /* 現在の優先度(内部表現)*/;
    404242#endif /* UINT8_MAX */
    405         BIT_FIELD_BOOL  actque : 1;             /* 起動要求キューイング */
    406         BIT_FIELD_BOOL  wupque : 1;             /* 起床要求キューイング */
    407         BIT_FIELD_BOOL  raster : 1;             /* タスク終了要求状æ
    408 ‹ */
    409         BIT_FIELD_BOOL  enater : 1;             /* タスク終了許可状æ
    410 ‹ */
     243        BIT_FIELD_BOOL  actque : 1;             /* 起動要求キューイング */
     244        BIT_FIELD_BOOL  wupque : 1;             /* 起床要求キューイング */
     245        BIT_FIELD_BOOL  raster : 1;             /* タスク終了要求状態 */
     246        BIT_FIELD_BOOL  enater : 1;             /* タスク終了許可状態 */
    411247#ifdef TOPPERS_SUPPORT_OVRHDR
    412         BIT_FIELD_BOOL  staovr : 1;             /* オーバランハンドラ動作状æ
    413 ‹ */
     248        BIT_FIELD_BOOL  staovr : 1;             /* オーバランハンドラ動作状態 */
    414249#endif /* TOPPERS_SUPPORT_OVRHDR */
    415250
    416         WINFO                   *p_winfo;               /* å¾
    417 ã¡æƒ
    418 å ±ãƒ–ロックへのポインタ */
    419         MTXCB                   *p_lastmtx;             /* 最後にロックしたミューテックス */
     251        WINFO                   *p_winfo;               /* 待ち情報ブロックへのポインタ */
     252        MTXCB                   *p_lastmtx;             /* 最後にロックしたミューテックス */
    420253#ifdef TOPPERS_SUPPORT_OVRHDR
    421         PRCTIM                  leftotm;                /* 残りプロセッサ時間 */
     254        PRCTIM                  leftotm;                /* 残りプロセッサ時間 */
    422255#endif /* TOPPERS_SUPPORT_OVRHDR */
    423         TSKCTXB                 tskctxb;                /* タスクコンテキストブロック */
     256        TSKCTXB                 tskctxb;                /* タスクコンテキストブロック */
    424257} TCB;
    425258
    426259/*
    427  *  実行状æ
    428 ‹ã®ã‚¿ã‚¹ã‚¯
    429  *
    430  *  実行状æ
    431 ‹ã®ã‚¿ã‚¹ã‚¯ï¼ˆï¼ãƒ—ロセッサがコンテキストを持っているタスク)の
    432  *  TCBを指すポインタ.実行状æ
    433 ‹ã®ã‚¿ã‚¹ã‚¯ãŒãªã„場合はNULLにする.
    434  *
    435  *  サービスコールの処理中で,自タスク(サービスコールを呼び出したタス
    436  *  ク)に関するæƒ
    437 å ±ã‚’参ç
    438 §ã™ã‚‹å ´åˆã¯p_runtskを使う.p_runtskを書き換え
    439  *  るのは,ディスパッチャ(と初期化処理)のみである.
     260 *  実行状態のタスク
     261 *
     262 *  実行状態のタスク(=プロセッサがコンテキストを持っているタスク)の
     263 *  TCBを指すポインタ.実行状態のタスクがない場合はNULLにする.
     264 *
     265 *  サービスコールの処理中で,自タスク(サービスコールを呼び出したタス
     266 *  ク)に関する情報を参照する場合はp_runtskを使う.p_runtskを書き換え
     267 *  るのは,ディスパッチャ(と初期化処理)のみである.
    440268 */
    441269extern TCB      *p_runtsk;
    442270
    443271/*
    444  *  実行すべきタスク
    445  *
    446  *  実行すべきタスクのTCBを指すポインタ.実行できるタスクがない場合は
    447  *  NULLにする.
    448  *
    449  *  p_runtskは,通常はp_schedtskと一致しているが,非タスクコンテキスト
    450  *  実行中は,一致しているとは限らない.割込み優å
    451 ˆåº¦ãƒžã‚¹ã‚¯å
    452 ¨è§£é™¤ã§ãªã„
    453  *  状æ
    454 ‹ã®é–“とディスパッチ禁止状æ
    455 ‹ã®é–“(すなわち,dspflgがfalseである間)
    456  *  は,p_schedtskを更新しない.
     272 *  実行すべきタスク
     273 *
     274 *  実行すべきタスクのTCBを指すポインタ.実行できるタスクがない場合は
     275 *  NULLにする.
     276 *
     277 *  p_runtskは,通常はp_schedtskと一致しているが,非タスクコンテキスト
     278 *  実行中は,一致しているとは限らない.割込み優先度マスク全解除でない
     279 *  状態の間とディスパッチ禁止状態の間(すなわち,dspflgがfalseである間)
     280 *  は,p_schedtskを更新しない.
    457281 */
    458282extern TCB      *p_schedtsk;
    459283
    460284/*
    461  *  ディスパッチ許可状æ
    462 ‹
    463  *
    464  *  ディスパッチ許可状æ
    465 ‹ã§ã‚ることを示すフラグ.
     285 *  ディスパッチ許可状態
     286 *
     287 *  ディスパッチ許可状態であることを示すフラグ.
    466288 */
    467289extern bool_t   enadsp;
    468290
    469291/*
    470  *  タスクディスパッチ可能状æ
    471 ‹
    472  *
    473  *  割込み優å
    474 ˆåº¦ãƒžã‚¹ã‚¯å
    475 ¨è§£é™¤çŠ¶æ
    476 ‹ã§ã‚り,ディスパッチ許可状æ
    477 ‹ã§ã‚る(ディ
    478  *  スパッチ禁止状æ
    479 ‹ã§ãªã„)ことを示すフラグ.ディスパッチ保留状æ
    480 ‹ã§ãª
    481  *  いことは,タスクコンテキスト実行中で,CPUロック状æ
    482 ‹ã§ãªãï¼Œdspflgが
    483  *  trueであることで判別することができる.
     292 *  タスクディスパッチ可能状態
     293 *
     294 *  割込み優先度マスク全解除状態であり,ディスパッチ許可状態である(ディ
     295 *  スパッチ禁止状態でない)ことを示すフラグ.ディスパッチ保留状態でな
     296 *  いことは,タスクコンテキスト実行中で,CPUロック状態でなく,dspflgが
     297 *  trueであることで判別することができる.
    484298 */
    485299extern bool_t   dspflg;
    486300
    487301/*
    488  *  レディキュー
    489  *
    490  *  レディキューは,実行できる状æ
    491 ‹ã®ã‚¿ã‚¹ã‚¯ã‚’管理するためのキューである.
    492  *  実行状æ
    493 ‹ã®ã‚¿ã‚¹ã‚¯ã‚‚管理しているため,レディ(実行可能)キューという
    494  *  名称は正確ではないが,レディキューという名称が定着しているため,こ
    495  *  の名称で呼ぶことにする.
    496  *
    497  *  レディキューは,優å
    498 ˆåº¦ã”とのタスクキューで構成されている.タスクの
    499  *  TCBは,該当する優å
    500 ˆåº¦ã®ã‚­ãƒ¥ãƒ¼ã«ç™»éŒ²ã•ã‚Œã‚‹ï¼Ž
     302 *  レディキュー
     303 *
     304 *  レディキューは,実行できる状態のタスクを管理するためのキューである.
     305 *  実行状態のタスクも管理しているため,レディ(実行可能)キューという
     306 *  名称は正確ではないが,レディキューという名称が定着しているため,こ
     307 *  の名称で呼ぶことにする.
     308 *
     309 *  レディキューは,優先度ごとのタスクキューで構成されている.タスクの
     310 *  TCBは,該当する優先度のキューに登録される.
    501311 */
    502312extern QUEUE    ready_queue[TNUM_TPRI];
    503313
    504314/*
    505  *  レディキューサーチのためのビットマップ
    506  *
    507  *  レディキューのサーチを効率よく行うために,優å
    508 ˆåº¦ã”とのタスクキュー
    509  *  にタスクがå
    510 ¥ã£ã¦ã„るかどうかを示すビットマップを用意している.ビッ
    511  *  トマップを使うことで,メモリアクセスの回数を減らすことができるが,
    512  *  ビット操作命令がå
    513 
    514 å®Ÿã—ていないプロセッサで,優å
    515 ˆåº¦ã®æ®µéšŽæ•°ãŒå°‘ない
    516  *  場合には,ビットマップ操作のオーバーヘッドのために,逆に効率が落ち
    517  *  る可能性もある.
    518  *
    519  *  優å
    520 ˆåº¦ãŒ16段階であることを仮定しているため,uint16_t型としている.
     315 *  レディキューサーチのためのビットマップ
     316 *
     317 *  レディキューのサーチを効率よく行うために,優先度ごとのタスクキュー
     318 *  にタスクが入っているかどうかを示すビットマップを用意している.ビッ
     319 *  トマップを使うことで,メモリアクセスの回数を減らすことができるが,
     320 *  ビット操作命令が充実していないプロセッサで,優先度の段階数が少ない
     321 *  場合には,ビットマップ操作のオーバーヘッドのために,逆に効率が落ち
     322 *  る可能性もある.
     323 *
     324 *  優先度が16段階であることを仮定しているため,uint16_t型としている.
    521325 */
    522326extern uint16_t ready_primap;
    523327
    524328/*
    525  *  使用していないTCBのリスト
     329 *  使用していないTCBのリスト
    526330 */
    527331extern QUEUE    free_tcb;
    528332
    529333/*
    530  *  タスクIDの最大値(kernel_cfg.c)
     334 *  タスクIDの最大値(kernel_cfg.c)
    531335 */
    532336extern const ID tmax_tskid;
     
    534338
    535339/*
    536  *  タスク初期化ブロックのエリア(kernel_cfg.c)
     340 *  タスク初期化ブロックのエリア(kernel_cfg.c)
    537341 */
    538342extern const TINIB      tinib_table[];
     
    540344
    541345/*
    542  *  タスク生成順序テーブル(kernel_cfg.c)
     346 *  タスク生成順序テーブル(kernel_cfg.c)
    543347 */
    544348extern const ID torder_table[];
    545349
    546350/*
    547  *  TCBのエリア(kernel_cfg.c)
     351 *  TCBのエリア(kernel_cfg.c)
    548352 */
    549353extern TCB      tcb_table[];
    550354
    551355/*
    552  *  タスクの数
     356 *  タスクの数
    553357 */
    554358#define tnum_tsk        ((uint_t)(tmax_tskid - TMIN_TSKID + 1))
     
    556360
    557361/*
    558  *  タスクIDからTCBを取り出すためのマクロ
     362 *  タスクIDからTCBを取り出すためのマクロ
    559363 */
    560364#define INDEX_TSK(tskid)        ((uint_t)((tskid) - TMIN_TSKID))
     
    562366
    563367/*
    564  *  TCBからタスクIDを取り出すためのマクロ
     368 *  TCBからタスクIDを取り出すためのマクロ
    565369 */
    566370#define TSKID(p_tcb)    ((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
    567371
    568372/*
    569  *  タスク管理モジュールの初期化
     373 *  タスク管理モジュールの初期化
    570374 */
    571375extern void     initialize_task(void);
    572376
    573377/*
    574  *  最高優å
    575 ˆé †ä½ã‚¿ã‚¹ã‚¯ã®ã‚µãƒ¼ãƒ
    576  *
    577  *  レディキュー中の最高優å
    578 ˆé †ä½ã®ã‚¿ã‚¹ã‚¯ã‚’サーチし,そのTCBへのポインタ
    579  *  を返す.レディキューが空の場合には,この関数を呼び出してはならない.
     378 *  最高優先順位タスクのサーチ
     379 *
     380 *  レディキュー中の最高優先順位のタスクをサーチし,そのTCBへのポインタ
     381 *  を返す.レディキューが空の場合には,この関数を呼び出してはならない.
    580382 */
    581383extern TCB      *search_schedtsk(void);
    582384
    583385/*
    584  *  実行できる状æ
    585 ‹ã¸ã®é·ç§»
    586  *
    587  *  p_tcbで指定されるタスクをレディキューに挿å
    588 ¥ã™ã‚‹ï¼Žãƒ¬ãƒ‡ã‚£ã‚­ãƒ¥ãƒ¼ã«æŒ¿å
    589 ¥
    590  *  したタスクの優å
    591 ˆåº¦ãŒï¼Œå®Ÿè¡Œã™ã¹ãã‚¿ã‚¹ã‚¯ã®å„ªå
    592 ˆåº¦ã‚ˆã‚Šã‚‚高い場合は,実
    593  *  行すべきタスクを更新する.
     386 *  実行できる状態への遷移
     387 *
     388 *  p_tcbで指定されるタスクをレディキューに挿入する.レディキューに挿入
     389 *  したタスクの優先度が,実行すべきタスクの優先度よりも高い場合は,実
     390 *  行すべきタスクを更新する.
    594391 */
    595392extern void     make_runnable(TCB *p_tcb);
    596393
    597394/*
    598  *  実行できる状æ
    599 ‹ã‹ã‚‰ä»–の状æ
    600 ‹ã¸ã®é·ç§»
    601  *
    602  *  p_tcbで指定されるタスクをレディキューから削除する.p_tcbで指定した
    603  *  タスクが実行すべきタスクであった場合には,実行すべきタスクを更新す
    604  *  る.
     395 *  実行できる状態から他の状態への遷移
     396 *
     397 *  p_tcbで指定されるタスクをレディキューから削除する.p_tcbで指定した
     398 *  タスクが実行すべきタスクであった場合には,実行すべきタスクを更新す
     399 *  る.
    605400 */
    606401extern void     make_non_runnable(TCB *p_tcb);
    607402
    608403/*
    609  *  休止状æ
    610 ‹ã¸ã®é·ç§»
    611  *
    612  *  p_tcbで指定されるタスクの状æ
    613 ‹ã‚’休止状æ
    614 ‹ã¨ã™ã‚‹ï¼Žã¾ãŸï¼Œã‚¿ã‚¹ã‚¯ã®èµ·å‹•
    615  *  時に初期化すべき変数の初期化と,タスク起動のためのコンテキストを設
    616  *  定する.
     404 *  休止状態への遷移
     405 *
     406 *  p_tcbで指定されるタスクの状態を休止状態とする.また,タスクの起動
     407 *  時に初期化すべき変数の初期化と,タスク起動のためのコンテキストを設
     408 *  定する.
    617409 */
    618410extern void     make_dormant(TCB *p_tcb);
    619411
    620412/*
    621  *  休止状æ
    622 ‹ã‹ã‚‰å®Ÿè¡Œã§ãã‚‹çŠ¶æ
    623 ‹ã¸ã®é·ç§»
    624  *
    625  *  p_tcbで指定されるタスクの状æ
    626 ‹ã‚’休止状æ
    627 ‹ã‹ã‚‰å®Ÿè¡Œã§ãã‚‹çŠ¶æ
    628 ‹ã¨ã™ã‚‹ï¼Ž
     413 *  休止状態から実行できる状態への遷移
     414 *
     415 *  p_tcbで指定されるタスクの状態を休止状態から実行できる状態とする.
    629416 */
    630417extern void     make_active(TCB *p_tcb);
    631418
    632419/*
    633  *  タスクの優å
    634 ˆåº¦ã®å¤‰æ›´
    635  *
    636  *  p_tcbで指定されるタスクの優å
    637 ˆåº¦ã‚’newpri(å†
    638 éƒ¨è¡¨ç¾ï¼‰ã«å¤‰æ›´ã™ã‚‹ï¼Žã¾ãŸï¼Œ
    639  *  å¿
    640 è¦ãªå ´åˆã«ã¯ï¼Œå®Ÿè¡Œã™ã¹ãã‚¿ã‚¹ã‚¯ã‚’更新する.
    641  *
    642  *  p_tcbで指定されるタスクの優å
    643 ˆé †ä½ã¯ï¼Œå„ªå
    644 ˆåº¦ãŒåŒã˜ã‚¿ã‚¹ã‚¯ã®ä¸­ã§ï¼Œ
    645  *  mtxmodeがfalseの時は最低,mtxmodeがtrueの時は最高とする.
     420 *  タスクの優先度の変更
     421 *
     422 *  p_tcbで指定されるタスクの優先度をnewpri(内部表現)に変更する.また,
     423 *  必要な場合には,実行すべきタスクを更新する.
     424 *
     425 *  p_tcbで指定されるタスクの優先順位は,優先度が同じタスクの中で,
     426 *  mtxmodeがfalseの時は最低,mtxmodeがtrueの時は最高とする.
    646427 */
    647428extern void     change_priority(TCB *p_tcb, uint_t newpri, bool_t mtxmode);
    648429
    649430/*
    650  *  レディキューの回転
    651  *
    652  *  レディキュー中の,p_queueで指定されるタスクキューを回転させる.また,
    653  *  å¿
    654 è¦ãªå ´åˆã«ã¯ï¼Œå®Ÿè¡Œã™ã¹ãã‚¿ã‚¹ã‚¯ã‚’更新する.
     431 *  レディキューの回転
     432 *
     433 *  レディキュー中の,p_queueで指定されるタスクキューを回転させる.また,
     434 *  必要な場合には,実行すべきタスクを更新する.
    655435 */
    656436extern void     rotate_ready_queue(QUEUE *p_queue);
    657437
    658438/*
    659  *  タスクの終了処理
    660  *
    661  *  p_tcbで指定されるタスクを終了させる処理を行う.タスクの起動要求キュー
    662  *  イング数が0でない場合には,再度起動するための処理を行う.
     439 *  タスクの終了処理
     440 *
     441 *  p_tcbで指定されるタスクを終了させる処理を行う.タスクの起動要求キュー
     442 *  イング数が0でない場合には,再度起動するための処理を行う.
    663443 */
    664444extern void     task_terminate(TCB *p_tcb);
  • asp3_gr_sakura/trunk/kernel/task.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010#
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     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#       免責すること.
    4733#
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
    5439#
    55 #   $Id: task.trb 668 2016-03-03 13:57:53Z ertl-hiro $
     40#   $Id$
    5641#
    5742
    5843#
    59 #               ã‚¿ã‚¹ã‚¯ç®¡ç†ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ç”Ÿæˆã‚¹ã‚¯ãƒªãƒ—ト
     44#               タスク管理モジュールの生成スクリプト
    6045#
    6146
     
    6651
    6752  def prepare(key, params)
    68     # パラメータが省略された時のデフォルト値の設定
     53    # パラメータが省略された時のデフォルト値の設定
    6954    params[:stk] ||= "NULL"
    7055
    71     # tskatrが無効の場合(E_RSATR)[NGKI1028ï¼½
    72     #(TA_ACT,TA_NOACTQUE,TARGET_TSKATR以外のビットがセットされている場合)
     56    # tskatrが無効の場合(E_RSATR)[NGKI1028]
     57    #(TA_ACT,TA_NOACTQUE,TARGET_TSKATR以外のビットがセットされている場合)
    7358    if (params[:tskatr] & ~($TA_ACT|$TA_NOACTQUE|$TARGET_TSKATR)) != 0
    7459      error_illegal_id("E_RSATR", params, :tskatr, :tskid)
    7560    end
    7661
    77     # (TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)でない場合[NGKI1034ï¼½
     62    # (TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)でない場合[NGKI1034]
    7863    if !($TMIN_TPRI <= params[:itskpri] && params[:itskpri] <= $TMAX_TPRI)
    7964      error_illegal_id("E_PAR", params, :itskpri, :tskid)
    8065    end
    8166
    82     # stkszがターゲット定義の最小値(TARGET_MIN_STKSZ,未定義の場合は1)
    83     # よりも小さい場合[NGKI1042ï¼½
     67    # stkszがターゲット定義の最小値(TARGET_MIN_STKSZ,未定義の場合は1)
     68    # よりも小さい場合[NGKI1042]
    8469    if params[:stksz] < $TARGET_MIN_STKSZ
    8570      error_wrong_id("E_PAR", params, :stksz, :tskid, "too small")
    8671    end
    8772
    88     # スタック領域の設定[NGKI1041ï¼½
     73    # スタック領域の設定[NGKI1041]
    8974    if params[:stk] == "NULL"
    90       # スタック領域の生成[NGKI1049ï¼½
     75      # スタック領域の生成[NGKI1049]
    9176      stkName = "_kernel_stack_#{params[:tskid]}"
    9277      params[:tinib_stksz] = AllocStack(stkName, params[:stksz])
    9378      params[:tinib_stk] = stkName
    9479    else
    95       # stkszがスタック領域のサイズとして正しくない場合[NGKI1056ï¼½
     80      # stkszがスタック領域のサイズとして正しくない場合[NGKI1056]
    9681      if (params[:stksz] & ($CHECK_STKSZ_ALIGN - 1)) != 0
    9782        error_wrong_id("E_PAR", params, :stksz, :tskid, "not aligned")
     
    116101
    117102#
    118 #  タスク管理に関するæƒ
    119 å ±ã®ç”Ÿæˆ
     103#  タスク管理に関する情報の生成
    120104#
    121105$kernelCfgC.comment_header("Task Management Functions")
     
    125109TaskObject.new.generate()
    126110
    127 # タスク生成順序テーブルの生成
     111# タスク生成順序テーブルの生成
    128112$kernelCfgC.add("const ID _kernel_torder_table[TNUM_STSKID] = { ")
    129113$kernelCfgC.append("\t")
  • asp3_gr_sakura/trunk/kernel/task_manage.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              タスク管理機能
     44 *              タスク管理機能
    6045 */
    6146
     
    6752
    6853/*
    69  *  トレースログマクロのデフォルト定義
     54 *  トレースログマクロのデフォルト定義
    7055 */
    7156#ifndef LOG_ACRE_TSK_ENTER
     
    134119
    135120/*
    136  *  タスクの生成
     121 *  タスクの生成
    137122 *
    138  *  pk_ctsk->exinfは,エラーチェックをせず,一度しか参ç
    139 §ã—ないため,ロー
    140  *  カル変数にコピーするå¿
    141 è¦ãŒãªã„(途中で書き換わっても支障がない).
     123 *  pk_ctsk->exinfは,エラーチェックをせず,一度しか参照しないため,ロー
     124 *  カル変数にコピーする必要がない(途中で書き換わっても支障がない).
    142125 */
    143126#ifdef TOPPERS_acre_tsk
    144127
    145128#ifndef TARGET_MIN_STKSZ
    146 #define TARGET_MIN_STKSZ        1U              /* 未定義の場合は0でないことをチェック */
     129#define TARGET_MIN_STKSZ        1U              /* 未定義の場合は0でないことをチェック */
    147130#endif /* TARGET_MIN_STKSZ */
    148131
     
    226209
    227210/*
    228  *  タスクの削除[NGKI1100ï¼½
     211 *  タスクの削除[NGKI1100]
    229212 */
    230213#ifdef TOPPERS_del_tsk
     
    238221
    239222        LOG_DEL_TSK_ENTER(tskid);
    240         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1101][NGKI1102ï¼½*/
    241         CHECK_ID(VALID_TSKID(tskid));                           /*ï¼»NGKI1103ï¼½*/
     223        CHECK_TSKCTX_UNL();                                                     /*[NGKI1101][NGKI1102]*/
     224        CHECK_ID(VALID_TSKID(tskid));                           /*[NGKI1103]*/
    242225        p_tcb = get_tcb(tskid);
    243226
    244227        lock_cpu();
    245228        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    246                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1104ï¼½*/
     229                ercd = E_NOEXS;                                                 /*[NGKI1104]*/
    247230        }
    248231        else if (tskid <= tmax_stskid || !TSTAT_DORMANT(p_tcb->tstat)) {
    249                 ercd = E_OBJ;                                                   /*ï¼»NGKI1106][NGKI1107ï¼½*/
     232                ercd = E_OBJ;                                                   /*[NGKI1106][NGKI1107]*/
    250233        }
    251234        else {
     
    254237                term_tskinictxb(&(p_tinib->tskinictxb));
    255238#else /* USE_TSKINICTXB */
    256                 if ((p_tinib->tskatr & TA_MEMALLOC) != 0U) {    /*ï¼»NGKI1109ï¼½*/
     239                if ((p_tinib->tskatr & TA_MEMALLOC) != 0U) {    /*[NGKI1109]*/
    257240                        kernel_free(p_tinib->stk);
    258241                }
    259242#endif /* USE_TSKINICTXB */
    260                 p_tinib->tskatr = TA_NOEXS;                             /*ï¼»NGKI1108ï¼½*/
     243                p_tinib->tskatr = TA_NOEXS;                             /*[NGKI1108]*/
    261244                queue_insert_prev(&free_tcb, &(p_tcb->task_queue));
    262245                ercd = E_OK;
     
    272255
    273256/*
    274  *  タスクの起動[NGKI3529ï¼½
     257 *  タスクの起動[NGKI3529]
    275258 */
    276259#ifdef TOPPERS_act_tsk
     
    283266
    284267        LOG_ACT_TSK_ENTER(tskid);
    285         CHECK_UNL();                                                            /*ï¼»NGKI1114ï¼½*/
     268        CHECK_UNL();                                                            /*[NGKI1114]*/
    286269        if (tskid == TSK_SELF && !sense_context()) {
    287                 p_tcb = p_runtsk;                                               /*ï¼»NGKI1121ï¼½*/
    288         }
    289         else {
    290                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI1115ï¼½*/
     270                p_tcb = p_runtsk;                                               /*[NGKI1121]*/
     271        }
     272        else {
     273                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI1115]*/
    291274                p_tcb = get_tcb(tskid);
    292275        }
     
    294277        lock_cpu();
    295278        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    296                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1116ï¼½*/
     279                ercd = E_NOEXS;                                                 /*[NGKI1116]*/
    297280        }
    298281        else if (TSTAT_DORMANT(p_tcb->tstat)) {
    299                 make_active(p_tcb);                                             /*ï¼»NGKI1118ï¼½*/
     282                make_active(p_tcb);                                             /*[NGKI1118]*/
    300283                if (p_runtsk != p_schedtsk) {
    301284                        if (!sense_context()) {
     
    309292        }
    310293        else if ((p_tcb->p_tinib->tskatr & TA_NOACTQUE) != 0U || p_tcb->actque) {
    311                 ercd = E_QOVR;                                                  /*ï¼»NGKI3528ï¼½*/
    312         }
    313         else {
    314                 p_tcb->actque = true;                                   /*ï¼»NGKI3527ï¼½*/
     294                ercd = E_QOVR;                                                  /*[NGKI3528]*/
     295        }
     296        else {
     297                p_tcb->actque = true;                                   /*[NGKI3527]*/
    315298                ercd = E_OK;
    316299        }
     
    325308
    326309/*
    327  *  タスク起動要求のキャンセル[NGKI1138ï¼½
     310 *  タスク起動要求のキャンセル[NGKI1138]
    328311 */
    329312#ifdef TOPPERS_can_act
     
    336319
    337320        LOG_CAN_ACT_ENTER(tskid);
    338         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1139][NGKI1140ï¼½*/
     321        CHECK_TSKCTX_UNL();                                                     /*[NGKI1139][NGKI1140]*/
    339322        if (tskid == TSK_SELF) {
    340                 p_tcb = p_runtsk;                                               /*ï¼»NGKI1146ï¼½*/
    341         }
    342         else {
    343                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI1141ï¼½*/
     323                p_tcb = p_runtsk;                                               /*[NGKI1146]*/
     324        }
     325        else {
     326                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI1141]*/
    344327                p_tcb = get_tcb(tskid);
    345328        }
     
    347330        lock_cpu();
    348331        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    349                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1142ï¼½*/
    350         }
    351         else {
    352                 ercd = p_tcb->actque ? 1 : 0;                   /*ï¼»NGKI1144ï¼½*/
    353                 p_tcb->actque = false;                                  /*ï¼»NGKI1144ï¼½*/
     332                ercd = E_NOEXS;                                                 /*[NGKI1142]*/
     333        }
     334        else {
     335                ercd = p_tcb->actque ? 1 : 0;                   /*[NGKI1144]*/
     336                p_tcb->actque = false;                                  /*[NGKI1144]*/
    354337        }
    355338        unlock_cpu();
     
    363346
    364347/*
    365  *  タスク状æ
    366 ‹ã®å‚ç
    367 §ï¼»NGKI3613ï¼½
     348 *  タスク状態の参照[NGKI3613]
    368349 */
    369350#ifdef TOPPERS_get_tst
     
    377358
    378359        LOG_GET_TST_ENTER(tskid, p_tskstat);
    379         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3614][NGKI3615ï¼½*/
     360        CHECK_TSKCTX_UNL();                                                     /*[NGKI3614][NGKI3615]*/
    380361        if (tskid == TSK_SELF) {
    381                 p_tcb = p_runtsk;                                               /*ï¼»NGKI3621ï¼½*/
    382         }
    383         else {
    384                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI3616ï¼½*/
     362                p_tcb = p_runtsk;                                               /*[NGKI3621]*/
     363        }
     364        else {
     365                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI3616]*/
    385366                p_tcb = get_tcb(tskid);
    386367        }
     
    389370        tstat = p_tcb->tstat;
    390371        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    391                 ercd = E_NOEXS;                                                 /*ï¼»NGKI3617ï¼½*/
    392         }
    393         else {
    394                 if (TSTAT_DORMANT(tstat)) {                             /*ï¼»NGKI3620ï¼½*/
     372                ercd = E_NOEXS;                                                 /*[NGKI3617]*/
     373        }
     374        else {
     375                if (TSTAT_DORMANT(tstat)) {                             /*[NGKI3620]*/
    395376                        *p_tskstat = TTS_DMT;
    396377                }
     
    424405
    425406/*
    426  *  タスクのベース優å
    427 ˆåº¦ã®å¤‰æ›´ï¼»NGKI1183ï¼½
     407 *  タスクのベース優先度の変更[NGKI1183]
    428408 */
    429409#ifdef TOPPERS_chg_pri
     
    437417
    438418        LOG_CHG_PRI_ENTER(tskid, tskpri);
    439         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1184][NGKI1185ï¼½*/
     419        CHECK_TSKCTX_UNL();                                                     /*[NGKI1184][NGKI1185]*/
    440420        if (tskid == TSK_SELF) {
    441                 p_tcb = p_runtsk;                                               /*ï¼»NGKI1198ï¼½*/
    442         }
    443         else {
    444                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI1187ï¼½*/
     421                p_tcb = p_runtsk;                                               /*[NGKI1198]*/
     422        }
     423        else {
     424                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI1187]*/
    445425                p_tcb = get_tcb(tskid);
    446426        }
    447427        if (tskpri == TPRI_INI) {
    448                 newbpri = p_tcb->p_tinib->ipriority;    /*ï¼»NGKI1199ï¼½*/
    449         }
    450         else {
    451                 CHECK_PAR(VALID_TPRI(tskpri));                  /*ï¼»NGKI1188ï¼½*/
     428                newbpri = p_tcb->p_tinib->ipriority;    /*[NGKI1199]*/
     429        }
     430        else {
     431                CHECK_PAR(VALID_TPRI(tskpri));                  /*[NGKI1188]*/
    452432                newbpri = INT_PRIORITY(tskpri);
    453433        }
     
    455435        lock_cpu();
    456436        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    457                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1189ï¼½*/
     437                ercd = E_NOEXS;                                                 /*[NGKI1189]*/
    458438        }
    459439        else if (TSTAT_DORMANT(p_tcb->tstat)) {
    460                 ercd = E_OBJ;                                                   /*ï¼»NGKI1191ï¼½*/
     440                ercd = E_OBJ;                                                   /*[NGKI1191]*/
    461441        }
    462442        else if ((p_tcb->p_lastmtx != NULL || TSTAT_WAIT_MTX(p_tcb->tstat))
    463443                                                && !((*mtxhook_check_ceilpri)(p_tcb, newbpri))) {
    464                 ercd = E_ILUSE;                                                 /*ï¼»NGKI1201ï¼½*/
    465         }
    466         else {
    467                 p_tcb->bpriority = newbpri;                             /*ï¼»NGKI1192ï¼½*/
     444                ercd = E_ILUSE;                                                 /*[NGKI1201]*/
     445        }
     446        else {
     447                p_tcb->bpriority = newbpri;                             /*[NGKI1192]*/
    468448                if (p_tcb->p_lastmtx == NULL || !((*mtxhook_scan_ceilmtx)(p_tcb))) {
    469                         change_priority(p_tcb, newbpri, false);         /*ï¼»NGKI1193ï¼½*/
     449                        change_priority(p_tcb, newbpri, false);         /*[NGKI1193]*/
    470450                        if (p_runtsk != p_schedtsk) {
    471451                                dispatch();
    472                         }                                                                       /*ï¼»NGKI1197ï¼½*/
     452                        }                                                                       /*[NGKI1197]*/
    473453                }
    474454                ercd = E_OK;
     
    484464
    485465/*
    486  *  タスク優å
    487 ˆåº¦ã®å‚ç
    488 §ï¼»NGKI1202ï¼½
     466 *  タスク優先度の参照[NGKI1202]
    489467 */
    490468#ifdef TOPPERS_get_pri
     
    497475
    498476        LOG_GET_PRI_ENTER(tskid, p_tskpri);
    499         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1203][NGKI1204ï¼½*/
     477        CHECK_TSKCTX_UNL();                                                     /*[NGKI1203][NGKI1204]*/
    500478        if (tskid == TSK_SELF) {
    501                 p_tcb = p_runtsk;                                               /*ï¼»NGKI1211ï¼½*/
    502         }
    503         else {
    504                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI1205ï¼½*/
     479                p_tcb = p_runtsk;                                               /*[NGKI1211]*/
     480        }
     481        else {
     482                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI1205]*/
    505483                p_tcb = get_tcb(tskid);
    506484        }
     
    508486        lock_cpu();
    509487        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    510                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1206ï¼½*/
     488                ercd = E_NOEXS;                                                 /*[NGKI1206]*/
    511489        }
    512490        else if (TSTAT_DORMANT(p_tcb->tstat)) {
    513                 ercd = E_OBJ;                                                   /*ï¼»NGKI1209ï¼½*/
    514         }
    515         else {
    516                 *p_tskpri = EXT_TSKPRI(p_tcb->priority);        /*ï¼»NGKI1210ï¼½*/
     491                ercd = E_OBJ;                                                   /*[NGKI1209]*/
     492        }
     493        else {
     494                *p_tskpri = EXT_TSKPRI(p_tcb->priority);        /*[NGKI1210]*/
    517495                ercd = E_OK;
    518496        }
     
    527505
    528506/*
    529  *  自タスクの拡張æƒ
    530 å ±ã®å‚ç
    531 §ï¼»NGKI1212ï¼½
     507 *  自タスクの拡張情報の参照[NGKI1212]
    532508 */
    533509#ifdef TOPPERS_get_inf
     
    539515
    540516        LOG_GET_INF_ENTER(p_exinf);
    541         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1213][NGKI1214ï¼½*/
    542 
    543         lock_cpu();
    544         *p_exinf = p_runtsk->p_tinib->exinf;            /*ï¼»NGKI1216ï¼½*/
     517        CHECK_TSKCTX_UNL();                                                     /*[NGKI1213][NGKI1214]*/
     518
     519        lock_cpu();
     520        *p_exinf = p_runtsk->p_tinib->exinf;            /*[NGKI1216]*/
    545521        ercd = E_OK;
    546522        unlock_cpu();
  • asp3_gr_sakura/trunk/kernel/task_refer.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
    9  *  上記著作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    12  *  変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    16  *      スコード中に含まれていること.
    17  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18  *      用できる形で再é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21  *      è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23  *      の無保証規定を掲載すること.
    24  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25  *      用できない形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27  *      と.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *    (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35  *        報告すること.
    36  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37  *      害からも,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    41  *      由に基づく請求からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43  *      å
    44 è²¬ã™ã‚‹ã“と.
    45  *
    46  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    47 ãŠ
    48  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    50  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    51  *  の責任を負わない.
     9 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
     31 *
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    5237 *
    5338 *  $Id$
     
    5540
    5641/*
    57  *              タスクの状æ
    58 ‹å‚ç
    59 §æ©Ÿèƒ½
     42 *              タスクの状態参照機能
    6043 */
    6144
     
    7356
    7457/*
    75  *  トレースログマクロのデフォルト定義
     58 *  トレースログマクロのデフォルト定義
    7659 */
    7760#ifndef LOG_REF_TSK_ENTER
     
    8467
    8568/*
    86  *  タスクの状æ
    87 ‹å‚ç
    88 §
     69 *  タスクの状態参照
    8970 */
    9071#ifdef TOPPERS_ref_tsk
     
    11596                if (TSTAT_DORMANT(tstat)) {
    11697                        /*
    117                          *  対象タスクが休止状æ
    118 ‹ã®å ´åˆ
     98                         *  対象タスクが休止状態の場合
    11999                         */
    120100                        pk_rtsk->tskstat = TTS_DMT;
     
    122102                else {
    123103                        /*
    124                          *  タスク状æ
    125 ‹ã®å–出し
     104                         *  タスク状態の取出し
    126105                         */
    127106                        if (TSTAT_SUSPENDED(tstat)) {
     
    144123
    145124                        /*
    146                          *  現在優å
    147 ˆåº¦ã¨ãƒ™ãƒ¼ã‚¹å„ªå
    148 ˆåº¦ã®å–出し
     125                         *  現在優先度とベース優先度の取出し
    149126                         */
    150127                        pk_rtsk->tskpri = EXT_TSKPRI(p_tcb->priority);
     
    153130                        if (TSTAT_WAITING(tstat)) {
    154131                                /*
    155                                  *  å¾
    156 ã¡è¦å› ã¨å¾
    157 ã¡å¯¾è±¡ã®ã‚ªãƒ–ジェクトのIDの取出し
     132                                 *  待ち要因と待ち対象のオブジェクトのIDの取出し
    158133                                 */
    159134                                switch (tstat) {
     
    207182
    208183                                /*
    209                                  *  タイムアウトするまでの時間の取出し
     184                                 *  タイムアウトするまでの時間の取出し
    210185                                 */
    211186                                if (p_tcb->p_winfo->p_tmevtb != NULL) {
     
    219194
    220195                        /*
    221                          *  起床要求キューイング数の取出し
     196                         *  起床要求キューイング数の取出し
    222197                         */
    223198                        pk_rtsk->wupcnt = p_tcb->wupque ? 1U : 0U;
    224199
    225200                        /*
    226                          *  タスク終了要求状æ
    227 ‹ã®å–出し
     201                         *  タスク終了要求状態の取出し
    228202                         */
    229203                        pk_rtsk->raster = p_tcb->raster;
    230204
    231205                        /*
    232                          *  タスク終了禁止状æ
    233 ‹ã®å–出し
     206                         *  タスク終了禁止状態の取出し
    234207                         */
    235208                        pk_rtsk->dister = !(p_tcb->enater);
     
    237210
    238211                /*
    239                  *  起動要求キューイング数の取出し
     212                 *  起動要求キューイング数の取出し
    240213                 */
    241214                pk_rtsk->actcnt = p_tcb->actque ? 1U : 0U;
  • asp3_gr_sakura/trunk/kernel/task_sync.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              タスク付属同期機能
     44 *              タスク付属同期機能
    6045 */
    6146
     
    6651
    6752/*
    68  *  トレースログマクロのデフォルト定義
     53 *  トレースログマクロのデフォルト定義
    6954 */
    7055#ifndef LOG_SLP_TSK_ENTER
     
    133118
    134119/*
    135  *  起床å¾
    136 ã¡
     120 *  起床待ち
    137121 */
    138122#ifdef TOPPERS_slp_tsk
     
    172156
    173157/*
    174  *  起床å¾
    175 ã¡ï¼ˆã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã‚り)
     158 *  起床待ち(タイムアウトあり)
    176159 */
    177160#ifdef TOPPERS_tslp_tsk
     
    216199
    217200/*
    218  *  タスクの起床
     201 *  タスクの起床
    219202 */
    220203#ifdef TOPPERS_wup_tsk
     
    272255
    273256/*
    274  *  タスク起床要求のキャンセル
     257 *  タスク起床要求のキャンセル
    275258 */
    276259#ifdef TOPPERS_can_wup
     
    313296
    314297/*
    315  *  å¾
    316 ã¡çŠ¶æ
    317 ‹ã®å¼·åˆ¶è§£é™¤
     298 *  待ち状態の強制解除
    318299 */
    319300#ifdef TOPPERS_rel_wai
     
    362343
    363344/*
    364  *  強制å¾
    365 ã¡çŠ¶æ
    366 ‹ã¸ã®ç§»è¡Œï¼»NGKI1298ï¼½
     345 *  強制待ち状態への移行[NGKI1298]
    367346 */
    368347#ifdef TOPPERS_sus_tsk
     
    375354
    376355        LOG_SUS_TSK_ENTER(tskid);
    377         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1299][NGKI1300ï¼½*/
     356        CHECK_TSKCTX_UNL();                                                     /*[NGKI1299][NGKI1300]*/
    378357        if (tskid == TSK_SELF) {
    379                 p_tcb = p_runtsk;                                               /*ï¼»NGKI1310ï¼½*/
    380         }
    381         else {
    382                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI1302ï¼½*/
     358                p_tcb = p_runtsk;                                               /*[NGKI1310]*/
     359        }
     360        else {
     361                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI1302]*/
    383362                p_tcb = get_tcb(tskid);
    384363        }
    385364
    386365        lock_cpu();
    387         if (p_tcb == p_runtsk && !dspflg) {                     /*ï¼»NGKI1311][NGKI3604ï¼½*/
     366        if (p_tcb == p_runtsk && !dspflg) {                     /*[NGKI1311][NGKI3604]*/
    388367                ercd = E_CTX;
    389368        }
    390369        else if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    391                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1303ï¼½*/
     370                ercd = E_NOEXS;                                                 /*[NGKI1303]*/
    392371        }
    393372        else if (TSTAT_DORMANT(p_tcb->tstat)) {
    394                 ercd = E_OBJ;                                                   /*ï¼»NGKI1305ï¼½*/
     373                ercd = E_OBJ;                                                   /*[NGKI1305]*/
    395374        }
    396375        else if (p_tcb->raster) {
    397                 ercd = E_RASTER;                                                /*ï¼»NGKI3605ï¼½*/
     376                ercd = E_RASTER;                                                /*[NGKI3605]*/
    398377        }
    399378        else if (TSTAT_RUNNABLE(p_tcb->tstat)) {
    400379                /*
    401                  *  実行できる状æ
    402 ‹ã‹ã‚‰å¼·åˆ¶å¾
    403 ã¡çŠ¶æ
    404 ‹ã¸ã®é·ç§»ï¼»NGKI1307ï¼½
     380                 *  実行できる状態から強制待ち状態への遷移[NGKI1307]
    405381                 */
    406382                p_tcb->tstat = TS_SUSPENDED;
     
    413389        }
    414390        else if (TSTAT_SUSPENDED(p_tcb->tstat)) {
    415                 ercd = E_QOVR;                                                  /*ï¼»NGKI1306ï¼½*/
     391                ercd = E_QOVR;                                                  /*[NGKI1306]*/
    416392        }
    417393        else {
    418394                /*
    419                  *  å¾
    420 ã¡çŠ¶æ
    421 ‹ã‹ã‚‰äºŒé‡å¾
    422 ã¡çŠ¶æ
    423 ‹ã¸ã®é·ç§»ï¼»NGKI1308ï¼½
     395                 *  待ち状態から二重待ち状態への遷移[NGKI1308]
    424396                 */
    425397                p_tcb->tstat |= TS_SUSPENDED;
     
    437409
    438410/*
    439  *  強制å¾
    440 ã¡çŠ¶æ
    441 ‹ã‹ã‚‰ã®å†é–‹
     411 *  強制待ち状態からの再開
    442412 */
    443413#ifdef TOPPERS_rsm_tsk
     
    463433        else if (!TSTAT_WAITING(p_tcb->tstat)) {
    464434                /*
    465                  *  強制å¾
    466 ã¡çŠ¶æ
    467 ‹ã‹ã‚‰å®Ÿè¡Œã§ãã‚‹çŠ¶æ
    468 ‹ã¸ã®é·ç§»
     435                 *  強制待ち状態から実行できる状態への遷移
    469436                 */
    470437                p_tcb->tstat = TS_RUNNABLE;
     
    478445        else {
    479446                /*
    480                  *  二重å¾
    481 ã¡çŠ¶æ
    482 ‹ã‹ã‚‰å¾
    483 ã¡çŠ¶æ
    484 ‹ã¸ã®é·ç§»
     447                 *  二重待ち状態から待ち状態への遷移
    485448                 */
    486449                p_tcb->tstat &= ~TS_SUSPENDED;
     
    498461
    499462/*
    500  *  自タスクのé
    501ʌȦ
     463 *  自タスクの遅延
    502464 */
    503465#ifdef TOPPERS_dly_tsk
  • asp3_gr_sakura/trunk/kernel/task_term.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              タスク終了機能
     44 *              タスク終了機能
    6045 */
    6146
     
    6752
    6853/*
    69  *  トレースログマクロのデフォルト定義
     54 *  トレースログマクロのデフォルト定義
    7055 */
    7156#ifndef LOG_EXT_TSK_ENTER
     
    118103
    119104/*
    120  *  自タスクの終了[NGKI1162ï¼½
     105 *  自タスクの終了[NGKI1162]
    121106 */
    122107#ifdef TOPPERS_ext_tsk
     
    129114
    130115        LOG_EXT_TSK_ENTER();
    131         CHECK_TSKCTX();                                                 /*ï¼»NGKI1164ï¼½*/
     116        CHECK_TSKCTX();                                                 /*[NGKI1164]*/
    132117
    133118        if (sense_lock()) {
    134119                /*
    135                  *  CPUロック状æ
    136 ‹ã§ext_tskが呼ばれた場合は,CPUロックを解除し
    137                  *  てからタスクを終了する.実è£
    138 ä¸Šã¯ï¼Œã‚µãƒ¼ãƒ“スコールå†
    139 ã§ã®CPU
    140                  *  ロックを省略すればよいだけ.[NGKI1168ï¼½
     120                 *  CPUロック状態でext_tskが呼ばれた場合は,CPUロックを解除し
     121                 *  てからタスクを終了する.実装上は,サービスコール内でのCPU
     122                 *  ロックを省略すればよいだけ.[NGKI1168]
    141123                 */
    142124        }
     
    149131                if (!enadsp) {
    150132                        /*
    151                          *  ディスパッチ禁止状æ
    152 ‹ã§ext_tskが呼ばれた場合は,ディスパッ
    153                          *  チ許可状æ
    154 ‹ã«ã—てからタスクを終了する.[NGKI1168ï¼½
     133                         *  ディスパッチ禁止状態でext_tskが呼ばれた場合は,ディスパッ
     134                         *  チ許可状態にしてからタスクを終了する.[NGKI1168]
    155135                         */
    156136                        enadsp = true;
     
    158138                if (intpri != TIPM_ENAALL) {
    159139                        /*
    160                          *  割込み優å
    161 ˆåº¦ãƒžã‚¹ã‚¯ï¼ˆIPM)がTIPM_ENAALL以外の状æ
    162 ‹ã§
    163                          *  ext_tskが呼ばれた場合は,IPMをTIPM_ENAALLにしてからタス
    164                          *  クを終了する.[NGKI1168ï¼½
     140                         *  割込み優先度マスク(IPM)がTIPM_ENAALL以外の状態で
     141                         *  ext_tskが呼ばれた場合は,IPMをTIPM_ENAALLにしてからタス
     142                         *  クを終了する.[NGKI1168]
    165143                         */
    166144                        t_set_ipm(TIPM_ENAALL);
     
    176154        }
    177155#endif /* TOPPERS_SUPPORT_OVRHDR */
    178         task_terminate(p_runtsk);                               /* ï¼»NGKI3449ï¼½*/
    179         exit_and_dispatch();                                    /* ï¼»NGKI1169ï¼½*/
    180         ercd = E_SYS;                                                   /* ï¼»NGKI1163ï¼½*/
     156        task_terminate(p_runtsk);                               /* [NGKI3449]*/
     157        exit_and_dispatch();                                    /* [NGKI1169]*/
     158        ercd = E_SYS;                                                   /* [NGKI1163]*/
    181159
    182160  error_exit:
     
    188166
    189167/*
    190  *  タスクの終了要求[NGKI3469ï¼½
     168 *  タスクの終了要求[NGKI3469]
    191169 */
    192170#ifdef TOPPERS_ras_ter
     
    199177
    200178        LOG_RAS_TER_ENTER(tskid);
    201         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3470][NGKI3471ï¼½*/
    202         CHECK_ID(VALID_TSKID(tskid));                           /*ï¼»NGKI3472ï¼½*/
     179        CHECK_TSKCTX_UNL();                                                     /*[NGKI3470][NGKI3471]*/
     180        CHECK_ID(VALID_TSKID(tskid));                           /*[NGKI3472]*/
    203181        p_tcb = get_tcb(tskid);
    204         CHECK_ILUSE(p_tcb != p_runtsk);                         /*ï¼»NGKI3475ï¼½*/
     182        CHECK_ILUSE(p_tcb != p_runtsk);                         /*[NGKI3475]*/
    205183
    206184        lock_cpu();
    207185        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    208                 ercd = E_NOEXS;                                                 /*ï¼»NGKI3473ï¼½*/
     186                ercd = E_NOEXS;                                                 /*[NGKI3473]*/
    209187        }
    210188        else if (TSTAT_DORMANT(p_tcb->tstat)) {
    211                 ercd = E_OBJ;                                                   /*ï¼»NGKI3476ï¼½*/
     189                ercd = E_OBJ;                                                   /*[NGKI3476]*/
    212190        }
    213191        else if (p_tcb->enater) {
    214                 task_terminate(p_tcb);                                  /*ï¼»NGKI3477ï¼½*/
     192                task_terminate(p_tcb);                                  /*[NGKI3477]*/
    215193                if (p_runtsk != p_schedtsk) {
    216194                        dispatch();
     
    219197        }
    220198        else {
    221                 p_tcb->raster = true;                                   /*ï¼»NGKI3478ï¼½*/
     199                p_tcb->raster = true;                                   /*[NGKI3478]*/
    222200                if (!TSTAT_RUNNABLE(p_tcb->tstat)) {
    223201                        if (TSTAT_WAITING(p_tcb->tstat)) {
    224                                 wait_dequeue_wobj(p_tcb);               /*ï¼»NGKI3479ï¼½*/
     202                                wait_dequeue_wobj(p_tcb);               /*[NGKI3479]*/
    225203                                wait_dequeue_tmevtb(p_tcb);
    226                                 p_tcb->p_winfo->wercd = E_RASTER;       /*ï¼»NGKI3480ï¼½*/
     204                                p_tcb->p_winfo->wercd = E_RASTER;       /*[NGKI3480]*/
    227205                        }
    228                         p_tcb->tstat = TS_RUNNABLE;                     /*ï¼»NGKI3606ï¼½*/
     206                        p_tcb->tstat = TS_RUNNABLE;                     /*[NGKI3606]*/
    229207                        LOG_TSKSTAT(p_tcb);
    230208                        make_runnable(p_tcb);
     
    245223
    246224/*
    247  *  タスク終了の禁止[NGKI3482ï¼½
     225 *  タスク終了の禁止[NGKI3482]
    248226 */
    249227#ifdef TOPPERS_dis_ter
     
    255233
    256234        LOG_DIS_TER_ENTER();
    257         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3483][NGKI3484ï¼½*/
     235        CHECK_TSKCTX_UNL();                                                     /*[NGKI3483][NGKI3484]*/
    258236
    259237        lock_cpu();
    260         p_runtsk->enater = false;                                       /*ï¼»NGKI3486ï¼½*/
     238        p_runtsk->enater = false;                                       /*[NGKI3486]*/
    261239        ercd = E_OK;
    262240        unlock_cpu();
     
    270248
    271249/*
    272  *  タスク終了の許可[NGKI3487ï¼½
     250 *  タスク終了の許可[NGKI3487]
    273251 */
    274252#ifdef TOPPERS_ena_ter
     
    280258
    281259        LOG_ENA_TER_ENTER();
    282         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3488][NGKI3489ï¼½*/
     260        CHECK_TSKCTX_UNL();                                                     /*[NGKI3488][NGKI3489]*/
    283261
    284262        lock_cpu();
     
    295273        }
    296274        else {
    297                 p_runtsk->enater = true;                                /*ï¼»NGKI3491ï¼½*/
     275                p_runtsk->enater = true;                                /*[NGKI3491]*/
    298276                ercd = E_OK;
    299277        }
     
    308286
    309287/*
    310  *  タスク終了禁止状æ
    311 ‹ã®å‚ç
    312 §ï¼»NGKI3494ï¼½
     288 *  タスク終了禁止状態の参照[NGKI3494]
    313289 */
    314290#ifdef TOPPERS_sns_ter
     
    321297        LOG_SNS_TER_ENTER();
    322298        /*
    323          *  enaterを変更できるのは自タスクのみであるため,排他制御せずに読
    324          *  んでも問題ない.
     299         *  enaterを変更できるのは自タスクのみであるため,排他制御せずに読
     300         *  んでも問題ない.
    325301         */
    326302        state = (p_runtsk != NULL && p_runtsk->enater) ? false : true;
    327                                                                                                 /*ï¼»NGKI3495][NGKI3496ï¼½*/
     303                                                                                                /*[NGKI3495][NGKI3496]*/
    328304        LOG_SNS_TER_LEAVE(state);
    329305        return(state);
     
    333309
    334310/*
    335  *  タスクの強制終了[NGKI1170ï¼½
     311 *  タスクの強制終了[NGKI1170]
    336312 */
    337313#ifdef TOPPERS_ter_tsk
     
    344320
    345321        LOG_TER_TSK_ENTER(tskid);
    346         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1171][NGKI1172ï¼½*/
    347         CHECK_ID(VALID_TSKID(tskid));                           /*ï¼»NGKI1173ï¼½*/
     322        CHECK_TSKCTX_UNL();                                                     /*[NGKI1171][NGKI1172]*/
     323        CHECK_ID(VALID_TSKID(tskid));                           /*[NGKI1173]*/
    348324        p_tcb = get_tcb(tskid);
    349         CHECK_ILUSE(p_tcb != p_runtsk);                         /*ï¼»NGKI1176ï¼½*/
     325        CHECK_ILUSE(p_tcb != p_runtsk);                         /*[NGKI1176]*/
    350326
    351327        lock_cpu();
    352328        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    353                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1174ï¼½*/
     329                ercd = E_NOEXS;                                                 /*[NGKI1174]*/
    354330        }
    355331        else if (TSTAT_DORMANT(p_tcb->tstat)) {
    356                 ercd = E_OBJ;                                                   /*ï¼»NGKI1177ï¼½*/
     332                ercd = E_OBJ;                                                   /*[NGKI1177]*/
    357333        }
    358334        else {
    359                 task_terminate(p_tcb);                                  /*ï¼»NGKI3450ï¼½*/
     335                task_terminate(p_tcb);                                  /*[NGKI3450]*/
    360336                if (p_runtsk != p_schedtsk) {
    361337                        dispatch();
  • asp3_gr_sakura/trunk/kernel/taskhook.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
    9  *  上記著作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    12  *  変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    16  *      スコード中に含まれていること.
    17  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18  *      用できる形で再é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21  *      è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23  *      の無保証規定を掲載すること.
    24  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25  *      用できない形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27  *      と.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *    (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35  *        報告すること.
    36  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37  *      害からも,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    41  *      由に基づく請求からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43  *      å
    44 è²¬ã™ã‚‹ã“と.
     9 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
    4531 *
    46  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    47 ãŠ
    48  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    50  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    51  *  の責任を負わない.
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    5237 *
    5338 *  $Id$
     
    5540
    5641/*
    57  *  タスク管理に関連するフックルーチン
     42 *  タスク管理に関連するフックルーチン
    5843 */
    5944
     
    6348
    6449/*
    65  *  ミューテックス機能のためのフックルーチン
     50 *  ミューテックス機能のためのフックルーチン
    6651 */
    6752#ifdef TOPPERS_mtxhook
  • asp3_gr_sakura/trunk/kernel/taskhook.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
    9  *  上記著作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    12  *  変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    16  *      スコード中に含まれていること.
    17  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18  *      用できる形で再é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21  *      è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23  *      の無保証規定を掲載すること.
    24  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25  *      用できない形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27  *      と.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *    (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35  *        報告すること.
    36  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37  *      害からも,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    41  *      由に基づく請求からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43  *      å
    44 è²¬ã™ã‚‹ã“と.
     9 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
    4531 *
    46  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    47 ãŠ
    48  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    50  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    51  *  の責任を負わない.
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    5237 *
    5338 *  $Id$
     
    5540
    5641/*
    57  *  タスク管理に関連するフックルーチン
     42 *  タスク管理に関連するフックルーチン
    5843 */
    5944
     
    6550
    6651/*
    67  *  ミューテックス機能のためのフックルーチン
     52 *  ミューテックス機能のためのフックルーチン
    6853 */
    6954extern bool_t   (*mtxhook_check_ceilpri)(TCB *p_tcb, uint_t bpriority);
  • asp3_gr_sakura/trunk/kernel/time_event.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              タイムイベント管理モジュール
     44 *              タイムイベント管理モジュール
    6045 */
    6146
     
    6449
    6550/*
    66  *  TSTEP_HRTCNTの範囲チェック
     51 *  TSTEP_HRTCNTの範囲チェック
    6752 */
    6853#if TSTEP_HRTCNT > 4000U
     
    7156
    7257/*
    73  *  HRTCNT_BOUNDの範囲チェック
     58 *  HRTCNT_BOUNDの範囲チェック
    7459 */
    7560#if HRTCNT_BOUND >= 4294000000U
     
    8469
    8570/*
    86  *  タイムイベントヒープ操作マクロ
     71 *  タイムイベントヒープ操作マクロ
    8772 */
    8873#define PARENT(p_tmevtn)        (tmevt_heap + (((p_tmevtn) - tmevt_heap) >> 1))
    89                                                                                                         /* 親ノードを求める */
     74                                                                                                        /* 親ノードを求める */
    9075#define LCHILD(p_tmevtn)        (tmevt_heap + (((p_tmevtn) - tmevt_heap) << 1))
    91                                                                                                         /* 左の子ノードを求める */
    92 /*
    93  *  タイムイベントヒープ中のå
    94 ˆé ­ã®ãƒŽãƒ¼ãƒ‰
     76                                                                                                        /* 左の子ノードを求める */
     77/*
     78 *  タイムイベントヒープ中の先頭のノード
    9579 */
    9680#define p_top_tmevtn    (&(tmevt_heap[1]))
    9781#define top_evttim              (tmevt_heap[1].p_tmevtb->evttim)
    98                                                                                 /* å
    99 ˆé ­ã®ã‚¿ã‚¤ãƒ ã‚¤ãƒ™ãƒ³ãƒˆã®ç™ºç”Ÿæ™‚刻 */
    100 /*
    101  *  タイムイベントヒープ中の最後のノード
     82                                                                                /* 先頭のタイムイベントの発生時刻 */
     83/*
     84 *  タイムイベントヒープ中の最後のノード
    10285 */
    10386#define p_last_tmevtn   (tmevt_heap[0].p_last)
    10487
    10588/*
    106  *  イベント時刻の前後関係の判定[ASPD1009ï¼½
     89 *  イベント時刻の前後関係の判定[ASPD1009]
    10790 *
    108  *  イベント時刻は,boundary_evttimからの相対値で比較する.すなわち,
    109  *  boundary_evttimを最も早い時刻,boundary_evttim-1が最もé
    110 ã„時刻とみ
    111  *  なして比較する.
     91 *  イベント時刻は,boundary_evttimからの相対値で比較する.すなわち,
     92 *  boundary_evttimを最も早い時刻,boundary_evttim-1が最も遅い時刻とみ
     93 *  なして比較する.
    11294 */
    11395#define EVTTIM_ADVANCE(t)       ((t) - boundary_evttim)
     
    118100
    119101/*
    120  *  境界イベント時刻[ASPD1008ï¼½
     102 *  境界イベント時刻[ASPD1008]
    121103 */
    122104EVTTIM  boundary_evttim;
    123105
    124106/*
    125  *  最後に現在時刻を算出した時点でのイベント時刻[ASPD1012ï¼½
     107 *  最後に現在時刻を算出した時点でのイベント時刻[ASPD1012]
    126108 */
    127109EVTTIM  current_evttim;
    128110
    129111/*
    130  *  最後に現在時刻を算出した時点での高分解能タイマのカウント値[ASPD1012ï¼½
     112 *  最後に現在時刻を算出した時点での高分解能タイマのカウント値[ASPD1012]
    131113 */
    132114HRTCNT  current_hrtcnt;
    133115
    134116/*
    135  *  最も進んでいた時のイベント時刻[ASPD1041ï¼½
     117 *  最も進んでいた時のイベント時刻[ASPD1041]
    136118 */
    137119EVTTIM  monotonic_evttim;
    138120
    139121/*
    140  *  システム時刻のオフセット[ASPD1043ï¼½
     122 *  システム時刻のオフセット[ASPD1043]
    141123 */
    142124SYSTIM  systim_offset;
    143125
    144126/*
    145  *  高分解能タイマ割込みの処理中であることを示すフラグ[ASPD1032ï¼½
     127 *  高分解能タイマ割込みの処理中であることを示すフラグ[ASPD1032]
    146128 */
    147129bool_t  in_signal_time;
    148130
    149131/*
    150  *  タイムイベント管理モジュールの初期化[ASPD1061ï¼½
     132 *  タイムイベント管理モジュールの初期化[ASPD1061]
    151133 */
    152134void
    153135initialize_tmevt(void)
    154136{
    155         current_evttim = 0U;                                                    /*ï¼»ASPD1047ï¼½*/
     137        current_evttim = 0U;                                                    /*[ASPD1047]*/
    156138        boundary_evttim = current_evttim - BOUNDARY_MARGIN;
    157                                                                                                         /*ï¼»ASPD1048ï¼½*/
    158         monotonic_evttim = 0U;                                                  /*ï¼»ASPD1046ï¼½*/
    159         systim_offset = 0U;                                                             /*ï¼»ASPD1044ï¼½*/
    160         in_signal_time = false;                                                 /*ï¼»ASPD1033ï¼½*/
     139                                                                                                        /*[ASPD1048]*/
     140        monotonic_evttim = 0U;                                                  /*[ASPD1046]*/
     141        systim_offset = 0U;                                                             /*[ASPD1044]*/
     142        in_signal_time = false;                                                 /*[ASPD1033]*/
    161143        p_last_tmevtn = tmevt_heap;
    162144}
     
    165147
    166148/*
    167  *  タイムイベントの挿å
    168 ¥ä½ç½®ã‚’上向きに探索
     149 *  タイムイベントの挿入位置を上向きに探索
    169150 *
    170  *  時刻evttimに発生するタイムイベントを挿å
    171 ¥ã™ã‚‹ãƒŽãƒ¼ãƒ‰ã‚’空けるために,
    172  *  ヒープの上に向かって空ノードを移動させる.移動前の空ノードの位置を
    173  *  p_tmevtnに渡すと,移動後の空ノードの位置(すなわち挿å
    174 ¥ä½ç½®ï¼‰ã‚’返す.
     151 *  時刻evttimに発生するタイムイベントを挿入するノードを空けるために,
     152 *  ヒープの上に向かって空ノードを移動させる.移動前の空ノードの位置を
     153 *  p_tmevtnに渡すと,移動後の空ノードの位置(すなわち挿入位置)を返す.
    175154 */
    176155#ifdef TOPPERS_tmeup
     
    183162        while (p_tmevtn > p_top_tmevtn) {
    184163                /*
    185                  *  親ノードのイベント発生時刻の方が早い(または同じ)ならば,
    186                  *  p_tmevtnが挿å
    187 ¥ä½ç½®ãªã®ã§ãƒ«ãƒ¼ãƒ—を抜ける.
     164                 *  親ノードのイベント発生時刻の方が早い(または同じ)ならば,
     165                 *  p_tmevtnが挿入位置なのでループを抜ける.
    188166                 */
    189167                p_parent = PARENT(p_tmevtn);
     
    193171
    194172                /*
    195                  *  親ノードをp_tmevtnの位置に移動させる.
     173                 *  親ノードをp_tmevtnの位置に移動させる.
    196174                 */
    197175                *p_tmevtn = *p_parent;
     
    199177
    200178                /*
    201                  *  p_tmevtnを親ノードの位置に更新.
     179                 *  p_tmevtnを親ノードの位置に更新.
    202180                 */
    203181                p_tmevtn = p_parent;
     
    209187
    210188/*
    211  *  タイムイベントの挿å
    212 ¥ä½ç½®ã‚’下向きに探索
     189 *  タイムイベントの挿入位置を下向きに探索
    213190 *
    214  *  時刻evttimに発生するタイムイベントを挿å
    215 ¥ã™ã‚‹ãƒŽãƒ¼ãƒ‰ã‚’空けるために,
    216  *  ヒープの下に向かって空ノードを移動させる.移動前の空ノードの位置を
    217  *  p_tmevtnに渡すと,移動後の空ノードの位置(すなわち挿å
    218 ¥ä½ç½®ï¼‰ã‚’返す.
     191 *  時刻evttimに発生するタイムイベントを挿入するノードを空けるために,
     192 *  ヒープの下に向かって空ノードを移動させる.移動前の空ノードの位置を
     193 *  p_tmevtnに渡すと,移動後の空ノードの位置(すなわち挿入位置)を返す.
    219194 */
    220195#ifdef TOPPERS_tmedown
     
    227202        while ((p_child = LCHILD(p_tmevtn)) <= p_last_tmevtn) {
    228203                /*
    229                  *  左右の子ノードのイベント発生時刻を比較し,早い方の子ノード
    230                  *  の位置をp_childに設定する.以下の子ノードは,ここで選ばれた
    231                  *  方の子ノードのこと.
     204                 *  左右の子ノードのイベント発生時刻を比較し,早い方の子ノード
     205                 *  の位置をp_childに設定する.以下の子ノードは,ここで選ばれた
     206                 *  方の子ノードのこと.
    232207                 */
    233208                if (p_child + 1 <= p_last_tmevtn
     
    238213
    239214                /*
    240                  *  子ノードのイベント発生時刻の方がé
    241 ã„(または同じ)ならば,
    242                  *  p_tmevtnが挿å
    243 ¥ä½ç½®ãªã®ã§ãƒ«ãƒ¼ãƒ—を抜ける.
     215                 *  子ノードのイベント発生時刻の方が遅い(または同じ)ならば,
     216                 *  p_tmevtnが挿入位置なのでループを抜ける.
    244217                 */
    245218                if (EVTTIM_LE(evttim, p_child->p_tmevtb->evttim)) {
     
    248221
    249222                /*
    250                  *  子ノードをp_tmevtnの位置に移動させる.
     223                 *  子ノードをp_tmevtnの位置に移動させる.
    251224                 */
    252225                *p_tmevtn = *p_child;
     
    254227
    255228                /*
    256                  *  p_tmevtnを子ノードの位置に更新.
     229                 *  p_tmevtnを子ノードの位置に更新.
    257230                 */
    258231                p_tmevtn = p_child;
     
    264237
    265238/*
    266  *  タイムイベントヒープへの追加
     239 *  タイムイベントヒープへの追加
    267240 *
    268  *  p_tmevtbで指定したタイムイベントブロックを,タイムイベントヒープに
    269  *  追加する.
     241 *  p_tmevtbで指定したタイムイベントブロックを,タイムイベントヒープに
     242 *  追加する.
    270243 */
    271244Inline void
     
    275248
    276249        /*
    277          *  p_last_tmevtnをインクリメントし,そこから上に挿å
    278 ¥ä½ç½®ã‚’探す.
     250         *  p_last_tmevtnをインクリメントし,そこから上に挿入位置を探す.
    279251         */
    280252        p_tmevtn = tmevt_up(++p_last_tmevtn, p_tmevtb->evttim);
    281253
    282254        /*
    283          *  タイムイベントをp_tmevtnの位置に挿å
    284 ¥ã™ã‚‹ï¼Ž
     255         *  タイムイベントをp_tmevtnの位置に挿入する.
    285256         */
    286257        p_tmevtn->p_tmevtb = p_tmevtb;
     
    289260
    290261/*
    291  *  タイムイベントヒープからの削除
     262 *  タイムイベントヒープからの削除
    292263 */
    293264Inline void
     
    299270
    300271        /*
    301          *  削除によりタイムイベントヒープが空になる場合は何もしない.
     272         *  削除によりタイムイベントヒープが空になる場合は何もしない.
    302273         */
    303274        if (--p_last_tmevtn < p_top_tmevtn) {
     
    306277
    307278        /*
    308          *  削除したノードの位置に最後のノード(p_last_tmevtn + 1 の位置の
    309          *  ノード)を挿å
    310 ¥ã—,それを適切な位置へ移動させる.実際には,最後
    311          *  のノードを実際に挿å
    312 ¥ã™ã‚‹ã®ã§ã¯ãªãï¼Œå‰Šé™¤ã—たノードの位置が空ノー
    313          *  ドになるので,最後のノードを挿å
    314 ¥ã™ã¹ãä½ç½®ã¸å‘けて空ノードを移
    315          *  動させる.
     279         *  削除したノードの位置に最後のノード(p_last_tmevtn + 1 の位置の
     280         *  ノード)を挿入し,それを適切な位置へ移動させる.実際には,最後
     281         *  のノードを実際に挿入するのではなく,削除したノードの位置が空ノー
     282         *  ドになるので,最後のノードを挿入すべき位置へ向けて空ノードを移
     283         *  動させる.
    316284         *
    317          *  最後のノードのイベント発生時刻が,削除したノードの親ノードのイ
    318          *  ベント発生時刻より前の場合には,上に向かって挿å
    319 ¥ä½ç½®ã‚’探す.そ
    320          *  うでない場合には,下に向かって探す.
     285         *  最後のノードのイベント発生時刻が,削除したノードの親ノードのイ
     286         *  ベント発生時刻より前の場合には,上に向かって挿入位置を探す.そ
     287         *  うでない場合には,下に向かって探す.
    321288         */
    322289        event_evttim = (p_last_tmevtn + 1)->p_tmevtb->evttim;
     
    325292                                                (p_parent = PARENT(p_tmevtn))->p_tmevtb->evttim)) {
    326293                /*
    327                  *  親ノードをp_tmevtnの位置に移動させる.
     294                 *  親ノードをp_tmevtnの位置に移動させる.
    328295                 */
    329296                *p_tmevtn = *p_parent;
     
    331298
    332299                /*
    333                  *  削除したノードの親ノードから上に向かって挿å
    334 ¥ä½ç½®ã‚’探す.
     300                 *  削除したノードの親ノードから上に向かって挿入位置を探す.
    335301                 */
    336302                p_tmevtn = tmevt_up(p_parent, event_evttim);
     
    338304        else {
    339305                /*
    340                  *  削除したノードから下に向かって挿å
    341 ¥ä½ç½®ã‚’探す.
     306                 *  削除したノードから下に向かって挿入位置を探す.
    342307                 */
    343308                p_tmevtn = tmevt_down(p_tmevtn, event_evttim);
     
    345310
    346311        /*
    347          *  最後のノードをp_tmevtnの位置に挿å
    348 ¥ã™ã‚‹ï¼Ž
     312         *  最後のノードをp_tmevtnの位置に挿入する.
    349313         */
    350314        *p_tmevtn = *(p_last_tmevtn + 1);
     
    353317
    354318/*
    355  *  タイムイベントヒープのå
    356 ˆé ­ã®ãƒŽãƒ¼ãƒ‰ã®å‰Šé™¤
     319 *  タイムイベントヒープの先頭のノードの削除
    357320 */
    358321Inline TMEVTB *
     
    364327
    365328        /*
    366          *  削除によりタイムイベントヒープが空になる場合は何もしない.
     329         *  削除によりタイムイベントヒープが空になる場合は何もしない.
    367330         */
    368331        if (--p_last_tmevtn >= p_top_tmevtn) {
    369332                /*
    370                  *  ルートノードに最後のノード(p_last_tmevtn + 1 の位置のノー
    371                  *  ド)を挿å
    372 ¥ã—,それを適切な位置へ移動させる.実際には,最後
    373                  *  のノードを実際に挿å
    374 ¥ã™ã‚‹ã®ã§ã¯ãªãï¼Œãƒ«ãƒ¼ãƒˆãƒŽãƒ¼ãƒ‰ãŒç©ºãƒŽãƒ¼ãƒ‰
    375                  *  になるので,最後のノードを挿å
    376 ¥ã™ã¹ãä½ç½®ã¸å‘けて空ノードを
    377                  *  移動させる.
     333                 *  ルートノードに最後のノード(p_last_tmevtn + 1 の位置のノー
     334                 *  ド)を挿入し,それを適切な位置へ移動させる.実際には,最後
     335                 *  のノードを実際に挿入するのではなく,ルートノードが空ノード
     336                 *  になるので,最後のノードを挿入すべき位置へ向けて空ノードを
     337                 *  移動させる.
    378338                 */
    379339                event_evttim = (p_last_tmevtn + 1)->p_tmevtb->evttim;
     
    381341
    382342                /*
    383                  *  最後のノードをp_tmevtnの位置に挿å
    384 ¥ã™ã‚‹ï¼Ž
     343                 *  最後のノードをp_tmevtnの位置に挿入する.
    385344                 */
    386345                *p_tmevtn = *(p_last_tmevtn + 1);
     
    391350
    392351/*
    393  *  現在のイベント時刻の更新
     352 *  現在のイベント時刻の更新
    394353 */
    395354#ifdef TOPPERS_tmecur
     
    401360        EVTTIM  previous_evttim;
    402361
    403         new_hrtcnt = target_hrt_get_current();                  /*ï¼»ASPD1013ï¼½*/
    404         hrtcnt_advance = new_hrtcnt - current_hrtcnt;   /*ï¼»ASPD1014ï¼½*/
     362        new_hrtcnt = target_hrt_get_current();                  /*[ASPD1013]*/
     363        hrtcnt_advance = new_hrtcnt - current_hrtcnt;   /*[ASPD1014]*/
    405364#ifdef TCYC_HRTCNT
    406365        if (new_hrtcnt < current_hrtcnt) {
     
    410369
    411370        previous_evttim = current_evttim;
    412         current_evttim += (EVTTIM) hrtcnt_advance;              /*ï¼»ASPD1015ï¼½*/
    413         current_hrtcnt = new_hrtcnt;                                    /*ï¼»ASPD1016ï¼½*/
    414         boundary_evttim = current_evttim - BOUNDARY_MARGIN;     /*ï¼»ASPD1011ï¼½*/
     371        current_evttim += (EVTTIM) hrtcnt_advance;              /*[ASPD1015]*/
     372        current_hrtcnt = new_hrtcnt;                                    /*[ASPD1016]*/
     373        boundary_evttim = current_evttim - BOUNDARY_MARGIN;     /*[ASPD1011]*/
    415374
    416375        if (monotonic_evttim - previous_evttim < (EVTTIM) hrtcnt_advance) {
    417376#ifdef UINT64_MAX
    418377                if (current_evttim < monotonic_evttim) {
    419                         systim_offset += 1LLU << 32;                    /*ï¼»ASPD1045ï¼½*/
     378                        systim_offset += 1LLU << 32;                    /*[ASPD1045]*/
    420379                }
    421380#endif /* UINT64_MAX */
    422                 monotonic_evttim = current_evttim;                      /*ï¼»ASPD1042ï¼½*/
     381                monotonic_evttim = current_evttim;                      /*[ASPD1042]*/
    423382        }
    424383}
     
    427386
    428387/*
    429  *  現在のイベント時刻をé
    430 ã„方に丸めたイベント時刻の算出[ASPD1027ï¼½
     388 *  現在のイベント時刻を遅い方に丸めたイベント時刻の算出[ASPD1027]
    431389 *
    432  *  現在のイベント時刻を更新した後に呼ぶことを想定している.
     390 *  現在のイベント時刻を更新した後に呼ぶことを想定している.
    433391 */
    434392Inline EVTTIM
     
    439397
    440398/*
    441  *  高分解能タイマ割込みの発生タイミングの設定
     399 *  高分解能タイマ割込みの発生タイミングの設定
    442400 */
    443401#ifdef TOPPERS_tmeset
     
    449407
    450408        if (p_last_tmevtn < p_top_tmevtn) {
    451                 target_hrt_set_event(HRTCNT_BOUND);                     /*ï¼»ASPD1007ï¼½*/
     409                target_hrt_set_event(HRTCNT_BOUND);                     /*[ASPD1007]*/
    452410        }
    453411        else if (EVTTIM_LE(top_evttim, current_evttim)) {
    454                 target_hrt_raise_event();                                       /*ï¼»ASPD1017ï¼½*/
     412                target_hrt_raise_event();                                       /*[ASPD1017]*/
    455413        }
    456414        else {
    457415                hrtcnt = (HRTCNT)(top_evttim - current_evttim);
    458416                if (hrtcnt > HRTCNT_BOUND) {
    459                         target_hrt_set_event(HRTCNT_BOUND);             /*ï¼»ASPD1006ï¼½*/
     417                        target_hrt_set_event(HRTCNT_BOUND);             /*[ASPD1006]*/
    460418                }
    461419                else {
    462                         target_hrt_set_event(hrtcnt);                   /*ï¼»ASPD1002ï¼½*/
     420                        target_hrt_set_event(hrtcnt);                   /*[ASPD1002]*/
    463421                }
    464422        }
     
    468426
    469427/*
    470  *  タイムイベントブロックのヒープへの挿å
    471 ¥
     428 *  タイムイベントブロックのヒープへの挿入
    472429 */
    473430#ifdef TOPPERS_tmereg
     
    482439
    483440/*
    484  *  相対時間指定によるタイムイベントの登録
     441 *  相対時間指定によるタイムイベントの登録
    485442 * 
    486443 */
     
    491448{
    492449        /*
    493          *  現在のイベント時刻とタイムイベントの発生時刻を求める[ASPD1026].
     450         *  現在のイベント時刻とタイムイベントの発生時刻を求める[ASPD1026].
    494451         */
    495452        update_current_evttim();
     
    497454
    498455        /*
    499          *  タイムイベントブロックをヒープに挿å
    500 ¥ã™ã‚‹ï¼»ASPD1030].
     456         *  タイムイベントブロックをヒープに挿入する[ASPD1030].
    501457         */
    502458        tmevtb_insert(p_tmevtb);
    503459
    504460        /*
    505          *  高分解能タイマ割込みの発生タイミングを設定する[ASPD1031ï¼½
    506          *  ï¼»ASPD1034].
     461         *  高分解能タイマ割込みの発生タイミングを設定する[ASPD1031]
     462         *  [ASPD1034].
    507463         */
    508464        if (!in_signal_time && p_tmevtb->p_tmevtn == p_top_tmevtn) {
     
    514470
    515471/*
    516  *  タイムイベントの登録解除
     472 *  タイムイベントの登録解除
    517473 */
    518474#ifdef TOPPERS_tmedeq
     
    524480
    525481        /*
    526          *  タイムイベントブロックをヒープから削除する[ASPD1039].
     482         *  タイムイベントブロックをヒープから削除する[ASPD1039].
    527483         */
    528484        p_tmevtn = p_tmevtb->p_tmevtn;
     
    530486
    531487        /*
    532          *  高分解能タイマ割込みの発生タイミングを設定する[ASPD1040].
     488         *  高分解能タイマ割込みの発生タイミングを設定する[ASPD1040].
    533489         */
    534490        if (!in_signal_time && p_tmevtn == p_top_tmevtn) {
     
    541497
    542498/*
    543  *  システム時刻の調整時のエラーチェック
     499 *  システム時刻の調整時のエラーチェック
    544500 */
    545501#ifdef TOPPERS_tmechk
     
    549505{
    550506        if (adjtim > 0) {
    551                 return(p_last_tmevtn >= p_top_tmevtn    /*ï¼»NGKI3588ï¼½*/
     507                return(p_last_tmevtn >= p_top_tmevtn    /*[NGKI3588]*/
    552508                                        && EVTTIM_LE(top_evttim, current_evttim - TMAX_ADJTIM));
    553509        }
    554         else if (adjtim < 0) {                                          /*ï¼»NGKI3589ï¼½*/
     510        else if (adjtim < 0) {                                          /*[NGKI3589]*/
    555511                return(monotonic_evttim - current_evttim >= -TMIN_ADJTIM);
    556512        }
     
    561517
    562518/*
    563  *  タイムイベントが発生するまでの時間の計算
     519 *  タイムイベントが発生するまでの時間の計算
    564520 */
    565521#ifdef TOPPERS_tmeltim
     
    571527
    572528        /*
    573          *  現在のイベント時刻をé
    574 ã„方に丸めた時刻を求める[ASPD1050].
     529         *  現在のイベント時刻を遅い方に丸めた時刻を求める[ASPD1050].
    575530         */
    576531        update_current_evttim();
     
    578533
    579534        /*
    580          *  タイムイベント発生までの相対時間を求める[ASPD1049].
     535         *  タイムイベント発生までの相対時間を求める[ASPD1049].
    581536         */
    582537        evttim = p_tmevtb->evttim;
    583538        if (EVTTIM_LE(evttim, current_evttim_ub)) {
    584539                /*
    585                  *  タイムイベントの発生時刻を過ぎている場合には0を返す[NGKI0552].
     540                 *  タイムイベントの発生時刻を過ぎている場合には0を返す[NGKI0552].
    586541                 */
    587542                return(0U);
     
    595550
    596551/*
    597  *  高分解能タイマ割込みの処理
     552 *  高分解能タイマ割込みの処理
    598553 */
    599554#ifdef TOPPERS_sigtim
     
    609564
    610565        lock_cpu();
    611         in_signal_time = true;                                                  /*ï¼»ASPD1033ï¼½*/
     566        in_signal_time = true;                                                  /*[ASPD1033]*/
    612567
    613568        do {
    614569                /*
    615                  *  コールバック関数を呼び出さなければループを抜ける[ASPD1020].
     570                 *  コールバック関数を呼び出さなければループを抜ける[ASPD1020].
    616571                 */
    617572                callflag = false;
    618573
    619574                /*
    620                  *  現在のイベント時刻を求める[ASPD1022].
     575                 *  現在のイベント時刻を求める[ASPD1022].
    621576                 */
    622577                update_current_evttim();
    623578
    624579                /*
    625                  *  発生時刻がcurrent_evttim以前のタイムイベントがあれば,タイ
    626                  *  ムイベントヒープから削除し,コールバック関数を呼び出す
    627                  *  ï¼»ASPD1018][ASPD1019].
     580                 *  発生時刻がcurrent_evttim以前のタイムイベントがあれば,タイ
     581                 *  ムイベントヒープから削除し,コールバック関数を呼び出す
     582                 *  [ASPD1018][ASPD1019].
    628583                 */
    629584                while (p_last_tmevtn >= p_top_tmevtn
     
    633588                        callflag = true;
    634589                }
    635         } while (callflag);                                                             /*ï¼»ASPD1020ï¼½*/
    636 
    637         /*
    638          *  高分解能タイマ割込みの発生タイミングを設定する[ASPD1025].
     590        } while (callflag);                                                             /*[ASPD1020]*/
     591
     592        /*
     593         *  高分解能タイマ割込みの発生タイミングを設定する[ASPD1025].
    639594         */
    640595        set_hrt_event();
    641596
    642         in_signal_time = false;                                                 /*ï¼»ASPD1033ï¼½*/
     597        in_signal_time = false;                                                 /*[ASPD1033]*/
    643598        unlock_cpu();
    644599}
  • asp3_gr_sakura/trunk/kernel/time_event.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
    47  *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     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 *      免責すること.
     33 *
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              タイムイベント管理モジュール
     44 *              タイムイベント管理モジュール
    6045 */
    6146
     
    6752
    6853/*
    69  *  イベント時刻のデータ型の定義[ASPD1001ï¼½
    70  *
    71  *  タイムイベントヒープに登録するタイムイベントの発生時刻を表現するた
    72  *  めのデータ型.オーバヘッド低減のために,32ビットで扱う.
     54 *  イベント時刻のデータ型の定義[ASPD1001]
     55 *
     56 *  タイムイベントヒープに登録するタイムイベントの発生時刻を表現するた
     57 *  めのデータ型.オーバヘッド低減のために,32ビットで扱う.
    7358 */
    7459typedef uint32_t        EVTTIM;
    7560
    7661/*
    77  *  タイムイベントヒープ中のノードのデータ型の前方参ç
    78 §
     62 *  タイムイベントヒープ中のノードのデータ型の前方参照
    7963 */
    8064typedef union time_event_node TMEVTN;
    8165
    8266/*
    83  *  タイムイベントブロックのデータ型の定義
    84  */
    85 typedef void    (*CBACK)(void *);       /* コールバック関数の型 */
     67 *  タイムイベントブロックのデータ型の定義
     68 */
     69typedef void    (*CBACK)(void *);       /* コールバック関数の型 */
    8670
    8771typedef struct time_event_block {
    88         EVTTIM  evttim;                 /* タイムイベントの発生時刻 */
    89         TMEVTN  *p_tmevtn;              /* タイムイベントヒープ中での位置 */
    90         CBACK   callback;               /* コールバック関数 */
    91         void    *arg;                   /* コールバック関数へ渡す引数 */
     72        EVTTIM  evttim;                 /* タイムイベントの発生時刻 */
     73        TMEVTN  *p_tmevtn;              /* タイムイベントヒープ中での位置 */
     74        CBACK   callback;               /* コールバック関数 */
     75        void    *arg;                   /* コールバック関数へ渡す引数 */
    9276} TMEVTB;
    9377
    9478/*
    95  *  タイムイベントヒープ中のノードのデータ型の定義
    96  *
    97  *  タイムイベントヒープのå
    98 ˆé ­ã®ãƒŽãƒ¼ãƒ‰ï¼ˆtmevt_heap[0])に,最後の使用領
    99  *  域を指すポインタ(p_last)を格納し,それ以降をタイムイベントヒープ
    100  *  として使用する.(tmevt_heap[0].p_last - tmevt_heap) が,タイムイベ
    101  *  ントヒープに登録されているタイムイベントの数となる.
     79 *  タイムイベントヒープ中のノードのデータ型の定義
     80 *
     81 *  タイムイベントヒープの先頭のノード(tmevt_heap[0])に,最後の使用領
     82 *  域を指すポインタ(p_last)を格納し,それ以降をタイムイベントヒープ
     83 *  として使用する.(tmevt_heap[0].p_last - tmevt_heap) が,タイムイベ
     84 *  ントヒープに登録されているタイムイベントの数となる.
    10285 */
    10386union time_event_node {
    104         TMEVTB  *p_tmevtb;              /* 対応するタイムイベントブロック */
    105         TMEVTN  *p_last;                /* タイムイベントヒープの最後の使用領域 */
     87        TMEVTB  *p_tmevtb;              /* 対応するタイムイベントブロック */
     88        TMEVTN  *p_last;                /* タイムイベントヒープの最後の使用領域 */
    10689};
    10790
    10891/*
    109  *  タイムイベントヒープ(kernel_cfg.c)
     92 *  タイムイベントヒープ(kernel_cfg.c)
    11093 */
    11194extern TMEVTN   tmevt_heap[];
    11295
    11396/*
    114  *  境界イベント時刻[ASPD1008ï¼½
     97 *  境界イベント時刻[ASPD1008]
    11598 */
    11699extern EVTTIM   boundary_evttim;
    117100
    118101/*
    119  *  現在のイベント時刻と境界イベント時刻の差[ASPD1010ï¼½
     102 *  現在のイベント時刻と境界イベント時刻の差[ASPD1010]
    120103 */
    121104#define BOUNDARY_MARGIN         (200000000U)
    122105
    123106/*
    124  *  最後に現在時刻を算出した時点でのイベント時刻[ASPD1012ï¼½
     107 *  最後に現在時刻を算出した時点でのイベント時刻[ASPD1012]
    125108 */
    126109extern EVTTIM   current_evttim;
    127110
    128111/*
    129  *  最後に現在時刻を算出した時点での高分解能タイマのカウント値[ASPD1012ï¼½
     112 *  最後に現在時刻を算出した時点での高分解能タイマのカウント値[ASPD1012]
    130113 */
    131114extern HRTCNT   current_hrtcnt;
    132115
    133116/*
    134  *  最も進んでいた時のイベント時刻[ASPD1041ï¼½
     117 *  最も進んでいた時のイベント時刻[ASPD1041]
    135118 */
    136119extern EVTTIM   monotonic_evttim;
    137120
    138121/*
    139  *  システム時刻のオフセット[ASPD1043ï¼½
    140  *
    141  *  get_timで参ç
    142 §ã™ã‚‹ã‚·ã‚¹ãƒ†ãƒ æ™‚刻とmonotonic_evttimの差を保持する.
     122 *  システム時刻のオフセット[ASPD1043]
     123 *
     124 *  get_timで参照するシステム時刻とmonotonic_evttimの差を保持する.
    143125 */
    144126extern SYSTIM   systim_offset;
    145127
    146128/*
    147  *  高分解能タイマ割込みの処理中であることを示すフラグ[ASPD1032ï¼½
     129 *  高分解能タイマ割込みの処理中であることを示すフラグ[ASPD1032]
    148130 */
    149131extern bool_t   in_signal_time;
    150132
    151133/*
    152  *  タイムイベント管理モジュールの初期化
     134 *  タイムイベント管理モジュールの初期化
    153135 */
    154136extern void     initialize_tmevt(void);
    155137
    156138/*
    157  *  タイムイベントの挿å
    158 ¥ä½ç½®ã®æŽ¢ç´¢
     139 *  タイムイベントの挿入位置の探索
    159140 */
    160141extern TMEVTN   *tmevt_up(TMEVTN *p_tmevtn, EVTTIM evttim);
     
    162143
    163144/*
    164  *  現在のイベント時刻の更新
    165  *
    166  *  current_evttimとcurrent_hrtcntを,現在の値に更新する.
     145 *  現在のイベント時刻の更新
     146 *
     147 *  current_evttimとcurrent_hrtcntを,現在の値に更新する.
    167148 */
    168149extern void             update_current_evttim(void);
    169150
    170151/*
    171  *  高分解能タイマ割込みの発生タイミングの設定
    172  *
    173  *  現在のイベント時刻を取得した後に呼び出すことを想定している.
     152 *  高分解能タイマ割込みの発生タイミングの設定
     153 *
     154 *  現在のイベント時刻を取得した後に呼び出すことを想定している.
    174155 */
    175156extern void             set_hrt_event(void);
    176157
    177158/*
    178  *  タイムイベントの登録
    179  *
    180  *  p_tmevtbで指定したタイムイベントブロックを登録する.タイムイベント
    181  *  の発生時刻,コールバック関数,コールバック関数へ渡す引数は,
    182  *  p_tmevtbが指すタイムイベントブロック中に設定しておく.
     159 *  タイムイベントの登録
     160 *
     161 *  p_tmevtbで指定したタイムイベントブロックを登録する.タイムイベント
     162 *  の発生時刻,コールバック関数,コールバック関数へ渡す引数は,
     163 *  p_tmevtbが指すタイムイベントブロック中に設定しておく.
    183164 */
    184165extern void             tmevtb_register(TMEVTB *p_tmevtb);
    185166
    186167/*
    187  *  相対時間指定によるタイムイベントの登録
    188  *
    189  *  timeで指定した相対時間が経過した後にコールバック関数が呼び出される
    190  *  ように,p_tmevtbで指定したタイムイベントブロックを登録する.コール
    191  *  バック関数,コールバック関数へ渡す引数は,p_tmevtbが指すタイムイベ
    192  *  ントブロック中に設定しておく.
     168 *  相対時間指定によるタイムイベントの登録
     169 *
     170 *  timeで指定した相対時間が経過した後にコールバック関数が呼び出される
     171 *  ように,p_tmevtbで指定したタイムイベントブロックを登録する.コール
     172 *  バック関数,コールバック関数へ渡す引数は,p_tmevtbが指すタイムイベ
     173 *  ントブロック中に設定しておく.
    193174 */
    194175extern void             tmevtb_enqueue(TMEVTB *p_tmevtb, RELTIM time);
    195176
    196177/*
    197  *  タイムイベントの登録解除
     178 *  タイムイベントの登録解除
    198179 */
    199180extern void             tmevtb_dequeue(TMEVTB *p_tmevtb);
    200181
    201182/*
    202  *  システム時刻の調整時のエラーチェック
    203  *
    204  *  adjtimで指定された時間の分,システム時刻を調整してよいか判定する.
    205  *  調整してはならない場合にtrue,そうでない場合にfalseを返す.現在のイ
    206  *  ベント時刻を取得した後に呼び出すことを想定している.
     183 *  システム時刻の調整時のエラーチェック
     184 *
     185 *  adjtimで指定された時間の分,システム時刻を調整してよいか判定する.
     186 *  調整してはならない場合にtrue,そうでない場合にfalseを返す.現在のイ
     187 *  ベント時刻を取得した後に呼び出すことを想定している.
    207188 */
    208189extern bool_t   check_adjtim(int_t adjtim);
    209190
    210191/*
    211  *  タイムイベントが発生するまでの時間の計算
     192 *  タイムイベントが発生するまでの時間の計算
    212193 */
    213194extern RELTIM   tmevt_lefttim(TMEVTB *p_tmevtb);
    214195
    215196/*
    216  *  高分解能タイマ割込みの処理
     197 *  高分解能タイマ割込みの処理
    217198 */
    218199extern void     signal_time(void);
  • asp3_gr_sakura/trunk/kernel/time_manage.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              システム時刻管理機能
     44 *              システム時刻管理機能
    6045 */
    6146
     
    7055
    7156/*
    72  *  トレースログマクロのデフォルト定義
     57 *  トレースログマクロのデフォルト定義
    7358 */
    7459#ifndef LOG_SET_TIM_ENTER
     
    10590
    10691/*
    107  *  システム時刻の設定[NGKI3563ï¼½
     92 *  システム時刻の設定[NGKI3563]
    10893 */
    10994#ifdef TOPPERS_set_tim
     
    115100
    116101        LOG_SET_TIM_ENTER(systim);
    117         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3564][NGKI3565ï¼½*/
     102        CHECK_TSKCTX_UNL();                                                     /*[NGKI3564][NGKI3565]*/
    118103
    119104        lock_cpu();
    120         update_current_evttim();                                        /*ï¼»ASPD1059ï¼½*/
    121         systim_offset = systim - monotonic_evttim;      /*ï¼»ASPD1060ï¼½*/
     105        update_current_evttim();                                        /*[ASPD1059]*/
     106        systim_offset = systim - monotonic_evttim;      /*[ASPD1060]*/
    122107        ercd = E_OK;
    123108        unlock_cpu();
     
    131116
    132117/*
    133  *  システム時刻の参ç
    134 §ï¼»NGKI2349ï¼½
     118 *  システム時刻の参照[NGKI2349]
    135119 */
    136120#ifdef TOPPERS_get_tim
     
    142126
    143127        LOG_GET_TIM_ENTER(p_systim);
    144         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI2350][NGKI2351ï¼½*/
     128        CHECK_TSKCTX_UNL();                                                     /*[NGKI2350][NGKI2351]*/
    145129
    146130        lock_cpu();
    147         update_current_evttim();                                        /*ï¼»ASPD1057ï¼½*/
    148         *p_systim = systim_offset + monotonic_evttim;   /*ï¼»ASPD1058ï¼½*/
     131        update_current_evttim();                                        /*[ASPD1057]*/
     132        *p_systim = systim_offset + monotonic_evttim;   /*[ASPD1058]*/
    149133        ercd = E_OK;
    150134        unlock_cpu();
     
    158142
    159143/*
    160  *  システム時刻の調整[NGKI3581ï¼½
     144 *  システム時刻の調整[NGKI3581]
    161145 */
    162146#ifdef TOPPERS_adj_tim
     
    169153
    170154        LOG_ADJ_TIM_ENTER(adjtim);
    171         CHECK_UNL();                                                            /*ï¼»NGKI3583ï¼½*/
     155        CHECK_UNL();                                                            /*[NGKI3583]*/
    172156        CHECK_PAR(TMIN_ADJTIM <= adjtim && adjtim <= TMAX_ADJTIM);
    173                                                                                                 /*ï¼»NGKI3584ï¼½*/
     157                                                                                                /*[NGKI3584]*/
    174158        lock_cpu();
    175         update_current_evttim();                                        /*ï¼»ASPD1051ï¼½*/
    176         if (check_adjtim(adjtim)) {                                     /*ï¼»ASPD1052ï¼½*/
     159        update_current_evttim();                                        /*[ASPD1051]*/
     160        if (check_adjtim(adjtim)) {                                     /*[ASPD1052]*/
    177161                ercd = E_OBJ;
    178162        }
    179163        else {
    180164                previous_evttim = current_evttim;
    181                 current_evttim += adjtim;                               /*ï¼»ASPD1053ï¼½*/
    182                 boundary_evttim = current_evttim - BOUNDARY_MARGIN;     /*ï¼»ASPD1055ï¼½*/
     165                current_evttim += adjtim;                               /*[ASPD1053]*/
     166                boundary_evttim = current_evttim - BOUNDARY_MARGIN;     /*[ASPD1055]*/
    183167
    184168                if (adjtim > 0
     
    189173                        }
    190174#endif /* UINT64_MAX */
    191                         monotonic_evttim = current_evttim;      /*ï¼»ASPD1054ï¼½*/
     175                        monotonic_evttim = current_evttim;      /*[ASPD1054]*/
    192176                }
    193177
    194                 set_hrt_event();                                                /*ï¼»ASPD1056ï¼½*/
     178                set_hrt_event();                                                /*[ASPD1056]*/
    195179                ercd = E_OK;
    196180        }
     
    205189
    206190/*
    207  *  高分解能タイマの参ç
    208 §ï¼»NGKI3569ï¼½
     191 *  高分解能タイマの参照[NGKI3569]
    209192 *
    210  *  任意の状æ
    211 ‹ã‹ã‚‰å‘¼ã³å‡ºã›ã‚‹ã‚ˆã†ã«ã™ã‚‹ãŸã‚ã«ï¼ŒSILのå
    212 ¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    213 ‹ã®
    214  *  制御機能を用いて,排他制御を実現している[NGKI3572].
     193 *  任意の状態から呼び出せるようにするために,SILの全割込みロック状態の
     194 *  制御機能を用いて,排他制御を実現している[NGKI3572].
    215195 */
    216196#ifdef TOPPERS_fch_hrt
     
    225205
    226206        SIL_LOC_INT();
    227         hrtcnt = target_hrt_get_current();                      /*ï¼»NGKI3571ï¼½*/
     207        hrtcnt = target_hrt_get_current();                      /*[NGKI3571]*/
    228208        SIL_UNL_INT();
    229209
     
    235215
    236216/*
    237  *  通知方法のエラーチェック
     217 *  通知方法のエラーチェック
    238218 */
    239219#ifdef TOPPERS_chknfy
     
    319299
    320300/*
    321  *  通知ハンドラ
     301 *  通知ハンドラ
    322302 */
    323303#ifdef TOPPERS_nfyhdr
  • asp3_gr_sakura/trunk/kernel/wait.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              å¾
    60 ã¡çŠ¶æ
    61 ‹ç®¡ç†ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«
     44 *              待ち状態管理モジュール
    6245 */
    6346
     
    6649
    6750/*
    68  *  å¾
    69 ã¡çŠ¶æ
    70 ‹ã¸ã®é·ç§»ï¼ˆã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆæŒ‡å®šï¼‰
     51 *  待ち状態への遷移(タイムアウト指定)
    7152 */
    7253#ifdef TOPPERS_waimake
     
    9273
    9374/*
    94  *  å¾
    95 ã¡è§£é™¤
     75 *  待ち解除
    9676 */
    9777#ifdef TOPPERS_waicmp
     
    10888
    10989/*
    110  *  タイムアウトに伴うå¾
    111 ã¡è§£é™¤
     90 *  タイムアウトに伴う待ち解除
    11291 */
    11392#ifdef TOPPERS_waitmo
     
    124103
    125104        /*
    126          *  ここで優å
    127 ˆåº¦ã®é«˜ã„割込みを受け付ける.
     105         *  ここで優先度の高い割込みを受け付ける.
    128106         */
    129107        unlock_cpu();
     
    145123
    146124        /*
    147          *  ここで優å
    148 ˆåº¦ã®é«˜ã„割込みを受け付ける.
     125         *  ここで優先度の高い割込みを受け付ける.
    149126         */
    150127        unlock_cpu();
     
    156133
    157134/*
    158  *  実行中のタスクの同期・通信オブジェクトのå¾
    159 ã¡ã‚­ãƒ¥ãƒ¼ã¸ã®æŒ¿å
    160 ¥
     135 *  実行中のタスクの同期・通信オブジェクトの待ちキューへの挿入
    161136 *
    162  *  実行中のタスクを,同期・通信オブジェクトのå¾
    163 ã¡ã‚­ãƒ¥ãƒ¼ã¸æŒ¿å
    164 ¥ã™ã‚‹ï¼Žã‚ª
    165  *  ブジェクトの属性に応じて,FIFO順またはタスク優å
    166 ˆåº¦é †ã§æŒ¿å
    167 ¥ã™ã‚‹ï¼Ž
     137 *  実行中のタスクを,同期・通信オブジェクトの待ちキューへ挿入する.オ
     138 *  ブジェクトの属性に応じて,FIFO順またはタスク優先度順で挿入する.
    168139 */
    169140Inline void
     
    179150
    180151/*
    181  *  同期・通信オブジェクトに対するå¾
    182 ã¡çŠ¶æ
    183 ‹ã¸ã®é·ç§»
     152 *  同期・通信オブジェクトに対する待ち状態への遷移
    184153 */
    185154#ifdef TOPPERS_wobjwai
     
    210179
    211180/*
    212  *  å¾
    213 ã¡ã‚­ãƒ¥ãƒ¼ã®åˆæœŸåŒ–
     181 *  待ちキューの初期化
    214182 */
    215183#ifdef TOPPERS_iniwque
  • asp3_gr_sakura/trunk/kernel/wait.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
    47  *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     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 *      免責すること.
     33 *
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              å¾
    60 ã¡çŠ¶æ
    61 ‹ç®¡ç†ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«
     44 *              待ち状態管理モジュール
    6245 */
    6346
     
    7154
    7255/*
    73  *  タスクの優å
    74 ˆåº¦é †ã®å¾
    75 ã¡ã‚­ãƒ¥ãƒ¼ã¸ã®æŒ¿å
    76 ¥
    77  *
    78  *  p_tcbで指定されるタスクを,タスク優å
    79 ˆåº¦é †ã®ã‚­ãƒ¥ãƒ¼p_queueに挿å
    80 ¥ã™ã‚‹ï¼Ž
    81  *  キューの中に同じ優å
    82 ˆåº¦ã®ã‚¿ã‚¹ã‚¯ãŒã‚る場合には,その最後に挿å
    83 ¥ã™ã‚‹ï¼Ž
     56 *  タスクの優先度順の待ちキューへの挿入
     57 *
     58 *  p_tcbで指定されるタスクを,タスク優先度順のキューp_queueに挿入する.
     59 *  キューの中に同じ優先度のタスクがある場合には,その最後に挿入する.
    8460 */
    8561Inline void
     
    9975
    10076/*
    101  *  å¾
    102 ã¡çŠ¶æ
    103 ‹ã¸ã®é·ç§»
    104  *
    105  *  実行中のタスクをå¾
    106 ã¡çŠ¶æ
    107 ‹ã«é·ç§»ã•ã›ã‚‹ï¼Žå
    108 ·ä½“的には,実行中のタスクを
    109  *  レディキューから削除し,TCBのp_winfoフィールド,WINFOのp_tmevtbフィー
    110  *  ルドを設定する.
     77 *  待ち状態への遷移
     78 *
     79 *  実行中のタスクを待ち状態に遷移させる.具体的には,実行中のタスクを
     80 *  レディキューから削除し,TCBのp_winfoフィールド,WINFOのp_tmevtbフィー
     81 *  ルドを設定する.
    11182 */
    11283Inline void
     
    11990
    12091/*
    121  *  å¾
    122 ã¡çŠ¶æ
    123 ‹ã¸ã®é·ç§»ï¼ˆã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆæŒ‡å®šï¼‰
    124  *
    125  *  実行中のタスクを,タイムアウト指定付きでå¾
    126 ã¡çŠ¶æ
    127 ‹ã«é·ç§»ã•ã›ã‚‹ï¼Žå
    128 ·ä½“
    129  *  的には,実行中のタスクをレディキューから削除し,TCBのp_winfoフィー
    130  *  ルド,WINFOのp_tmevtbフィールドを設定する.また,タイムイベントブ
    131  *  ロックを登録する.
     92 *  待ち状態への遷移(タイムアウト指定)
     93 *
     94 *  実行中のタスクを,タイムアウト指定付きで待ち状態に遷移させる.具体
     95 *  的には,実行中のタスクをレディキューから削除し,TCBのp_winfoフィー
     96 *  ルド,WINFOのp_tmevtbフィールドを設定する.また,タイムイベントブ
     97 *  ロックを登録する.
    13298 */
    13399extern void     make_wait_tmout(WINFO *p_winfo, TMEVTB *p_tmevtb, TMO tmout);
    134100
    135101/*
    136  *  å¾
    137 ã¡è§£é™¤ã®ãŸã‚ã®ã‚¿ã‚¹ã‚¯çŠ¶æ
    138 ‹ã®æ›´æ–°
    139  *
    140  *  p_tcbで指定されるタスクを,å¾
    141 ã¡è§£é™¤ã™ã‚‹ã‚ˆã†ã‚¿ã‚¹ã‚¯çŠ¶æ
    142 ‹ã‚’更新する.
    143  *  å¾
    144 ã¡è§£é™¤ã™ã‚‹ã‚¿ã‚¹ã‚¯ãŒå®Ÿè¡Œã§ãã‚‹çŠ¶æ
    145 ‹ã«ãªã‚‹å ´åˆã¯ï¼Œãƒ¬ãƒ‡ã‚£ã‚­ãƒ¥ãƒ¼ã«ã¤ãª
    146  *  ぐ.
     102 *  待ち解除のためのタスク状態の更新
     103 *
     104 *  p_tcbで指定されるタスクを,待ち解除するようタスク状態を更新する.
     105 *  待ち解除するタスクが実行できる状態になる場合は,レディキューにつな
     106 *  ぐ.
    147107 */
    148108Inline void
     
    153113        if (!TSTAT_SUSPENDED(p_tcb->tstat)) {
    154114                /*
    155                  *  å¾
    156 ã¡çŠ¶æ
    157 ‹ã‹ã‚‰å®Ÿè¡Œã§ãã‚‹çŠ¶æ
    158 ‹ã¸ã®é·ç§»
     115                 *  待ち状態から実行できる状態への遷移
    159116                 */
    160117                p_tcb->tstat = TS_RUNNABLE;
     
    164121        else {
    165122                /*
    166                  *  二重å¾
    167 ã¡çŠ¶æ
    168 ‹ã‹ã‚‰å¼·åˆ¶å¾
    169 ã¡çŠ¶æ
    170 ‹ã¸ã®é·ç§»
     123                 *  二重待ち状態から強制待ち状態への遷移
    171124                 */
    172125                p_tcb->tstat = TS_SUSPENDED;
     
    176129
    177130/*
    178  *  オブジェクトå¾
    179 ã¡ã‚­ãƒ¥ãƒ¼ã‹ã‚‰ã®å‰Šé™¤
    180  *
    181  *  p_tcbで指定されるタスクが,同期・通信オブジェクトのå¾
    182 ã¡ã‚­ãƒ¥ãƒ¼ã«ã¤
    183  *  ながれていれば,å¾
    184 ã¡ã‚­ãƒ¥ãƒ¼ã‹ã‚‰å‰Šé™¤ã™ã‚‹ï¼Ž
     131 *  オブジェクト待ちキューからの削除
     132 *
     133 *  p_tcbで指定されるタスクが,同期・通信オブジェクトの待ちキューにつ
     134 *  ながれていれば,待ちキューから削除する.
    185135 */
    186136Inline void
     
    193143
    194144/*
    195  *  時間å¾
    196 ã¡ã®ãŸã‚ã®ã‚¿ã‚¤ãƒ ã‚¤ãƒ™ãƒ³ãƒˆãƒ–ロックの登録解除
    197  *
    198  *  p_tcbで指定されるタスクに対して,時間å¾
    199 ã¡ã®ãŸã‚ã®ã‚¿ã‚¤ãƒ ã‚¤ãƒ™ãƒ³ãƒˆãƒ–
    200  *  ロックが登録されていれば,それを登録解除する.
     145 *  時間待ちのためのタイムイベントブロックの登録解除
     146 *
     147 *  p_tcbで指定されるタスクに対して,時間待ちのためのタイムイベントブ
     148 *  ロックが登録されていれば,それを登録解除する.
    201149 */
    202150Inline void
     
    209157
    210158/*
    211  *  å¾
    212 ã¡è§£é™¤
    213  *
    214  *  p_tcbで指定されるタスクのå¾
    215 ã¡çŠ¶æ
    216 ‹ã‚’解除する.å
    217 ·ä½“的には,タイムイ
    218  *  ベントブロックが登録されていれば,それを登録解除する.また,タスク
    219  *  状æ
    220 ‹ã‚’更新し,å¾
    221 ã¡è§£é™¤ã—たタスクからの返値をE_OKとする.å¾
    222 ã¡ã‚­ãƒ¥ãƒ¼
    223  *  からの削除は行わない.
     159 *  待ち解除
     160 *
     161 *  p_tcbで指定されるタスクの待ち状態を解除する.具体的には,タイムイ
     162 *  ベントブロックが登録されていれば,それを登録解除する.また,タスク
     163 *  状態を更新し,待ち解除したタスクからの返値をE_OKとする.待ちキュー
     164 *  からの削除は行わない.
    224165 */
    225166extern void     wait_complete(TCB *p_tcb);
    226167
    227168/*
    228  *  タイムアウトに伴うå¾
    229 ã¡è§£é™¤
    230  *
    231  *  p_tcbで指定されるタスクが,å¾
    232 ã¡ã‚­ãƒ¥ãƒ¼ã«ã¤ãªãŒã‚Œã¦ã„ればå¾
    233 ã¡ã‚­ãƒ¥ãƒ¼
    234  *  から削除し,タスク状æ
    235 ‹ã‚’更新する.また,å¾
    236 ã¡è§£é™¤ã—たタスクからの返
    237  *  値を,wait_tmoutではE_TMOUT,wait_tmout_okではE_OKとする.
    238  *
    239  *  wait_tmout_okは,dly_tskで使うためのもので,å¾
    240 ã¡ã‚­ãƒ¥ãƒ¼ã‹ã‚‰å‰Šé™¤ã™ã‚‹
    241  *  処理を行わない.
    242  *
    243  *  いずれの関数も,タイムイベントのコールバック関数として用いるための
    244  *  もので,割込みハンドラから呼び出されることを想定している.
     169 *  タイムアウトに伴う待ち解除
     170 *
     171 *  p_tcbで指定されるタスクが,待ちキューにつながれていれば待ちキュー
     172 *  から削除し,タスク状態を更新する.また,待ち解除したタスクからの返
     173 *  値を,wait_tmoutではE_TMOUT,wait_tmout_okではE_OKとする.
     174 *
     175 *  wait_tmout_okは,dly_tskで使うためのもので,待ちキューから削除する
     176 *  処理を行わない.
     177 *
     178 *  いずれの関数も,タイムイベントのコールバック関数として用いるための
     179 *  もので,割込みハンドラから呼び出されることを想定している.
    245180 */
    246181extern void     wait_tmout(TCB *p_tcb);
     
    248183
    249184/*
    250  *  å¾
    251 ã¡ã‚­ãƒ¥ãƒ¼ã®å
    252 ˆé ­ã®ã‚¿ã‚¹ã‚¯ID
    253  *
    254  *  p_wait_queueで指定したå¾
    255 ã¡ã‚­ãƒ¥ãƒ¼ã®å
    256 ˆé ­ã®ã‚¿ã‚¹ã‚¯IDを返す.å¾
    257 ã¡ã‚­ãƒ¥ãƒ¼
    258  *  が空の場合には,TSK_NONEを返す.
     185 *  待ちキューの先頭のタスクID
     186 *
     187 *  p_wait_queueで指定した待ちキューの先頭のタスクIDを返す.待ちキュー
     188 *  が空の場合には,TSK_NONEを返す.
    259189 */
    260190Inline ID
     
    270200
    271201/*
    272  *  同期・通信オブジェクトの管理ブロックのå
    273 ±é€šéƒ¨åˆ†æ“ä½œãƒ«ãƒ¼ãƒãƒ³
    274  *
    275  *  同期・通信オブジェクトの初期化ブロックと管理ブロックのå
    276 ˆé ­éƒ¨åˆ†ã¯å
    277 ±
    278  *  通になっている.以下は,そのå
    279 ±é€šéƒ¨åˆ†ã‚’扱うための型およびルーチン群
    280  *  である.
    281  *
    282  *  複数のå¾
    283 ã¡ã‚­ãƒ¥ãƒ¼ã‚’持つ同期・通信オブジェクトの場合,å
    284 ˆé ­ä»¥å¤–のå¾
    285 ã¡
    286  *  キューを操作する場合には,これらのルーチンは使えない.また,オブジェ
    287  *  クト属性のTA_TPRIビットを参ç
    288 §ã™ã‚‹ã®ã§ï¼Œã“のビットを他の目的に使って
    289  *  いる場合も,これらのルーチンは使えない.
    290  */
    291 
    292 /*
    293  *  同期・通信オブジェクトの初期化ブロックのå
    294 ±é€šéƒ¨åˆ†
     202 *  同期・通信オブジェクトの管理ブロックの共通部分操作ルーチン
     203 *
     204 *  同期・通信オブジェクトの初期化ブロックと管理ブロックの先頭部分は共
     205 *  通になっている.以下は,その共通部分を扱うための型およびルーチン群
     206 *  である.
     207 *
     208 *  複数の待ちキューを持つ同期・通信オブジェクトの場合,先頭以外の待ち
     209 *  キューを操作する場合には,これらのルーチンは使えない.また,オブジェ
     210 *  クト属性のTA_TPRIビットを参照するので,このビットを他の目的に使って
     211 *  いる場合も,これらのルーチンは使えない.
     212 */
     213
     214/*
     215 *  同期・通信オブジェクトの初期化ブロックの共通部分
    295216 */
    296217typedef struct wait_object_initialization_block {
    297         ATR                     wobjatr;                /* オブジェクト属性 */
     218        ATR                     wobjatr;                /* オブジェクト属性 */
    298219} WOBJINIB;
    299220
    300221/*
    301  *  同期・通信オブジェクトの管理ブロックのå
    302 ±é€šéƒ¨åˆ†
     222 *  同期・通信オブジェクトの管理ブロックの共通部分
    303223 */
    304224typedef struct wait_object_control_block {
    305         QUEUE           wait_queue;             /* å¾
    306 ã¡ã‚­ãƒ¥ãƒ¼ */
    307         const WOBJINIB *p_wobjinib;     /* 初期化ブロックへのポインタ */
     225        QUEUE           wait_queue;             /* 待ちキュー */
     226        const WOBJINIB *p_wobjinib;     /* 初期化ブロックへのポインタ */
    308227} WOBJCB;
    309228
    310229/*
    311  *  同期・通信オブジェクトのå¾
    312 ã¡æƒ
    313 å ±ãƒ–ロックのå
    314 ±é€šéƒ¨åˆ†
    315  *
    316  *  この構造体は,å¾
    317 ã¡æƒ
    318 å ±ãƒ–ロック(WINFO)を拡張(オブジェクト指向言
    319  *  語の継承に相当)したものであるが,WINFOがå
    320 ±ç”¨ä½“で定義されているた
    321  *  めに,1つのフィールドとして含めている.
     230 *  同期・通信オブジェクトの待ち情報ブロックの共通部分
     231 *
     232 *  この構造体は,待ち情報ブロック(WINFO)を拡張(オブジェクト指向言
     233 *  語の継承に相当)したものであるが,WINFOが共用体で定義されているた
     234 *  めに,1つのフィールドとして含めている.
    322235 */
    323236typedef struct wait_object_waiting_information {
    324         WINFO   winfo;                  /* 標準のå¾
    325 ã¡æƒ
    326 å ±ãƒ–ロック */
    327         WOBJCB  *p_wobjcb;              /* å¾
    328 ã¡ã‚ªãƒ–ジェクトの管理ブロック */
     237        WINFO   winfo;                  /* 標準の待ち情報ブロック */
     238        WOBJCB  *p_wobjcb;              /* 待ちオブジェクトの管理ブロック */
    329239} WINFO_WOBJ;
    330240
    331241/*
    332  *  同期・通信オブジェクトに対するå¾
    333 ã¡çŠ¶æ
    334 ‹ã¸ã®é·ç§»
     242 *  同期・通信オブジェクトに対する待ち状態への遷移
    335243 * 
    336  *  実行中のタスクをå¾
    337 ã¡çŠ¶æ
    338 ‹ã«é·ç§»ã•ã›ï¼ŒåŒæœŸãƒ»é€šä¿¡ã‚ªãƒ–ジェクトのå¾
    339 ã¡ã‚­ãƒ¥ãƒ¼
    340  *  につなぐ.また,å¾
    341 ã¡æƒ
    342 å ±ãƒ–ロック(WINFO)のp_wobjcbを設定する.
    343  *  wobj_make_wait_tmoutは,タイムイベントブロックの登録も行う.
     244 *  実行中のタスクを待ち状態に遷移させ,同期・通信オブジェクトの待ちキュー
     245 *  につなぐ.また,待ち情報ブロック(WINFO)のp_wobjcbを設定する.
     246 *  wobj_make_wait_tmoutは,タイムイベントブロックの登録も行う.
    344247 */
    345248extern void     wobj_make_wait(WOBJCB *p_wobjcb, WINFO_WOBJ *p_winfo);
     
    348251
    349252/*
    350  *  タスク優å
    351 ˆåº¦å¤‰æ›´æ™‚の処理
    352  *
    353  *  同期・通信オブジェクトに対するå¾
    354 ã¡çŠ¶æ
    355 ‹ã«ã‚るタスクの優å
    356 ˆåº¦ãŒå¤‰æ›´ã•
    357  *  れた場合に,å¾
    358 ã¡ã‚­ãƒ¥ãƒ¼ã®ä¸­ã§ã®ã‚¿ã‚¹ã‚¯ã®ä½ç½®ã‚’修正する.
     253 *  タスク優先度変更時の処理
     254 *
     255 *  同期・通信オブジェクトに対する待ち状態にあるタスクの優先度が変更さ
     256 *  れた場合に,待ちキューの中でのタスクの位置を修正する.
    359257 */
    360258Inline void
     
    368266
    369267/*
    370  *  å¾
    371 ã¡ã‚­ãƒ¥ãƒ¼ã®åˆæœŸåŒ–
    372  *
    373  *  å¾
    374 ã¡ã‚­ãƒ¥ãƒ¼ã«ã¤ãªãŒã‚Œã¦ã„るタスクをすべてå¾
    375 ã¡è§£é™¤ã™ã‚‹ï¼Žå¾
    376 ã¡è§£é™¤ã—た
    377  *  タスクからの返値は,E_DLTとする.
     268 *  待ちキューの初期化
     269 *
     270 *  待ちキューにつながれているタスクをすべて待ち解除する.待ち解除した
     271 *  タスクからの返値は,E_DLTとする.
    378272 */
    379273extern void     init_wait_queue(QUEUE *p_wait_queue);
Note: See TracChangeset for help on using the changeset viewer.