Ignore:
Timestamp:
Aug 23, 2017, 9:27:43 AM (7 years ago)
Author:
coas-nagasima
Message:

文字コードを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/include/kernel.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    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  *              TOPPERS/ASPカーネル 標準ヘッダファイル
     44 *              TOPPERS/ASPカーネル 標準ヘッダファイル
    6045 *
    61  *  TOPPERS/ASPカーネルがサポートするサービスコールの宣言と,å¿
    62 è¦ãªãƒ‡ãƒ¼
    63  *  タ型,定数,マクロの定義を含むヘッダファイル.
     46 *  TOPPERS/ASPカーネルがサポートするサービスコールの宣言と,必要なデー
     47 *  タ型,定数,マクロの定義を含むヘッダファイル.
    6448 *
    65  *  アセンブリ言語のソースファイルからこのファイルをインクルードする時
    66  *  は,TOPPERS_MACRO_ONLYを定義しておく.これにより,マクロ定義以外を
    67  *  除くようになっている.
     49 *  アセンブリ言語のソースファイルからこのファイルをインクルードする時
     50 *  は,TOPPERS_MACRO_ONLYを定義しておく.これにより,マクロ定義以外を
     51 *  除くようになっている.
    6852 */
    6953
     
    7660
    7761/*
    78  *      TOPPERSå
    79 ±é€šã®ãƒ‡ãƒ¼ã‚¿åž‹ãƒ»å®šæ•°ãƒ»ãƒžã‚¯ãƒ­
     62 *      TOPPERS共通のデータ型・定数・マクロ
    8063 */
    8164#include <t_stddef.h>
    8265
    8366/*
    84  *  ターゲット依存部
     67 *  ターゲット依存部
    8568 */
    8669#include "target_kernel.h"
    8770
    8871/*
    89  *  サポートする機能
     72 *  サポートする機能
    9073 */
    9174#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
    92 #define TOPPERS_SUPPORT_DIS_INT                 /* dis_intがサポートされている */
     75#define TOPPERS_SUPPORT_DIS_INT                 /* dis_intがサポートされている */
    9376#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
    9477
    9578#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
    96 #define TOPPERS_SUPPORT_ENA_INT                 /* ena_intがサポートされている */
     79#define TOPPERS_SUPPORT_ENA_INT                 /* ena_intがサポートされている */
    9780#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
    9881
    99 #define TOPPERS_SUPPORT_DYNAMIC_CRE             /* 動的生成機能拡張 */
     82#define TOPPERS_SUPPORT_DYNAMIC_CRE             /* 動的生成機能拡張 */
    10083
    10184#ifndef TOPPERS_MACRO_ONLY
    10285
    10386/*
    104  *  データ型の定義
    105  */
    106 
    107 /*
    108  *  ビットパターンやオブジェクト番号の型定義
    109  */
    110 typedef uint_t          FLGPTN;         /* イベントフラグのビットパターン */
    111 typedef uint_t          INTNO;          /* 割込み番号 */
    112 typedef uint_t          INHNO;          /* 割込みハンドラ番号 */
    113 typedef uint_t          EXCNO;          /* CPU例外ハンドラ番号 */
    114 
    115 /*
    116  *  処理単位の型定義
     87 *  データ型の定義
     88 */
     89
     90/*
     91 *  ビットパターンやオブジェクト番号の型定義
     92 */
     93typedef uint_t          FLGPTN;         /* イベントフラグのビットパターン */
     94typedef uint_t          INTNO;          /* 割込み番号 */
     95typedef uint_t          INHNO;          /* 割込みハンドラ番号 */
     96typedef uint_t          EXCNO;          /* CPU例外ハンドラ番号 */
     97
     98/*
     99 *  処理単位の型定義
    117100 */
    118101typedef void    (*TASK)(intptr_t exinf);
     
    125108
    126109/*
    127  *  メモリ領域確保のための型定義
     110 *  メモリ領域確保のための型定義
    128111 */
    129112#ifndef TOPPERS_STK_T
    130113#define TOPPERS_STK_T   intptr_t
    131114#endif /* TOPPERS_STK_T */
    132 typedef TOPPERS_STK_T   STK_T;  /* スタック領域を確保するための型 */
     115typedef TOPPERS_STK_T   STK_T;  /* スタック領域を確保するための型 */
    133116
    134117#ifndef TOPPERS_MPF_T
    135118#define TOPPERS_MPF_T   intptr_t
    136119#endif /* TOPPERS_MPF_T */
    137 typedef TOPPERS_MPF_T   MPF_T;  /* 固定長メモリプール領域を確保するための型 */
    138 
    139 /*
    140  *  タイムイベントの通知方法のパケット形式の定義
    141  */
    142 typedef struct {
    143         intptr_t        exinf;          /* タイムイベントハンドラの拡張æƒ
    144 å ± */
    145         TMEHDR          tmehdr;         /* タイムイベントハンドラのå
    146 ˆé ­ç•ªåœ° */
     120typedef TOPPERS_MPF_T   MPF_T;  /* 固定長メモリプール領域を確保するための型 */
     121
     122/*
     123 *  タイムイベントの通知方法のパケット形式の定義
     124 */
     125typedef struct {
     126        intptr_t        exinf;          /* タイムイベントハンドラの拡張情報 */
     127        TMEHDR          tmehdr;         /* タイムイベントハンドラの先頭番地 */
    147128} T_NFY_HDR;
    148129
    149130typedef struct {
    150         intptr_t        *p_var;         /* 変数の番地 */
    151         intptr_t        value;          /* 設定する値 */
     131        intptr_t        *p_var;         /* 変数の番地 */
     132        intptr_t        value;          /* 設定する値 */
    152133} T_NFY_VAR;
    153134
    154135typedef struct {
    155         intptr_t        *p_var;         /* 変数の番地 */
     136        intptr_t        *p_var;         /* 変数の番地 */
    156137} T_NFY_IVAR;
    157138
    158139typedef struct {
    159         ID                      tskid;          /* タスクID */
     140        ID                      tskid;          /* タスクID */
    160141} T_NFY_TSK;
    161142
    162143typedef struct {
    163         ID                      semid;          /* セマフォID */
     144        ID                      semid;          /* セマフォID */
    164145} T_NFY_SEM;
    165146
    166147typedef struct {
    167         ID                      flgid;          /* イベントフラグID */
    168         FLGPTN          flgptn;         /* セットするビットパターン */
     148        ID                      flgid;          /* イベントフラグID */
     149        FLGPTN          flgptn;         /* セットするビットパターン */
    169150} T_NFY_FLG;
    170151
    171152typedef struct {
    172         ID                      dtqid;          /* データキューID */
    173         intptr_t        data;           /* 送信する値 */
     153        ID                      dtqid;          /* データキューID */
     154        intptr_t        data;           /* 送信する値 */
    174155} T_NFY_DTQ;
    175156
    176157typedef struct {
    177         intptr_t        *p_var;         /* 変数の番地 */
     158        intptr_t        *p_var;         /* 変数の番地 */
    178159} T_ENFY_VAR;
    179160
    180161typedef struct {
    181         ID                      dtqid;          /* データキューID */
     162        ID                      dtqid;          /* データキューID */
    182163} T_ENFY_DTQ;
    183164
    184165typedef struct {
    185         MODE    nfymode;                        /* 通知処理モード */
    186         union {                                         /* タイムイベントの通知に関する付随æƒ
    187 å ± */
     166        MODE    nfymode;                        /* 通知処理モード */
     167        union {                                         /* タイムイベントの通知に関する付随情報 */
    188168                T_NFY_HDR       handler;
    189169                T_NFY_VAR       setvar;         
     
    195175                T_NFY_DTQ       snddtq;
    196176        } nfy;
    197         union {                                         /* エラーの通知に関する付随æƒ
    198 å ± */
     177        union {                                         /* エラーの通知に関する付随情報 */
    199178                T_ENFY_VAR      setvar;
    200179                T_NFY_IVAR      incvar;         
     
    208187
    209188/*
    210  *  パケット形式の定義
     189 *  パケット形式の定義
    211190 */
    212191typedef struct t_ctsk {
    213         ATR                     tskatr;         /* タスク属性 */
    214         intptr_t        exinf;          /* タスクの拡張æƒ
    215 å ± */
    216         TASK            task;           /* タスクのメインルーチンのå
    217 ˆé ­ç•ªåœ° */
    218         PRI                     itskpri;        /* タスクの起動時優å
    219 ˆåº¦ */
    220         size_t          stksz;          /* タスクのスタック領域のサイズ */
    221         STK_T           *stk;           /* タスクのスタック領域のå
    222 ˆé ­ç•ªåœ° */
     192        ATR                     tskatr;         /* タスク属性 */
     193        intptr_t        exinf;          /* タスクの拡張情報 */
     194        TASK            task;           /* タスクのメインルーチンの先頭番地 */
     195        PRI                     itskpri;        /* タスクの起動時優先度 */
     196        size_t          stksz;          /* タスクのスタック領域のサイズ */
     197        STK_T           *stk;           /* タスクのスタック領域の先頭番地 */
    223198} T_CTSK;
    224199
    225200typedef struct t_rtsk {
    226         STAT    tskstat;        /* タスク状æ
    227 ‹ */
    228         PRI             tskpri;         /* タスクの現在優å
    229 ˆåº¦ */
    230         PRI             tskbpri;        /* タスクのベース優å
    231 ˆåº¦ */
    232         STAT    tskwait;        /* å¾
    233 ã¡è¦å›  */
    234         ID              wobjid;         /* å¾
    235 ã¡å¯¾è±¡ã®ã‚ªãƒ–ジェクトのID */
    236         TMO             lefttmo;        /* タイムアウトするまでの時間 */
    237         uint_t  actcnt;         /* 起動要求キューイング数 */
    238         uint_t  wupcnt;         /* 起床要求キューイング数 */
    239         bool_t  raster;         /* タスク終了要求状æ
    240 ‹ */
    241         bool_t  dister;         /* タスク終了禁止状æ
    242 ‹ */
     201        STAT    tskstat;        /* タスク状態 */
     202        PRI             tskpri;         /* タスクの現在優先度 */
     203        PRI             tskbpri;        /* タスクのベース優先度 */
     204        STAT    tskwait;        /* 待ち要因 */
     205        ID              wobjid;         /* 待ち対象のオブジェクトのID */
     206        TMO             lefttmo;        /* タイムアウトするまでの時間 */
     207        uint_t  actcnt;         /* 起動要求キューイング数 */
     208        uint_t  wupcnt;         /* 起床要求キューイング数 */
     209        bool_t  raster;         /* タスク終了要求状態 */
     210        bool_t  dister;         /* タスク終了禁止状態 */
    243211} T_RTSK;
    244212
    245213typedef struct t_csem {
    246         ATR             sematr;         /* セマフォ属性 */
    247         uint_t  isemcnt;        /* セマフォの初期資源数 */
    248         uint_t  maxsem;         /* セマフォの最大資源数 */
     214        ATR             sematr;         /* セマフォ属性 */
     215        uint_t  isemcnt;        /* セマフォの初期資源数 */
     216        uint_t  maxsem;         /* セマフォの最大資源数 */
    249217} T_CSEM;
    250218
    251219typedef struct t_rsem {
    252         ID              wtskid;         /* セマフォのå¾
    253 ã¡è¡Œåˆ—のå
    254 ˆé ­ã®ã‚¿ã‚¹ã‚¯ã®ID番号 */
    255         uint_t  semcnt;         /* セマフォの現在の資源数 */
     220        ID              wtskid;         /* セマフォの待ち行列の先頭のタスクのID番号 */
     221        uint_t  semcnt;         /* セマフォの現在の資源数 */
    256222} T_RSEM;
    257223
    258224typedef struct t_cflg {
    259         ATR             flgatr;         /* イベントフラグ属性 */
    260         FLGPTN  iflgptn;        /* イベントフラグの初期ビットパターン */
     225        ATR             flgatr;         /* イベントフラグ属性 */
     226        FLGPTN  iflgptn;        /* イベントフラグの初期ビットパターン */
    261227} T_CFLG;
    262228
    263229typedef struct t_rflg {
    264         ID              wtskid;         /* イベントフラグのå¾
    265 ã¡è¡Œåˆ—のå
    266 ˆé ­ã®ã‚¿ã‚¹ã‚¯ã®ID番号 */
    267         FLGPTN  flgptn;         /* イベントフラグの現在のビットパターン */
     230        ID              wtskid;         /* イベントフラグの待ち行列の先頭のタスクのID番号 */
     231        FLGPTN  flgptn;         /* イベントフラグの現在のビットパターン */
    268232} T_RFLG;
    269233
    270234typedef struct t_cdtq {
    271         ATR             dtqatr;         /* データキュー属性 */
    272         uint_t  dtqcnt;         /* データキュー管理領域に格納できるデータ数 */
    273         void    *dtqmb;         /* データキュー管理領域のå
    274 ˆé ­ç•ªåœ° */
     235        ATR             dtqatr;         /* データキュー属性 */
     236        uint_t  dtqcnt;         /* データキュー管理領域に格納できるデータ数 */
     237        void    *dtqmb;         /* データキュー管理領域の先頭番地 */
    275238} T_CDTQ;
    276239
    277240typedef struct t_rdtq {
    278         ID              stskid;         /* データキューの送信å¾
    279 ã¡è¡Œåˆ—のå
    280 ˆé ­ã®ã‚¿ã‚¹ã‚¯ã®ID番号 */
    281         ID              rtskid;         /* データキューの受信å¾
    282 ã¡è¡Œåˆ—のå
    283 ˆé ­ã®ã‚¿ã‚¹ã‚¯ã®ID番号 */
    284         uint_t  sdtqcnt;        /* データキュー管理領域に格納されているデータの数 */
     241        ID              stskid;         /* データキューの送信待ち行列の先頭のタスクのID番号 */
     242        ID              rtskid;         /* データキューの受信待ち行列の先頭のタスクのID番号 */
     243        uint_t  sdtqcnt;        /* データキュー管理領域に格納されているデータの数 */
    285244} T_RDTQ;
    286245
    287246typedef struct t_cpdq {
    288         ATR             pdqatr;         /* 優å
    289 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼å±žæ€§ */
    290         uint_t  pdqcnt;         /* 優å
    291 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†é ˜åŸŸã«æ ¼ç´ã§ãã‚‹ãƒ‡ãƒ¼ã‚¿æ•° */
    292         PRI             maxdpri;        /* 優å
    293 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã«é€ä¿¡ã§ãã‚‹ãƒ‡ãƒ¼ã‚¿å„ªå
    294 ˆåº¦ã®æœ€
    295                                                    å¤§å€¤ */
    296         void    *pdqmb;         /* 優å
    297 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†é ˜åŸŸã®å
    298 ˆé ­ç•ªåœ° */
     247        ATR             pdqatr;         /* 優先度データキュー属性 */
     248        uint_t  pdqcnt;         /* 優先度データキュー管理領域に格納できるデータ数 */
     249        PRI             maxdpri;        /* 優先度データキューに送信できるデータ優先度の最
     250                                                   大値 */
     251        void    *pdqmb;         /* 優先度データキュー管理領域の先頭番地 */
    299252} T_CPDQ;
    300253
    301254typedef struct t_rpdq {
    302         ID              stskid;         /* 優å
    303 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®é€ä¿¡å¾
    304 ã¡è¡Œåˆ—のå
    305 ˆé ­ã®ã‚¿ã‚¹ã‚¯
    306                                                    ã®ID番号 */
    307         ID              rtskid;         /* 優å
    308 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®å—ä¿¡å¾
    309 ã¡è¡Œåˆ—のå
    310 ˆé ­ã®ã‚¿ã‚¹ã‚¯
    311                                                    ã®ID番号 */
    312         uint_t  spdqcnt;        /* 優å
    313 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†é ˜åŸŸã«æ ¼ç´ã•ã‚Œã¦ã„るデー
    314                                                    ã‚¿ã®æ•° */
     255        ID              stskid;         /* 優先度データキューの送信待ち行列の先頭のタスク
     256                                                   のID番号 */
     257        ID              rtskid;         /* 優先度データキューの受信待ち行列の先頭のタスク
     258                                                   のID番号 */
     259        uint_t  spdqcnt;        /* 優先度データキュー管理領域に格納されているデー
     260                                                   タの数 */
    315261} T_RPDQ;
    316262
    317263typedef struct t_cmtx {
    318         ATR             mtxatr;         /* ミューテックス属性 */
    319         PRI             ceilpri;        /* ミューテックスの上限優å
    320 ˆåº¦ */
     264        ATR             mtxatr;         /* ミューテックス属性 */
     265        PRI             ceilpri;        /* ミューテックスの上限優先度 */
    321266} T_CMTX;
    322267
    323268typedef struct t_rmtx {
    324         ID              htskid;         /* ミューテックスをロックしているタスクのID番号 */
    325         ID              wtskid;         /* ミューテックスのå¾
    326 ã¡è¡Œåˆ—のå
    327 ˆé ­ã®ã‚¿ã‚¹ã‚¯ã®ID番号 */
     269        ID              htskid;         /* ミューテックスをロックしているタスクのID番号 */
     270        ID              wtskid;         /* ミューテックスの待ち行列の先頭のタスクのID番号 */
    328271} T_RMTX;
    329272
    330273typedef struct t_cmpf {
    331         ATR             mpfatr;         /* 固定長メモリプール属性 */
    332         uint_t  blkcnt;         /* 獲得できる固定長メモリブロックの数 */
    333         uint_t  blksz;          /* 固定長メモリブロックのサイズ */
    334         MPF_T   *mpf;           /* 固定長メモリプール領域のå
    335 ˆé ­ç•ªåœ° */
    336         void    *mpfmb;         /* 固定長メモリプール管理領域のå
    337 ˆé ­ç•ªåœ° */
     274        ATR             mpfatr;         /* 固定長メモリプール属性 */
     275        uint_t  blkcnt;         /* 獲得できる固定長メモリブロックの数 */
     276        uint_t  blksz;          /* 固定長メモリブロックのサイズ */
     277        MPF_T   *mpf;           /* 固定長メモリプール領域の先頭番地 */
     278        void    *mpfmb;         /* 固定長メモリプール管理領域の先頭番地 */
    338279} T_CMPF;
    339280
    340281typedef struct t_rmpf {
    341         ID              wtskid;         /* 固定長メモリプールのå¾
    342 ã¡è¡Œåˆ—のå
    343 ˆé ­ã®ã‚¿ã‚¹ã‚¯ã®
    344                                                    ID番号 */
    345         uint_t  fblkcnt;        /* 固定長メモリプール領域の空きメモリ領域に割り
    346                                                    ä»˜ã‘ることができる固定長メモリブロックの数 */
     282        ID              wtskid;         /* 固定長メモリプールの待ち行列の先頭のタスクの
     283                                                   ID番号 */
     284        uint_t  fblkcnt;        /* 固定長メモリプール領域の空きメモリ領域に割り
     285                                                   付けることができる固定長メモリブロックの数 */
    347286} T_RMPF;
    348287
    349288typedef struct t_ccyc {
    350         ATR                     cycatr;         /* 周期通知属性 */
    351         T_NFYINFO       nfyinfo;        /* 周期通知の通知方法 */
    352         RELTIM          cyctim;         /* 周期通知の通知周期 */
    353         RELTIM          cycphs;         /* 周期通知の通知位相 */
     289        ATR                     cycatr;         /* 周期通知属性 */
     290        T_NFYINFO       nfyinfo;        /* 周期通知の通知方法 */
     291        RELTIM          cyctim;         /* 周期通知の通知周期 */
     292        RELTIM          cycphs;         /* 周期通知の通知位相 */
    354293} T_CCYC;
    355294
    356295typedef struct t_rcyc {
    357         STAT    cycstat;        /* 周期通知の動作状æ
    358 ‹ */
    359         RELTIM  lefttim;        /* 次回通知時刻までの相対時間 */
     296        STAT    cycstat;        /* 周期通知の動作状態 */
     297        RELTIM  lefttim;        /* 次回通知時刻までの相対時間 */
    360298} T_RCYC;
    361299
    362300typedef struct t_calm {
    363         ATR                     almatr;         /* アラーム通知属性 */
    364         T_NFYINFO       nfyinfo;        /* アラーム通知の通知方法 */
     301        ATR                     almatr;         /* アラーム通知属性 */
     302        T_NFYINFO       nfyinfo;        /* アラーム通知の通知方法 */
    365303} T_CALM;
    366304
    367305typedef struct t_ralm {
    368         STAT    almstat;        /* アラーム通知の動作状æ
    369 ‹ */
    370         RELTIM  lefttim;        /* 通知時刻までの相対時間 */
     306        STAT    almstat;        /* アラーム通知の動作状態 */
     307        RELTIM  lefttim;        /* 通知時刻までの相対時間 */
    371308} T_RALM;
    372309
    373310typedef struct t_cisr {
    374         ATR                     isratr;         /* 割込みサービスルーチン属性 */
    375         intptr_t        exinf;          /* 割込みサービスルーチンの拡張æƒ
    376 å ± */
    377         INTNO           intno;          /* 割込みサービスルーチンを登録する割込み番号 */
    378         ISR                     isr;            /* 割込みサービスルーチンのå
    379 ˆé ­ç•ªåœ° */
    380         PRI                     isrpri;         /* 割込みサービスルーチン優å
    381 ˆåº¦ */
     311        ATR                     isratr;         /* 割込みサービスルーチン属性 */
     312        intptr_t        exinf;          /* 割込みサービスルーチンの拡張情報 */
     313        INTNO           intno;          /* 割込みサービスルーチンを登録する割込み番号 */
     314        ISR                     isr;            /* 割込みサービスルーチンの先頭番地 */
     315        PRI                     isrpri;         /* 割込みサービスルーチン優先度 */
    382316} T_CISR;
    383317
    384318/*
    385  *  サービスコールの宣言
    386  */
    387 
    388 /*
    389  *  タスク管理機能
     319 *  サービスコールの宣言
     320 */
     321
     322/*
     323 *  タスク管理機能
    390324 */
    391325extern ER_UINT  acre_tsk(const T_CTSK *pk_ctsk) throw();
     
    400334
    401335/*
    402  *  タスク付属同期機能
     336 *  タスク付属同期機能
    403337 */
    404338extern ER               slp_tsk(void) throw();
     
    412346
    413347/*
    414  *  タスク終了機能
     348 *  タスク終了機能
    415349 */
    416350extern ER               ext_tsk(void) throw();
     
    422356
    423357/*
    424  *  同期・通信機能
     358 *  同期・通信機能
    425359 */
    426360extern ER_ID    acre_sem(const T_CSEM *pk_csem) throw();
     
    481415
    482416/*
    483  *  メモリプール管理機能
     417 *  メモリプール管理機能
    484418 */
    485419extern ER_ID    acre_mpf(const T_CMPF *pk_cmpf) throw();
     
    493427
    494428/*
    495  *  時間管理機能
     429 *  時間管理機能
    496430 */
    497431extern ER               set_tim(SYSTIM systim) throw();
     
    513447
    514448/*
    515  *  システム状æ
    516 ‹ç®¡ç†æ©Ÿèƒ½
     449 *  システム状態管理機能
    517450 */
    518451extern ER               rot_rdq(PRI tskpri) throw();
     
    532465
    533466/*
    534  *  割込み管理機能
     467 *  割込み管理機能
    535468 */
    536469extern ER_ID    acre_isr(const T_CISR *pk_cisr) throw();
     
    542475
    543476/*
    544  *  CPU例外管理機能
     477 *  CPU例外管理機能
    545478 */
    546479extern bool_t   xsns_dpn(void *p_excinf) throw();
     
    549482
    550483/*
    551  *  非タスクコンテキストから呼び出せるサービスコール
     484 *  非タスクコンテキストから呼び出せるサービスコール
    552485 */
    553486#define iact_tsk(tskid)                                         act_tsk(tskid)
     
    578511
    579512/*
    580  *  オブジェクト属性の定義
    581  */
    582 #define TA_ACT                  UINT_C(0x01)    /* タスクを起動された状æ
    583 ‹ã§ç”Ÿæˆ */
    584 #define TA_NOACTQUE             UINT_C(0x02)    /* 起動要求をキューイングしない */
    585 
    586 #define TA_TPRI                 UINT_C(0x01)    /* タスクのå¾
    587 ã¡è¡Œåˆ—を優å
    588 ˆåº¦é †ã« */
    589 
    590 #define TA_WMUL                 UINT_C(0x02)    /* 複数のå¾
    591 ã¡ã‚¿ã‚¹ã‚¯ */
    592 #define TA_CLR                  UINT_C(0x04)    /* イベントフラグのクリア指定 */
    593 
    594 #define TA_CEILING              UINT_C(0x03)    /* 優å
    595 ˆåº¦ä¸Šé™ãƒ—ロトコル */
    596 
    597 #define TA_STA                  UINT_C(0x02)    /* 周期通知を動作状æ
    598 ‹ã§ç”Ÿæˆ */
    599 
    600 #define TA_NONKERNEL    UINT_C(0x02)    /* カーネル管理外の割込み */
    601 
    602 #define TA_ENAINT               UINT_C(0x01)    /* 割込み要求禁止フラグをクリア */
    603 #define TA_EDGE                 UINT_C(0x02)    /* エッジトリガ */
    604 
    605 /*
    606  *  サービスコールの動作モードの定義
    607  */
    608 #define TWF_ORW                 UINT_C(0x01)    /* イベントフラグのORå¾
    609 ã¡ */
    610 #define TWF_ANDW                UINT_C(0x02)    /* イベントフラグのANDå¾
    611 ã¡ */
    612 
    613 /*
    614  *  通知処理モードの定義
    615  */
    616 #define TNFY_HANDLER    UINT_C(0x00)            /* タイムイベントハンドラの呼出し */
    617 #define TNFY_SETVAR             UINT_C(0x01)            /* 変数の設定 */
    618 #define TNFY_INCVAR             UINT_C(0x02)            /* 変数のインクリメント */
    619 #define TNFY_ACTTSK             UINT_C(0x03)            /* タスクの起動 */
    620 #define TNFY_WUPTSK             UINT_C(0x04)            /* タスクの起床 */
    621 #define TNFY_SIGSEM             UINT_C(0x05)            /* セマフォの資源の返却 */
    622 #define TNFY_SETFLG             UINT_C(0x06)            /* イベントフラグのセット */
    623 #define TNFY_SNDDTQ             UINT_C(0x07)            /* データキューへの送信 */
    624 
    625 #define TENFY_SETVAR    UINT_C(0x10)            /* 変数の設定 */
    626 #define TENFY_INCVAR    UINT_C(0x20)            /* 変数のインクリメント */
    627 #define TENFY_ACTTSK    UINT_C(0x30)            /* タスクの起動 */
    628 #define TENFY_WUPTSK    UINT_C(0x40)            /* タスクの起床 */
    629 #define TENFY_SIGSEM    UINT_C(0x50)            /* セマフォの返却 */
    630 #define TENFY_SETFLG    UINT_C(0x60)            /* イベントフラグのセット */
    631 #define TENFY_SNDDTQ    UINT_C(0x70)            /* データキューへの送信 */
    632 
    633 /*
    634  *  オブジェクトの状æ
    635 ‹ã®å®šç¾©
    636  */
    637 #define TTS_RUN                 UINT_C(0x01)    /* 実行状æ
    638 ‹ */
    639 #define TTS_RDY                 UINT_C(0x02)    /* 実行可能状æ
    640 ‹ */
    641 #define TTS_WAI                 UINT_C(0x04)    /* å¾
    642 ã¡çŠ¶æ
    643 ‹ */
    644 #define TTS_SUS                 UINT_C(0x08)    /* 強制å¾
    645 ã¡çŠ¶æ
    646 ‹ */
    647 #define TTS_WAS                 UINT_C(0x0c)    /* 二重å¾
    648 ã¡çŠ¶æ
    649 ‹ */
    650 #define TTS_DMT                 UINT_C(0x10)    /* 休止状æ
    651 ‹ */
    652 
    653 #define TTW_SLP                 UINT_C(0x0001)  /* 起床å¾
    654 ã¡ */
    655 #define TTW_DLY                 UINT_C(0x0002)  /* 時間経過å¾
    656 ã¡ */
    657 #define TTW_SEM                 UINT_C(0x0004)  /* セマフォの資源獲得å¾
    658 ã¡ */
    659 #define TTW_FLG                 UINT_C(0x0008)  /* イベントフラグå¾
    660 ã¡ */
    661 #define TTW_SDTQ                UINT_C(0x0010)  /* データキューへの送信å¾
    662 ã¡ */
    663 #define TTW_RDTQ                UINT_C(0x0020)  /* データキューからの受信å¾
    664 ã¡ */
    665 #define TTW_SPDQ                UINT_C(0x0100)  /* 優å
    666 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®é€ä¿¡å¾
    667 ã¡ */
    668 #define TTW_RPDQ                UINT_C(0x0200)  /* 優å
    669 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã‹ã‚‰ã®å—ä¿¡å¾
    670 ã¡ */
    671 #define TTW_MTX                 UINT_C(0x0080)  /* ミューテックスのロックå¾
    672 ã¡çŠ¶æ
    673 ‹ */
    674 #define TTW_MPF                 UINT_C(0x2000)  /* 固定長メモリブロックの獲得å¾
    675 ã¡ */
    676 
    677 #define TCYC_STP                UINT_C(0x01)    /* 周期通知が動作していない */
    678 #define TCYC_STA                UINT_C(0x02)    /* 周期通知が動作している */
    679 
    680 #define TALM_STP                UINT_C(0x01)    /* アラーム通知が動作していない */
    681 #define TALM_STA                UINT_C(0x02)    /* アラーム通知が動作している */
    682 
    683 /*
    684  *  その他の定数の定義
    685  */
    686 #define TSK_SELF                0                       /* 自タスク指定 */
    687 #define TSK_NONE                0                       /* 該当するタスクがない */
    688 
    689 #define TPRI_SELF               0                       /* 自タスクのベース優å
    690 ˆåº¦ */
    691 #define TPRI_INI                0                       /* タスクの起動時優å
    692 ˆåº¦ */
    693 
    694 #define TIPM_ENAALL             0                       /* 割込み優å
    695 ˆåº¦ãƒžã‚¹ã‚¯å
    696 ¨è§£é™¤ */
    697 
    698 /*
    699  *  構成定数とマクロ
    700  */
    701 
    702 /*
    703  *  優å
    704 ˆåº¦ã®ç¯„囲
    705  */
    706 #define TMIN_TPRI               1                       /* タスク優å
    707 ˆåº¦ã®æœ€å°å€¤ï¼ˆæœ€é«˜å€¤ï¼‰*/
    708 #define TMAX_TPRI               16                      /* タスク優å
    709 ˆåº¦ã®æœ€å¤§å€¤ï¼ˆæœ€ä½Žå€¤ï¼‰*/
    710 #define TMIN_DPRI               1                       /* データ優å
    711 ˆåº¦ã®æœ€å°å€¤ï¼ˆæœ€é«˜å€¤ï¼‰*/
    712 #define TMAX_DPRI               16                      /* データ優å
    713 ˆåº¦ã®æœ€å¤§å€¤ï¼ˆæœ€ä½Žå€¤ï¼‰*/
    714 #define TMIN_ISRPRI             1                       /* 割込みサービスルーチン優å
    715 ˆåº¦ã®æœ€å°å€¤ */
    716 #define TMAX_ISRPRI             16                      /* 割込みサービスルーチン優å
    717 ˆåº¦ã®æœ€å¤§å€¤ */
    718 
    719 /*
    720  *  バージョンæƒ
    721 å ±
    722  */
    723 #define TKERNEL_MAKER   UINT_C(0x0118)  /* カーネルのメーカーコード */
    724 #define TKERNEL_PRID    UINT_C(0x0007)  /* カーネルの識別番号 */
    725 #define TKERNEL_SPVER   UINT_C(0xf631)  /* カーネル仕様のバージョン番号 */
    726 #define TKERNEL_PRVER   UINT_C(0x3010)  /* カーネルのバージョン番号 */
    727 
    728 /*
    729  *  キューイング回数の最大値
    730  */
    731 #define TMAX_ACTCNT             UINT_C(1)               /* 起動要求キューイング数の最大値 */
    732 #define TMAX_WUPCNT             UINT_C(1)               /* 起床要求キューイング数の最大値 */
    733 
    734 /*
    735  *  ビットパターンのビット数
    736  */
    737 #ifndef TBIT_FLGPTN                                     /* イベントフラグのビット数 */
     513 *  オブジェクト属性の定義
     514 */
     515#define TA_ACT                  UINT_C(0x01)    /* タスクを起動された状態で生成 */
     516#define TA_NOACTQUE             UINT_C(0x02)    /* 起動要求をキューイングしない */
     517
     518#define TA_TPRI                 UINT_C(0x01)    /* タスクの待ち行列を優先度順に */
     519
     520#define TA_WMUL                 UINT_C(0x02)    /* 複数の待ちタスク */
     521#define TA_CLR                  UINT_C(0x04)    /* イベントフラグのクリア指定 */
     522
     523#define TA_CEILING              UINT_C(0x03)    /* 優先度上限プロトコル */
     524
     525#define TA_STA                  UINT_C(0x02)    /* 周期通知を動作状態で生成 */
     526
     527#define TA_NONKERNEL    UINT_C(0x02)    /* カーネル管理外の割込み */
     528
     529#define TA_ENAINT               UINT_C(0x01)    /* 割込み要求禁止フラグをクリア */
     530#define TA_EDGE                 UINT_C(0x02)    /* エッジトリガ */
     531
     532/*
     533 *  サービスコールの動作モードの定義
     534 */
     535#define TWF_ORW                 UINT_C(0x01)    /* イベントフラグのOR待ち */
     536#define TWF_ANDW                UINT_C(0x02)    /* イベントフラグのAND待ち */
     537
     538/*
     539 *  通知処理モードの定義
     540 */
     541#define TNFY_HANDLER    UINT_C(0x00)            /* タイムイベントハンドラの呼出し */
     542#define TNFY_SETVAR             UINT_C(0x01)            /* 変数の設定 */
     543#define TNFY_INCVAR             UINT_C(0x02)            /* 変数のインクリメント */
     544#define TNFY_ACTTSK             UINT_C(0x03)            /* タスクの起動 */
     545#define TNFY_WUPTSK             UINT_C(0x04)            /* タスクの起床 */
     546#define TNFY_SIGSEM             UINT_C(0x05)            /* セマフォの資源の返却 */
     547#define TNFY_SETFLG             UINT_C(0x06)            /* イベントフラグのセット */
     548#define TNFY_SNDDTQ             UINT_C(0x07)            /* データキューへの送信 */
     549
     550#define TENFY_SETVAR    UINT_C(0x10)            /* 変数の設定 */
     551#define TENFY_INCVAR    UINT_C(0x20)            /* 変数のインクリメント */
     552#define TENFY_ACTTSK    UINT_C(0x30)            /* タスクの起動 */
     553#define TENFY_WUPTSK    UINT_C(0x40)            /* タスクの起床 */
     554#define TENFY_SIGSEM    UINT_C(0x50)            /* セマフォの返却 */
     555#define TENFY_SETFLG    UINT_C(0x60)            /* イベントフラグのセット */
     556#define TENFY_SNDDTQ    UINT_C(0x70)            /* データキューへの送信 */
     557
     558/*
     559 *  オブジェクトの状態の定義
     560 */
     561#define TTS_RUN                 UINT_C(0x01)    /* 実行状態 */
     562#define TTS_RDY                 UINT_C(0x02)    /* 実行可能状態 */
     563#define TTS_WAI                 UINT_C(0x04)    /* 待ち状態 */
     564#define TTS_SUS                 UINT_C(0x08)    /* 強制待ち状態 */
     565#define TTS_WAS                 UINT_C(0x0c)    /* 二重待ち状態 */
     566#define TTS_DMT                 UINT_C(0x10)    /* 休止状態 */
     567
     568#define TTW_SLP                 UINT_C(0x0001)  /* 起床待ち */
     569#define TTW_DLY                 UINT_C(0x0002)  /* 時間経過待ち */
     570#define TTW_SEM                 UINT_C(0x0004)  /* セマフォの資源獲得待ち */
     571#define TTW_FLG                 UINT_C(0x0008)  /* イベントフラグ待ち */
     572#define TTW_SDTQ                UINT_C(0x0010)  /* データキューへの送信待ち */
     573#define TTW_RDTQ                UINT_C(0x0020)  /* データキューからの受信待ち */
     574#define TTW_SPDQ                UINT_C(0x0100)  /* 優先度データキューへの送信待ち */
     575#define TTW_RPDQ                UINT_C(0x0200)  /* 優先度データキューからの受信待ち */
     576#define TTW_MTX                 UINT_C(0x0080)  /* ミューテックスのロック待ち状態 */
     577#define TTW_MPF                 UINT_C(0x2000)  /* 固定長メモリブロックの獲得待ち */
     578
     579#define TCYC_STP                UINT_C(0x01)    /* 周期通知が動作していない */
     580#define TCYC_STA                UINT_C(0x02)    /* 周期通知が動作している */
     581
     582#define TALM_STP                UINT_C(0x01)    /* アラーム通知が動作していない */
     583#define TALM_STA                UINT_C(0x02)    /* アラーム通知が動作している */
     584
     585/*
     586 *  その他の定数の定義
     587 */
     588#define TSK_SELF                0                       /* 自タスク指定 */
     589#define TSK_NONE                0                       /* 該当するタスクがない */
     590
     591#define TPRI_SELF               0                       /* 自タスクのベース優先度 */
     592#define TPRI_INI                0                       /* タスクの起動時優先度 */
     593
     594#define TIPM_ENAALL             0                       /* 割込み優先度マスク全解除 */
     595
     596/*
     597 *  構成定数とマクロ
     598 */
     599
     600/*
     601 *  優先度の範囲
     602 */
     603#define TMIN_TPRI               1                       /* タスク優先度の最小値(最高値)*/
     604#define TMAX_TPRI               16                      /* タスク優先度の最大値(最低値)*/
     605#define TMIN_DPRI               1                       /* データ優先度の最小値(最高値)*/
     606#define TMAX_DPRI               16                      /* データ優先度の最大値(最低値)*/
     607#define TMIN_ISRPRI             1                       /* 割込みサービスルーチン優先度の最小値 */
     608#define TMAX_ISRPRI             16                      /* 割込みサービスルーチン優先度の最大値 */
     609
     610/*
     611 *  バージョン情報
     612 */
     613#define TKERNEL_MAKER   UINT_C(0x0118)  /* カーネルのメーカーコード */
     614#define TKERNEL_PRID    UINT_C(0x0007)  /* カーネルの識別番号 */
     615#define TKERNEL_SPVER   UINT_C(0xf631)  /* カーネル仕様のバージョン番号 */
     616#define TKERNEL_PRVER   UINT_C(0x3010)  /* カーネルのバージョン番号 */
     617
     618/*
     619 *  キューイング回数の最大値
     620 */
     621#define TMAX_ACTCNT             UINT_C(1)               /* 起動要求キューイング数の最大値 */
     622#define TMAX_WUPCNT             UINT_C(1)               /* 起床要求キューイング数の最大値 */
     623
     624/*
     625 *  ビットパターンのビット数
     626 */
     627#ifndef TBIT_FLGPTN                                     /* イベントフラグのビット数 */
    738628#define TBIT_FLGPTN             (sizeof(FLGPTN) * CHAR_BIT)
    739629#endif /* TBIT_FLGPTN */
    740630
    741631/*
    742  *  システム時刻の調整できる範囲(単位:μ秒)
    743  */
    744 #define TMIN_ADJTIM             -1000000                /* システム時刻の最小調整時間 */
    745 #define TMAX_ADJTIM             1000000                 /* システム時刻の最大調整時間 */
    746 
    747 /*
    748  *  メモリ領域確保のためのマクロ
     632 *  システム時刻の調整できる範囲(単位:μ秒)
     633 */
     634#define TMIN_ADJTIM             -1000000                /* システム時刻の最小調整時間 */
     635#define TMAX_ADJTIM             1000000                 /* システム時刻の最大調整時間 */
     636
     637/*
     638 *  メモリ領域確保のためのマクロ
    749639 *
    750  *  以下のTOPPERS_COUNT_SZとTOPPERS_ROUND_SZの定義は,unitが2の巾乗であ
    751  *  ることを仮定している.
     640 *  以下のTOPPERS_COUNT_SZとTOPPERS_ROUND_SZの定義は,unitが2の巾乗であ
     641 *  ることを仮定している.
    752642 */
    753643#ifndef TOPPERS_COUNT_SZ
     
    776666
    777667/*
    778  *  その他の構成定数
    779  */
    780 #define TMAX_MAXSEM             UINT_MAX        /* セマフォの最大資源数の最大値 */
     668 *  その他の構成定数
     669 */
     670#define TMAX_MAXSEM             UINT_MAX        /* セマフォの最大資源数の最大値 */
    781671
    782672#ifdef __cplusplus
Note: See TracChangeset for help on using the changeset viewer.