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

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • asp3_gr_sakura/trunk/sample/sample1.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  *  サンプルプログラム(1)の本体
    60  *
    61  *  ASPカーネルの基本的な動作を確認するためのサンプルプログラム.
    62  *
    63  *  プログラムの概要:
    64  *
    65  *  ユーザインタフェースを受け持つメインタスク(タスクID: MAIN_TASK,優
    66  *  å
    67 ˆåº¦: MAIN_PRIORITY)と,3つの並行実行されるタスク(タスクID:
    68  *  TASK1~TASK3,初期優å
    69 ˆåº¦: MID_PRIORITY)で構成される.また,起動周
    70  *  期が2秒の周期ハンドラ(周期ハンドラID: CYCHDR1)を用いる.
    71  *
    72  *  並行実行されるタスクは,task_loop回空ループを実行する度に,タスクが
    73  *  実行中であることをあらわすメッセージを表示する.空ループを実行する
    74  *  のは,空ループなしでメッセージを出力すると,多量のメッセージが出力
    75  *  され,プログラムの動作が確認しずらくなるためである.また,低速なシ
    76  *  リアルポートを用いてメッセージを出力する場合に,すべてのメッセージ
    77  *  が出力できるように,メッセージの量を制限するという理由もある.
    78  *
    79  *  周期ハンドラは,三つの優å
    80 ˆåº¦ï¼ˆHIGH_PRIORITY,MID_PRIORITY,
    81  *  LOW_PRIORITY)のレディキューを回転させる.プログラムの起動直後は,
    82  *  周期ハンドラは停止状æ
    83 ‹ã«ãªã£ã¦ã„る.
    84  *
    85  *  メインタスクは,シリアルI/Oポートからの文字å
    86 ¥åŠ›ã‚’行い(文字å
    87 ¥åŠ›ã‚’
    88  *  å¾
    89 ã£ã¦ã„る間は,並行実行されるタスクが実行されている),å
    90 ¥åŠ›ã•ã‚ŒãŸ
    91  *  文字に対応した処理を実行する.å
    92 ¥åŠ›ã•ã‚ŒãŸæ–‡å­—と処理の関係は次の通り.
    93  *  Control-Cまたは'Q'がå
    94 ¥åŠ›ã•ã‚Œã‚‹ã¨ï¼Œãƒ—ログラムを終了する.
    95  *
    96  *  '1' : 対象タスクをTASK1に切り換える(初期設定).
    97  *  '2' : 対象タスクをTASK2に切り換える.
    98  *  '3' : 対象タスクをTASK3に切り換える.
    99  *  'a' : 対象タスクをact_tskにより起動する.
    100  *  'A' : 対象タスクに対する起動要求をcan_actによりキャンセルする.
    101  *  'e' : 対象タスクにext_tskを呼び出させ,終了させる.
    102  *  't' : 対象タスクをter_tskにより強制終了する.
    103  *  '>' : 対象タスクの優å
    104 ˆåº¦ã‚’HIGH_PRIORITYにする.
    105  *  '=' : 対象タスクの優å
    106 ˆåº¦ã‚’MID_PRIORITYにする.
    107  *  '<' : 対象タスクの優å
    108 ˆåº¦ã‚’LOW_PRIORITYにする.
    109  *  'G' : 対象タスクの優å
    110 ˆåº¦ã‚’get_priで読み出す.
    111  *  's' : 対象タスクにslp_tskを呼び出させ,起床å¾
    112 ã¡ã«ã•ã›ã‚‹ï¼Ž
    113  *  'S' : 対象タスクにtslp_tsk(10秒)を呼び出させ,起床å¾
    114 ã¡ã«ã•ã›ã‚‹ï¼Ž
    115  *  'w' : 対象タスクをwup_tskにより起床する.
    116  *  'W' : 対象タスクに対する起床要求をcan_wupによりキャンセルする.
    117  *  'l' : 対象タスクをrel_waiにより強制的にå¾
    118 ã¡è§£é™¤ã«ã™ã‚‹ï¼Ž
    119  *  'u' : 対象タスクをsus_tskにより強制å¾
    120 ã¡çŠ¶æ
    121 ‹ã«ã™ã‚‹ï¼Ž
    122  *  'm' : 対象タスクの強制å¾
    123 ã¡çŠ¶æ
    124 ‹ã‚’rsm_tskにより解除する.
    125  *  'd' : 対象タスクにdly_tsk(10秒)を呼び出させ,時間経過å¾
    126 ã¡ã«ã•ã›ã‚‹ï¼Ž
    127  *  'x' : 対象タスクにras_terにより終了要求する.
    128  *  'y' : 対象タスクにdis_terを呼び出させ,タスク終了を禁止する.
    129  *  'Y' : 対象タスクにena_terを呼び出させ,タスク終了を許可する.
    130  *  'r' : 3つの優å
    131 ˆåº¦ï¼ˆHIGH_PRIORITY,MID_PRIORITY,LOW_PRIORITY)のレ
    132  *        ディキューを回転させる.
    133  *  'c' : 周期ハンドラを動作開始させる.
    134  *  'C' : 周期ハンドラを動作停止させる.
    135  *  'b' : アラームハンドラを5秒後に起動するよう動作開始させる.
    136  *  'B' : アラームハンドラを動作停止させる.
    137  *  'z' : 対象タスクにCPU例外を発生させる(タスクを終了させる).
    138  *  'Z' : 対象タスクにCPUロック状æ
    139 ‹ã§CPU例外を発生させる(プログラムを
    140  *        終了する).
    141  *  '@' : タスク3をacre_tskにより生成する.
    142  *  '!' : 対象タスクをdel_tskにより削除する.
    143  *  '$' : アラームハンドラをacre_almにより生成する.
    144  *  '#' : アラームハンドラをdel_almにより削除する.
    145  *  'V' : fch_hrtで高分解能タイマを2回読む.
    146  *  'o' : 対象タスクに対してオーバランハンドラを動作開始させる
    147  *  'O' : 対象タスクに対してオーバランハンドラを動作停止させる
    148  *  'v' : 発行したシステムコールを表示する(デフォルト).
    149  *  'q' : 発行したシステムコールを表示しない.
     44 *  サンプルプログラム(1)の本体
     45 *
     46 *  ASPカーネルの基本的な動作を確認するためのサンプルプログラム.
     47 *
     48 *  プログラムの概要:
     49 *
     50 *  ユーザインタフェースを受け持つメインタスク(タスクID: MAIN_TASK,優
     51 *  先度: MAIN_PRIORITY)と,3つの並行実行されるタスク(タスクID:
     52 *  TASK1~TASK3,初期優先度: MID_PRIORITY)で構成される.また,起動周
     53 *  期が2秒の周期ハンドラ(周期ハンドラID: CYCHDR1)を用いる.
     54 *
     55 *  並行実行されるタスクは,task_loop回空ループを実行する度に,タスクが
     56 *  実行中であることをあらわすメッセージを表示する.空ループを実行する
     57 *  のは,空ループなしでメッセージを出力すると,多量のメッセージが出力
     58 *  され,プログラムの動作が確認しずらくなるためである.また,低速なシ
     59 *  リアルポートを用いてメッセージを出力する場合に,すべてのメッセージ
     60 *  が出力できるように,メッセージの量を制限するという理由もある.
     61 *
     62 *  周期ハンドラは,三つの優先度(HIGH_PRIORITY,MID_PRIORITY,
     63 *  LOW_PRIORITY)のレディキューを回転させる.プログラムの起動直後は,
     64 *  周期ハンドラは停止状態になっている.
     65 *
     66 *  メインタスクは,シリアルI/Oポートからの文字入力を行い(文字入力を
     67 *  待っている間は,並行実行されるタスクが実行されている),入力された
     68 *  文字に対応した処理を実行する.入力された文字と処理の関係は次の通り.
     69 *  Control-Cまたは'Q'が入力されると,プログラムを終了する.
     70 *
     71 *  '1' : 対象タスクをTASK1に切り換える(初期設定).
     72 *  '2' : 対象タスクをTASK2に切り換える.
     73 *  '3' : 対象タスクをTASK3に切り換える.
     74 *  'a' : 対象タスクをact_tskにより起動する.
     75 *  'A' : 対象タスクに対する起動要求をcan_actによりキャンセルする.
     76 *  'e' : 対象タスクにext_tskを呼び出させ,終了させる.
     77 *  't' : 対象タスクをter_tskにより強制終了する.
     78 *  '>' : 対象タスクの優先度をHIGH_PRIORITYにする.
     79 *  '=' : 対象タスクの優先度をMID_PRIORITYにする.
     80 *  '<' : 対象タスクの優先度をLOW_PRIORITYにする.
     81 *  'G' : 対象タスクの優先度をget_priで読み出す.
     82 *  's' : 対象タスクにslp_tskを呼び出させ,起床待ちにさせる.
     83 *  'S' : 対象タスクにtslp_tsk(10秒)を呼び出させ,起床待ちにさせる.
     84 *  'w' : 対象タスクをwup_tskにより起床する.
     85 *  'W' : 対象タスクに対する起床要求をcan_wupによりキャンセルする.
     86 *  'l' : 対象タスクをrel_waiにより強制的に待ち解除にする.
     87 *  'u' : 対象タスクをsus_tskにより強制待ち状態にする.
     88 *  'm' : 対象タスクの強制待ち状態をrsm_tskにより解除する.
     89 *  'd' : 対象タスクにdly_tsk(10秒)を呼び出させ,時間経過待ちにさせる.
     90 *  'x' : 対象タスクにras_terにより終了要求する.
     91 *  'y' : 対象タスクにdis_terを呼び出させ,タスク終了を禁止する.
     92 *  'Y' : 対象タスクにena_terを呼び出させ,タスク終了を許可する.
     93 *  'r' : 3つの優先度(HIGH_PRIORITY,MID_PRIORITY,LOW_PRIORITY)のレ
     94 *        ディキューを回転させる.
     95 *  'c' : 周期ハンドラを動作開始させる.
     96 *  'C' : 周期ハンドラを動作停止させる.
     97 *  'b' : アラームハンドラを5秒後に起動するよう動作開始させる.
     98 *  'B' : アラームハンドラを動作停止させる.
     99 *  'z' : 対象タスクにCPU例外を発生させる(タスクを終了させる).
     100 *  'Z' : 対象タスクにCPUロック状態でCPU例外を発生させる(プログラムを
     101 *        終了する).
     102 *  '@' : タスク3をacre_tskにより生成する.
     103 *  '!' : 対象タスクをdel_tskにより削除する.
     104 *  '$' : アラームハンドラをacre_almにより生成する.
     105 *  '#' : アラームハンドラをdel_almにより削除する.
     106 *  'V' : fch_hrtで高分解能タイマを2回読む.
     107 *  'o' : 対象タスクに対してオーバランハンドラを動作開始させる
     108 *  'O' : 対象タスクに対してオーバランハンドラを動作停止させる
     109 *  'v' : 発行したシステムコールを表示する(デフォルト).
     110 *  'q' : 発行したシステムコールを表示しない.
    150111 */
    151112
     
    160121
    161122/*
    162  *  サービスコールのエラーのログ出力
     123 *  サービスコールのエラーのログ出力
    163124 */
    164125Inline void
     
    173134
    174135/*
    175  *  並行実行されるタスクへのメッセージ領域
     136 *  並行実行されるタスクへのメッセージ領域
    176137 */
    177138char    message[3];
    178139
    179140/*
    180  *  ループ回数
    181  */
    182 ulong_t task_loop;              /* タスクå†
    183 ã§ã®ãƒ«ãƒ¼ãƒ—回数 */
    184 
    185 /*
    186  *  並行実行されるタスク
     141 *  ループ回数
     142 */
     143ulong_t task_loop;              /* タスク内でのループ回数 */
     144
     145/*
     146 *  並行実行されるタスク
    187147 */
    188148void task(intptr_t exinf)
     
    259219
    260220/*
    261  *  割込みハンドラ
     221 *  割込みハンドラ
    262222 */
    263223#ifdef INTNO1
     
    274234
    275235/*
    276  *  CPU例外ハンドラ
    277  */
    278 ID      cpuexc_tskid;           /* CPU例外を起こしたタスクのID */
     236 *  CPU例外ハンドラ
     237 */
     238ID      cpuexc_tskid;           /* CPU例外を起こしたタスクのID */
    279239
    280240#ifdef CPUEXC1
     
    315275
    316276/*
    317  *  周期ハンドラ
    318  *
    319  *  HIGH_PRIORITY,MID_PRIORITY,LOW_PRIORITY の各優å
    320 ˆåº¦ã®ãƒ¬ãƒ‡ã‚£ã‚­ãƒ¥ãƒ¼
    321  *  を回転させる.
     277 *  周期ハンドラ
     278 *
     279 *  HIGH_PRIORITY,MID_PRIORITY,LOW_PRIORITY の各優先度のレディキュー
     280 *  を回転させる.
    322281 */
    323282void cyclic_handler(intptr_t exinf)
     
    329288
    330289/*
    331  *  アラームハンドラ
    332  *
    333  *  HIGH_PRIORITY,MID_PRIORITY,LOW_PRIORITY の各優å
    334 ˆåº¦ã®ãƒ¬ãƒ‡ã‚£ã‚­ãƒ¥ãƒ¼
    335  *  を回転させる.
     290 *  アラームハンドラ
     291 *
     292 *  HIGH_PRIORITY,MID_PRIORITY,LOW_PRIORITY の各優先度のレディキュー
     293 *  を回転させる.
    336294 */
    337295void alarm_handler(intptr_t exinf)
     
    343301
    344302/*
    345  *  例外処理タスク
     303 *  例外処理タスク
    346304 */
    347305void exc_task(intptr_t exinf)
     
    351309
    352310/*
    353  *  オーバランハンドラ
     311 *  オーバランハンドラ
    354312 */
    355313#ifdef TOPPERS_SUPPORT_OVRHDR
     
    366324
    367325/*
    368  *  メインタスク
     326 *  メインタスク
    369327 */
    370328void main_task(intptr_t exinf)
     
    389347
    390348        /*
    391          *  シリアルポートの初期化
     349         *  シリアルポートの初期化
    392350         *
    393          *  システムログタスクと同じシリアルポートを使う場合など,シリアル
    394          *  ポートがオープン済みの場合にはここでE_OBJエラーになるが,支障は
    395          *  ない.
     351         *  システムログタスクと同じシリアルポートを使う場合など,シリアル
     352         *  ポートがオープン済みの場合にはここでE_OBJエラーになるが,支障は
     353         *  ない.
    396354         */
    397355        ercd = serial_opn_por(TASK_PORTID);
     
    404362
    405363        /*
    406          *  ループ回数の設定
     364         *  ループ回数の設定
    407365         *
    408          *  並行実行されるタスクå†
    409 ã§ã®ç©ºãƒ«ãƒ¼ãƒ—の回数(task_loop)は,空ルー
    410          *  プの実行時間が約0.4秒になるように設定する.この設定のために,
    411          *  LOOP_REF回の空ループの実行時間を,その前後でget_timを呼ぶことで
    412          *  測定し,その測定結果から空ループの実行時間が0.4秒になるループ回
    413          *  数を求め,task_loopに設定する.
     366         *  並行実行されるタスク内での空ループの回数(task_loop)は,空ルー
     367         *  プの実行時間が約0.4秒になるように設定する.この設定のために,
     368         *  LOOP_REF回の空ループの実行時間を,その前後でget_timを呼ぶことで
     369         *  測定し,その測定結果から空ループの実行時間が0.4秒になるループ回
     370         *  数を求め,task_loopに設定する.
    414371         *
    415          *  LOOP_REFは,デフォルトでは1,000,000に設定しているが,想定したよ
    416          *  りé
    417 ã„プロセッサでは,サンプルプログラムの実行開始に時間がかか
    418          *  りすぎるという問題を生じる.逆に想定したより速いプロセッサでは,
    419          *  LOOP_REF回の空ループの実行時間が短くなり,task_loopに設定する値
    420          *  の誤差が大きくなるという問題がある.
     372         *  LOOP_REFは,デフォルトでは1,000,000に設定しているが,想定したよ
     373         *  り遅いプロセッサでは,サンプルプログラムの実行開始に時間がかか
     374         *  りすぎるという問題を生じる.逆に想定したより速いプロセッサでは,
     375         *  LOOP_REF回の空ループの実行時間が短くなり,task_loopに設定する値
     376         *  の誤差が大きくなるという問題がある.
    421377         *
    422          *  そこで,そのようなターゲットでは,target_test.hで,LOOP_REFを適
    423          *  切な値に定義するのが望ましい.
     378         *  そこで,そのようなターゲットでは,target_test.hで,LOOP_REFを適
     379         *  切な値に定義するのが望ましい.
    424380         *
    425          *  また,task_loopの値を固定したい場合には,その値をTASK_LOOPにマ
    426          *  クロ定義する.TASK_LOOPがマクロ定義されている場合,上記の測定を
    427          *  行わずに,TASK_LOOPに定義された値を空ループの回数とする.
     381         *  また,task_loopの値を固定したい場合には,その値をTASK_LOOPにマ
     382         *  クロ定義する.TASK_LOOPがマクロ定義されている場合,上記の測定を
     383         *  行わずに,TASK_LOOPに定義された値を空ループの回数とする.
    428384         *
    429          * ターゲットによっては,空ループの実行時間の1回目の測定で,本来よ
    430          * りも長めになるものがある.このようなターゲットでは,MEASURE_TWICE
    431          * をマクロ定義することで,1回目の測定結果を捨てて,2回目の測定結果
    432          * を使う.
     385         * ターゲットによっては,空ループの実行時間の1回目の測定で,本来よ
     386         * りも長めになるものがある.このようなターゲットでは,MEASURE_TWICE
     387         * をマクロ定義することで,1回目の測定結果を捨てて,2回目の測定結果
     388         * を使う.
    433389         */
    434390#ifdef TASK_LOOP
     
    452408
    453409        /*
    454          *  タスクの起動
     410         *  タスクの起動
    455411         */
    456412        SVC_PERROR(act_tsk(TASK1));
     
    458414
    459415        /*
    460          *  メインループ
     416         *  メインループ
    461417         */
    462418        do {
Note: See TracChangeset for help on using the changeset viewer.