Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/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
    r388 r389  
    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
    9982#ifdef TOPPERS_TARGET_SUPPORT_CLR_INT
    100 #define TOPPERS_SUPPORT_CLR_INT                 /* clr_intがサポートされている */
     83#define TOPPERS_SUPPORT_CLR_INT                 /* clr_intがサポートされている */
    10184#endif /* TOPPERS_TARGET_SUPPORT_CLR_INT */
    10285
    10386#ifdef TOPPERS_TARGET_SUPPORT_RAS_INT
    104 #define TOPPERS_SUPPORT_RAS_INT                 /* ras_intがサポートされている */
     87#define TOPPERS_SUPPORT_RAS_INT                 /* ras_intがサポートされている */
    10588#endif /* TOPPERS_TARGET_SUPPORT_RAS_INT */
    10689
    10790#ifdef TOPPERS_TARGET_SUPPORT_PRB_INT
    108 #define TOPPERS_SUPPORT_PRB_INT                 /* prb_intがサポートされている */
     91#define TOPPERS_SUPPORT_PRB_INT                 /* prb_intがサポートされている */
    10992#endif /* TOPPERS_TARGET_SUPPORT_PRB_INT */
    11093
    111 #define TOPPERS_SUPPORT_DYNAMIC_CRE             /* 動的生成機能拡張 */
     94#define TOPPERS_SUPPORT_DYNAMIC_CRE             /* 動的生成機能拡張 */
    11295
    11396#ifndef TOPPERS_MACRO_ONLY
    11497
    11598/*
    116  *  データ型の定義
    117  */
    118 
    119 /*
    120  *  ビットパターンやオブジェクト番号の型定義
    121  */
    122 typedef uint_t          FLGPTN;         /* イベントフラグのビットパターン */
    123 typedef uint_t          INTNO;          /* 割込み番号 */
    124 typedef uint_t          INHNO;          /* 割込みハンドラ番号 */
    125 typedef uint_t          EXCNO;          /* CPU例外ハンドラ番号 */
    126 
    127 /*
    128  *  処理単位の型定義
     99 *  データ型の定義
     100 */
     101
     102/*
     103 *  ビットパターンやオブジェクト番号の型定義
     104 */
     105typedef uint_t          FLGPTN;         /* イベントフラグのビットパターン */
     106typedef uint_t          INTNO;          /* 割込み番号 */
     107typedef uint_t          INHNO;          /* 割込みハンドラ番号 */
     108typedef uint_t          EXCNO;          /* CPU例外ハンドラ番号 */
     109
     110/*
     111 *  処理単位の型定義
    129112 */
    130113typedef void    (*TASK)(intptr_t exinf);
     
    137120
    138121/*
    139  *  メモリ領域確保のための型定義
     122 *  メモリ領域確保のための型定義
    140123 */
    141124#ifndef TOPPERS_STK_T
    142125#define TOPPERS_STK_T   intptr_t
    143126#endif /* TOPPERS_STK_T */
    144 typedef TOPPERS_STK_T   STK_T;  /* スタック領域を確保するための型 */
     127typedef TOPPERS_STK_T   STK_T;  /* スタック領域を確保するための型 */
    145128
    146129#ifndef TOPPERS_MPF_T
    147130#define TOPPERS_MPF_T   intptr_t
    148131#endif /* TOPPERS_MPF_T */
    149 typedef TOPPERS_MPF_T   MPF_T;  /* 固定長メモリプール領域を確保するための型 */
    150 
    151 /*
    152  *  タイムイベントの通知方法のパケット形式の定義
    153  */
    154 typedef struct {
    155         intptr_t        exinf;          /* タイムイベントハンドラの拡張æƒ
    156 å ± */
    157         TMEHDR          tmehdr;         /* タイムイベントハンドラのå
    158 ˆé ­ç•ªåœ° */
     132typedef TOPPERS_MPF_T   MPF_T;  /* 固定長メモリプール領域を確保するための型 */
     133
     134/*
     135 *  タイムイベントの通知方法のパケット形式の定義
     136 */
     137typedef struct {
     138        intptr_t        exinf;          /* タイムイベントハンドラの拡張情報 */
     139        TMEHDR          tmehdr;         /* タイムイベントハンドラの先頭番地 */
    159140} T_NFY_HDR;
    160141
    161142typedef struct {
    162         intptr_t        *p_var;         /* 変数の番地 */
    163         intptr_t        value;          /* 設定する値 */
     143        intptr_t        *p_var;         /* 変数の番地 */
     144        intptr_t        value;          /* 設定する値 */
    164145} T_NFY_VAR;
    165146
    166147typedef struct {
    167         intptr_t        *p_var;         /* 変数の番地 */
     148        intptr_t        *p_var;         /* 変数の番地 */
    168149} T_NFY_IVAR;
    169150
    170151typedef struct {
    171         ID                      tskid;          /* タスクID */
     152        ID                      tskid;          /* タスクID */
    172153} T_NFY_TSK;
    173154
    174155typedef struct {
    175         ID                      semid;          /* セマフォID */
     156        ID                      semid;          /* セマフォID */
    176157} T_NFY_SEM;
    177158
    178159typedef struct {
    179         ID                      flgid;          /* イベントフラグID */
    180         FLGPTN          flgptn;         /* セットするビットパターン */
     160        ID                      flgid;          /* イベントフラグID */
     161        FLGPTN          flgptn;         /* セットするビットパターン */
    181162} T_NFY_FLG;
    182163
    183164typedef struct {
    184         ID                      dtqid;          /* データキューID */
    185         intptr_t        data;           /* 送信する値 */
     165        ID                      dtqid;          /* データキューID */
     166        intptr_t        data;           /* 送信する値 */
    186167} T_NFY_DTQ;
    187168
    188169typedef struct {
    189         intptr_t        *p_var;         /* 変数の番地 */
     170        intptr_t        *p_var;         /* 変数の番地 */
    190171} T_ENFY_VAR;
    191172
    192173typedef struct {
    193         ID                      dtqid;          /* データキューID */
     174        ID                      dtqid;          /* データキューID */
    194175} T_ENFY_DTQ;
    195176
    196177typedef struct {
    197         MODE    nfymode;                        /* 通知処理モード */
    198         union {                                         /* タイムイベントの通知に関する付随æƒ
    199 å ± */
     178        MODE    nfymode;                        /* 通知処理モード */
     179        union {                                         /* タイムイベントの通知に関する付随情報 */
    200180                T_NFY_HDR       handler;
    201181                T_NFY_VAR       setvar;         
     
    207187                T_NFY_DTQ       snddtq;
    208188        } nfy;
    209         union {                                         /* エラーの通知に関する付随æƒ
    210 å ± */
     189        union {                                         /* エラーの通知に関する付随情報 */
    211190                T_ENFY_VAR      setvar;
    212191                T_NFY_IVAR      incvar;         
     
    220199
    221200/*
    222  *  パケット形式の定義
     201 *  パケット形式の定義
    223202 */
    224203typedef struct t_ctsk {
    225         ATR                     tskatr;         /* タスク属性 */
    226         intptr_t        exinf;          /* タスクの拡張æƒ
    227 å ± */
    228         TASK            task;           /* タスクのメインルーチンのå
    229 ˆé ­ç•ªåœ° */
    230         PRI                     itskpri;        /* タスクの起動時優å
    231 ˆåº¦ */
    232         size_t          stksz;          /* タスクのスタック領域のサイズ */
    233         STK_T           *stk;           /* タスクのスタック領域のå
    234 ˆé ­ç•ªåœ° */
     204        ATR                     tskatr;         /* タスク属性 */
     205        intptr_t        exinf;          /* タスクの拡張情報 */
     206        TASK            task;           /* タスクのメインルーチンの先頭番地 */
     207        PRI                     itskpri;        /* タスクの起動時優先度 */
     208        size_t          stksz;          /* タスクのスタック領域のサイズ */
     209        STK_T           *stk;           /* タスクのスタック領域の先頭番地 */
    235210} T_CTSK;
    236211
    237212typedef struct t_rtsk {
    238         STAT    tskstat;        /* タスク状æ
    239 ‹ */
    240         PRI             tskpri;         /* タスクの現在優å
    241 ˆåº¦ */
    242         PRI             tskbpri;        /* タスクのベース優å
    243 ˆåº¦ */
    244         STAT    tskwait;        /* å¾
    245 ã¡è¦å›  */
    246         ID              wobjid;         /* å¾
    247 ã¡å¯¾è±¡ã®ã‚ªãƒ–ジェクトのID */
    248         TMO             lefttmo;        /* タイムアウトするまでの時間 */
    249         uint_t  actcnt;         /* 起動要求キューイング数 */
    250         uint_t  wupcnt;         /* 起床要求キューイング数 */
    251         bool_t  raster;         /* タスク終了要求状æ
    252 ‹ */
    253         bool_t  dister;         /* タスク終了禁止状æ
    254 ‹ */
     213        STAT    tskstat;        /* タスク状態 */
     214        PRI             tskpri;         /* タスクの現在優先度 */
     215        PRI             tskbpri;        /* タスクのベース優先度 */
     216        STAT    tskwait;        /* 待ち要因 */
     217        ID              wobjid;         /* 待ち対象のオブジェクトのID */
     218        TMO             lefttmo;        /* タイムアウトするまでの時間 */
     219        uint_t  actcnt;         /* 起動要求キューイング数 */
     220        uint_t  wupcnt;         /* 起床要求キューイング数 */
     221        bool_t  raster;         /* タスク終了要求状態 */
     222        bool_t  dister;         /* タスク終了禁止状態 */
    255223} T_RTSK;
    256224
    257225typedef struct t_csem {
    258         ATR             sematr;         /* セマフォ属性 */
    259         uint_t  isemcnt;        /* セマフォの初期資源数 */
    260         uint_t  maxsem;         /* セマフォの最大資源数 */
     226        ATR             sematr;         /* セマフォ属性 */
     227        uint_t  isemcnt;        /* セマフォの初期資源数 */
     228        uint_t  maxsem;         /* セマフォの最大資源数 */
    261229} T_CSEM;
    262230
    263231typedef struct t_rsem {
    264         ID              wtskid;         /* セマフォのå¾
    265 ã¡è¡Œåˆ—のå
    266 ˆé ­ã®ã‚¿ã‚¹ã‚¯ã®ID番号 */
    267         uint_t  semcnt;         /* セマフォの現在の資源数 */
     232        ID              wtskid;         /* セマフォの待ち行列の先頭のタスクのID番号 */
     233        uint_t  semcnt;         /* セマフォの現在の資源数 */
    268234} T_RSEM;
    269235
    270236typedef struct t_cflg {
    271         ATR             flgatr;         /* イベントフラグ属性 */
    272         FLGPTN  iflgptn;        /* イベントフラグの初期ビットパターン */
     237        ATR             flgatr;         /* イベントフラグ属性 */
     238        FLGPTN  iflgptn;        /* イベントフラグの初期ビットパターン */
    273239} T_CFLG;
    274240
    275241typedef struct t_rflg {
    276         ID              wtskid;         /* イベントフラグのå¾
    277 ã¡è¡Œåˆ—のå
    278 ˆé ­ã®ã‚¿ã‚¹ã‚¯ã®ID番号 */
    279         FLGPTN  flgptn;         /* イベントフラグの現在のビットパターン */
     242        ID              wtskid;         /* イベントフラグの待ち行列の先頭のタスクのID番号 */
     243        FLGPTN  flgptn;         /* イベントフラグの現在のビットパターン */
    280244} T_RFLG;
    281245
    282246typedef struct t_cdtq {
    283         ATR             dtqatr;         /* データキュー属性 */
    284         uint_t  dtqcnt;         /* データキュー管理領域に格納できるデータ数 */
    285         void    *dtqmb;         /* データキュー管理領域のå
    286 ˆé ­ç•ªåœ° */
     247        ATR             dtqatr;         /* データキュー属性 */
     248        uint_t  dtqcnt;         /* データキュー管理領域に格納できるデータ数 */
     249        void    *dtqmb;         /* データキュー管理領域の先頭番地 */
    287250} T_CDTQ;
    288251
    289252typedef struct t_rdtq {
    290         ID              stskid;         /* データキューの送信å¾
    291 ã¡è¡Œåˆ—のå
    292 ˆé ­ã®ã‚¿ã‚¹ã‚¯ã®ID番号 */
    293         ID              rtskid;         /* データキューの受信å¾
    294 ã¡è¡Œåˆ—のå
    295 ˆé ­ã®ã‚¿ã‚¹ã‚¯ã®ID番号 */
    296         uint_t  sdtqcnt;        /* データキュー管理領域に格納されているデータの数 */
     253        ID              stskid;         /* データキューの送信待ち行列の先頭のタスクのID番号 */
     254        ID              rtskid;         /* データキューの受信待ち行列の先頭のタスクのID番号 */
     255        uint_t  sdtqcnt;        /* データキュー管理領域に格納されているデータの数 */
    297256} T_RDTQ;
    298257
    299258typedef struct t_cpdq {
    300         ATR             pdqatr;         /* 優å
    301 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼å±žæ€§ */
    302         uint_t  pdqcnt;         /* 優å
    303 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†é ˜åŸŸã«æ ¼ç´ã§ãã‚‹ãƒ‡ãƒ¼ã‚¿æ•° */
    304         PRI             maxdpri;        /* 優å
    305 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã«é€ä¿¡ã§ãã‚‹ãƒ‡ãƒ¼ã‚¿å„ªå
    306 ˆåº¦ã®æœ€
    307                                                    å¤§å€¤ */
    308         void    *pdqmb;         /* 優å
    309 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†é ˜åŸŸã®å
    310 ˆé ­ç•ªåœ° */
     259        ATR             pdqatr;         /* 優先度データキュー属性 */
     260        uint_t  pdqcnt;         /* 優先度データキュー管理領域に格納できるデータ数 */
     261        PRI             maxdpri;        /* 優先度データキューに送信できるデータ優先度の最
     262                                                   大値 */
     263        void    *pdqmb;         /* 優先度データキュー管理領域の先頭番地 */
    311264} T_CPDQ;
    312265
    313266typedef struct t_rpdq {
    314         ID              stskid;         /* 優å
    315 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®é€ä¿¡å¾
    316 ã¡è¡Œåˆ—のå
    317 ˆé ­ã®ã‚¿ã‚¹ã‚¯
    318                                                    ã®ID番号 */
    319         ID              rtskid;         /* 優å
    320 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®å—ä¿¡å¾
    321 ã¡è¡Œåˆ—のå
    322 ˆé ­ã®ã‚¿ã‚¹ã‚¯
    323                                                    ã®ID番号 */
    324         uint_t  spdqcnt;        /* 優å
    325 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†é ˜åŸŸã«æ ¼ç´ã•ã‚Œã¦ã„るデー
    326                                                    ã‚¿ã®æ•° */
     267        ID              stskid;         /* 優先度データキューの送信待ち行列の先頭のタスク
     268                                                   のID番号 */
     269        ID              rtskid;         /* 優先度データキューの受信待ち行列の先頭のタスク
     270                                                   のID番号 */
     271        uint_t  spdqcnt;        /* 優先度データキュー管理領域に格納されているデー
     272                                                   タの数 */
    327273} T_RPDQ;
    328274
    329275typedef struct t_cmtx {
    330         ATR             mtxatr;         /* ミューテックス属性 */
    331         PRI             ceilpri;        /* ミューテックスの上限優å
    332 ˆåº¦ */
     276        ATR             mtxatr;         /* ミューテックス属性 */
     277        PRI             ceilpri;        /* ミューテックスの上限優先度 */
    333278} T_CMTX;
    334279
    335280typedef struct t_rmtx {
    336         ID              htskid;         /* ミューテックスをロックしているタスクのID番号 */
    337         ID              wtskid;         /* ミューテックスのå¾
    338 ã¡è¡Œåˆ—のå
    339 ˆé ­ã®ã‚¿ã‚¹ã‚¯ã®ID番号 */
     281        ID              htskid;         /* ミューテックスをロックしているタスクのID番号 */
     282        ID              wtskid;         /* ミューテックスの待ち行列の先頭のタスクのID番号 */
    340283} T_RMTX;
    341284
    342285typedef struct t_cmpf {
    343         ATR             mpfatr;         /* 固定長メモリプール属性 */
    344         uint_t  blkcnt;         /* 獲得できる固定長メモリブロックの数 */
    345         uint_t  blksz;          /* 固定長メモリブロックのサイズ */
    346         MPF_T   *mpf;           /* 固定長メモリプール領域のå
    347 ˆé ­ç•ªåœ° */
    348         void    *mpfmb;         /* 固定長メモリプール管理領域のå
    349 ˆé ­ç•ªåœ° */
     286        ATR             mpfatr;         /* 固定長メモリプール属性 */
     287        uint_t  blkcnt;         /* 獲得できる固定長メモリブロックの数 */
     288        uint_t  blksz;          /* 固定長メモリブロックのサイズ */
     289        MPF_T   *mpf;           /* 固定長メモリプール領域の先頭番地 */
     290        void    *mpfmb;         /* 固定長メモリプール管理領域の先頭番地 */
    350291} T_CMPF;
    351292
    352293typedef struct t_rmpf {
    353         ID              wtskid;         /* 固定長メモリプールのå¾
    354 ã¡è¡Œåˆ—のå
    355 ˆé ­ã®ã‚¿ã‚¹ã‚¯ã®
    356                                                    ID番号 */
    357         uint_t  fblkcnt;        /* 固定長メモリプール領域の空きメモリ領域に割り
    358                                                    ä»˜ã‘ることができる固定長メモリブロックの数 */
     294        ID              wtskid;         /* 固定長メモリプールの待ち行列の先頭のタスクの
     295                                                   ID番号 */
     296        uint_t  fblkcnt;        /* 固定長メモリプール領域の空きメモリ領域に割り
     297                                                   付けることができる固定長メモリブロックの数 */
    359298} T_RMPF;
    360299
    361300typedef struct t_ccyc {
    362         ATR                     cycatr;         /* 周期通知属性 */
    363         T_NFYINFO       nfyinfo;        /* 周期通知の通知方法 */
    364         RELTIM          cyctim;         /* 周期通知の通知周期 */
    365         RELTIM          cycphs;         /* 周期通知の通知位相 */
     301        ATR                     cycatr;         /* 周期通知属性 */
     302        T_NFYINFO       nfyinfo;        /* 周期通知の通知方法 */
     303        RELTIM          cyctim;         /* 周期通知の通知周期 */
     304        RELTIM          cycphs;         /* 周期通知の通知位相 */
    366305} T_CCYC;
    367306
    368307typedef struct t_rcyc {
    369         STAT    cycstat;        /* 周期通知の動作状æ
    370 ‹ */
    371         RELTIM  lefttim;        /* 次回通知時刻までの相対時間 */
     308        STAT    cycstat;        /* 周期通知の動作状態 */
     309        RELTIM  lefttim;        /* 次回通知時刻までの相対時間 */
    372310} T_RCYC;
    373311
    374312typedef struct t_calm {
    375         ATR                     almatr;         /* アラーム通知属性 */
    376         T_NFYINFO       nfyinfo;        /* アラーム通知の通知方法 */
     313        ATR                     almatr;         /* アラーム通知属性 */
     314        T_NFYINFO       nfyinfo;        /* アラーム通知の通知方法 */
    377315} T_CALM;
    378316
    379317typedef struct t_ralm {
    380         STAT    almstat;        /* アラーム通知の動作状æ
    381 ‹ */
    382         RELTIM  lefttim;        /* 通知時刻までの相対時間 */
     318        STAT    almstat;        /* アラーム通知の動作状態 */
     319        RELTIM  lefttim;        /* 通知時刻までの相対時間 */
    383320} T_RALM;
    384321
    385322typedef struct t_cisr {
    386         ATR                     isratr;         /* 割込みサービスルーチン属性 */
    387         intptr_t        exinf;          /* 割込みサービスルーチンの拡張æƒ
    388 å ± */
    389         INTNO           intno;          /* 割込みサービスルーチンを登録する割込み番号 */
    390         ISR                     isr;            /* 割込みサービスルーチンのå
    391 ˆé ­ç•ªåœ° */
    392         PRI                     isrpri;         /* 割込みサービスルーチン優å
    393 ˆåº¦ */
     323        ATR                     isratr;         /* 割込みサービスルーチン属性 */
     324        intptr_t        exinf;          /* 割込みサービスルーチンの拡張情報 */
     325        INTNO           intno;          /* 割込みサービスルーチンを登録する割込み番号 */
     326        ISR                     isr;            /* 割込みサービスルーチンの先頭番地 */
     327        PRI                     isrpri;         /* 割込みサービスルーチン優先度 */
    394328} T_CISR;
    395329
    396330/*
    397  *  サービスコールの宣言
    398  */
    399 
    400 /*
    401  *  タスク管理機能
     331 *  サービスコールの宣言
     332 */
     333
     334/*
     335 *  タスク管理機能
    402336 */
    403337extern ER_ID    acre_tsk(const T_CTSK *pk_ctsk) throw();
     
    412346
    413347/*
    414  *  タスク付属同期機能
     348 *  タスク付属同期機能
    415349 */
    416350extern ER               slp_tsk(void) throw();
     
    424358
    425359/*
    426  *  タスク終了機能
     360 *  タスク終了機能
    427361 */
    428362extern ER               ext_tsk(void) throw();
     
    434368
    435369/*
    436  *  同期・通信機能
     370 *  同期・通信機能
    437371 */
    438372extern ER_ID    acre_sem(const T_CSEM *pk_csem) throw();
     
    493427
    494428/*
    495  *  メモリプール管理機能
     429 *  メモリプール管理機能
    496430 */
    497431extern ER_ID    acre_mpf(const T_CMPF *pk_cmpf) throw();
     
    505439
    506440/*
    507  *  時間管理機能
     441 *  時間管理機能
    508442 */
    509443extern ER               set_tim(SYSTIM systim) throw();
     
    525459
    526460/*
    527  *  システム状æ
    528 ‹ç®¡ç†æ©Ÿèƒ½
     461 *  システム状態管理機能
    529462 */
    530463extern ER               rot_rdq(PRI tskpri) throw();
     
    544477
    545478/*
    546  *  割込み管理機能
     479 *  割込み管理機能
    547480 */
    548481extern ER_ID    acre_isr(const T_CISR *pk_cisr) throw();
     
    557490
    558491/*
    559  *  CPU例外管理機能
     492 *  CPU例外管理機能
    560493 */
    561494extern bool_t   xsns_dpn(void *p_excinf) throw();
     
    564497
    565498/*
    566  *  非タスクコンテキストから呼び出せるサービスコール
     499 *  非タスクコンテキストから呼び出せるサービスコール
    567500 */
    568501#define iact_tsk(tskid)                                         act_tsk(tskid)
     
    596529
    597530/*
    598  *  オブジェクト属性の定義
    599  */
    600 #define TA_ACT                  UINT_C(0x01)    /* タスクを起動された状æ
    601 ‹ã§ç”Ÿæˆ */
    602 #define TA_NOACTQUE             UINT_C(0x02)    /* 起動要求をキューイングしない */
    603 
    604 #define TA_TPRI                 UINT_C(0x01)    /* タスクのå¾
    605 ã¡è¡Œåˆ—を優å
    606 ˆåº¦é †ã« */
    607 
    608 #define TA_WMUL                 UINT_C(0x02)    /* 複数のå¾
    609 ã¡ã‚¿ã‚¹ã‚¯ */
    610 #define TA_CLR                  UINT_C(0x04)    /* イベントフラグのクリア指定 */
    611 
    612 #define TA_CEILING              UINT_C(0x03)    /* 優å
    613 ˆåº¦ä¸Šé™ãƒ—ロトコル */
    614 
    615 #define TA_STA                  UINT_C(0x02)    /* 周期通知を動作状æ
    616 ‹ã§ç”Ÿæˆ */
    617 
    618 #define TA_NONKERNEL    UINT_C(0x02)    /* カーネル管理外の割込み */
    619 
    620 #define TA_ENAINT               UINT_C(0x01)    /* 割込み要求禁止フラグをクリア */
    621 #define TA_EDGE                 UINT_C(0x02)    /* エッジトリガ */
    622 
    623 /*
    624  *  サービスコールの動作モードの定義
    625  */
    626 #define TWF_ORW                 UINT_C(0x01)    /* イベントフラグのORå¾
    627 ã¡ */
    628 #define TWF_ANDW                UINT_C(0x02)    /* イベントフラグのANDå¾
    629 ã¡ */
    630 
    631 /*
    632  *  通知処理モードの定義
    633  */
    634 #define TNFY_HANDLER    UINT_C(0x00)            /* タイムイベントハンドラの呼出し */
    635 #define TNFY_SETVAR             UINT_C(0x01)            /* 変数の設定 */
    636 #define TNFY_INCVAR             UINT_C(0x02)            /* 変数のインクリメント */
    637 #define TNFY_ACTTSK             UINT_C(0x03)            /* タスクの起動 */
    638 #define TNFY_WUPTSK             UINT_C(0x04)            /* タスクの起床 */
    639 #define TNFY_SIGSEM             UINT_C(0x05)            /* セマフォの資源の返却 */
    640 #define TNFY_SETFLG             UINT_C(0x06)            /* イベントフラグのセット */
    641 #define TNFY_SNDDTQ             UINT_C(0x07)            /* データキューへの送信 */
    642 
    643 #define TENFY_SETVAR    UINT_C(0x10)            /* 変数の設定 */
    644 #define TENFY_INCVAR    UINT_C(0x20)            /* 変数のインクリメント */
    645 #define TENFY_ACTTSK    UINT_C(0x30)            /* タスクの起動 */
    646 #define TENFY_WUPTSK    UINT_C(0x40)            /* タスクの起床 */
    647 #define TENFY_SIGSEM    UINT_C(0x50)            /* セマフォの返却 */
    648 #define TENFY_SETFLG    UINT_C(0x60)            /* イベントフラグのセット */
    649 #define TENFY_SNDDTQ    UINT_C(0x70)            /* データキューへの送信 */
    650 
    651 /*
    652  *  オブジェクトの状æ
    653 ‹ã®å®šç¾©
    654  */
    655 #define TTS_RUN                 UINT_C(0x01)    /* 実行状æ
    656 ‹ */
    657 #define TTS_RDY                 UINT_C(0x02)    /* 実行可能状æ
    658 ‹ */
    659 #define TTS_WAI                 UINT_C(0x04)    /* å¾
    660 ã¡çŠ¶æ
    661 ‹ */
    662 #define TTS_SUS                 UINT_C(0x08)    /* 強制å¾
    663 ã¡çŠ¶æ
    664 ‹ */
    665 #define TTS_WAS                 UINT_C(0x0c)    /* 二重å¾
    666 ã¡çŠ¶æ
    667 ‹ */
    668 #define TTS_DMT                 UINT_C(0x10)    /* 休止状æ
    669 ‹ */
    670 
    671 #define TTW_SLP                 UINT_C(0x0001)  /* 起床å¾
    672 ã¡ */
    673 #define TTW_DLY                 UINT_C(0x0002)  /* 時間経過å¾
    674 ã¡ */
    675 #define TTW_SEM                 UINT_C(0x0004)  /* セマフォの資源獲得å¾
    676 ã¡ */
    677 #define TTW_FLG                 UINT_C(0x0008)  /* イベントフラグå¾
    678 ã¡ */
    679 #define TTW_SDTQ                UINT_C(0x0010)  /* データキューへの送信å¾
    680 ã¡ */
    681 #define TTW_RDTQ                UINT_C(0x0020)  /* データキューからの受信å¾
    682 ã¡ */
    683 #define TTW_SPDQ                UINT_C(0x0100)  /* 優å
    684 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®é€ä¿¡å¾
    685 ã¡ */
    686 #define TTW_RPDQ                UINT_C(0x0200)  /* 優å
    687 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã‹ã‚‰ã®å—ä¿¡å¾
    688 ã¡ */
    689 #define TTW_MTX                 UINT_C(0x0080)  /* ミューテックスのロックå¾
    690 ã¡çŠ¶æ
    691 ‹ */
    692 #define TTW_MPF                 UINT_C(0x2000)  /* 固定長メモリブロックの獲得å¾
    693 ã¡ */
    694 
    695 #define TCYC_STP                UINT_C(0x01)    /* 周期通知が動作していない */
    696 #define TCYC_STA                UINT_C(0x02)    /* 周期通知が動作している */
    697 
    698 #define TALM_STP                UINT_C(0x01)    /* アラーム通知が動作していない */
    699 #define TALM_STA                UINT_C(0x02)    /* アラーム通知が動作している */
    700 
    701 /*
    702  *  その他の定数の定義
    703  */
    704 #define TSK_SELF                0                       /* 自タスク指定 */
    705 #define TSK_NONE                0                       /* 該当するタスクがない */
    706 
    707 #define TPRI_SELF               0                       /* 自タスクのベース優å
    708 ˆåº¦ */
    709 #define TPRI_INI                0                       /* タスクの起動時優å
    710 ˆåº¦ */
    711 
    712 #define TIPM_ENAALL             0                       /* 割込み優å
    713 ˆåº¦ãƒžã‚¹ã‚¯å
    714 ¨è§£é™¤ */
    715 
    716 /*
    717  *  構成定数とマクロ
    718  */
    719 
    720 /*
    721  *  優å
    722 ˆåº¦ã®ç¯„囲
    723  */
    724 #define TMIN_TPRI               1                       /* タスク優å
    725 ˆåº¦ã®æœ€å°å€¤ï¼ˆæœ€é«˜å€¤ï¼‰*/
    726 #define TMAX_TPRI               16                      /* タスク優å
    727 ˆåº¦ã®æœ€å¤§å€¤ï¼ˆæœ€ä½Žå€¤ï¼‰*/
    728 #define TMIN_DPRI               1                       /* データ優å
    729 ˆåº¦ã®æœ€å°å€¤ï¼ˆæœ€é«˜å€¤ï¼‰*/
    730 #define TMAX_DPRI               16                      /* データ優å
    731 ˆåº¦ã®æœ€å¤§å€¤ï¼ˆæœ€ä½Žå€¤ï¼‰*/
    732 #define TMIN_ISRPRI             1                       /* 割込みサービスルーチン優å
    733 ˆåº¦ã®æœ€å°å€¤ */
    734 #define TMAX_ISRPRI             16                      /* 割込みサービスルーチン優å
    735 ˆåº¦ã®æœ€å¤§å€¤ */
    736 
    737 /*
    738  *  バージョンæƒ
    739 å ±
    740  */
    741 #define TKERNEL_MAKER   UINT_C(0x0118)  /* カーネルのメーカーコード */
    742 #define TKERNEL_PRID    UINT_C(0x0007)  /* カーネルの識別番号 */
    743 #define TKERNEL_SPVER   UINT_C(0xf631)  /* カーネル仕様のバージョン番号 */
    744 #define TKERNEL_PRVER   UINT_C(0x3020)  /* カーネルのバージョン番号 */
    745 
    746 /*
    747  *  キューイング回数の最大値
    748  */
    749 #define TMAX_ACTCNT             UINT_C(1)               /* 起動要求キューイング数の最大値 */
    750 #define TMAX_WUPCNT             UINT_C(1)               /* 起床要求キューイング数の最大値 */
    751 
    752 /*
    753  *  ビットパターンのビット数
    754  */
    755 #ifndef TBIT_FLGPTN                                     /* イベントフラグのビット数 */
     531 *  オブジェクト属性の定義
     532 */
     533#define TA_ACT                  UINT_C(0x01)    /* タスクを起動された状態で生成 */
     534#define TA_NOACTQUE             UINT_C(0x02)    /* 起動要求をキューイングしない */
     535
     536#define TA_TPRI                 UINT_C(0x01)    /* タスクの待ち行列を優先度順に */
     537
     538#define TA_WMUL                 UINT_C(0x02)    /* 複数の待ちタスク */
     539#define TA_CLR                  UINT_C(0x04)    /* イベントフラグのクリア指定 */
     540
     541#define TA_CEILING              UINT_C(0x03)    /* 優先度上限プロトコル */
     542
     543#define TA_STA                  UINT_C(0x02)    /* 周期通知を動作状態で生成 */
     544
     545#define TA_NONKERNEL    UINT_C(0x02)    /* カーネル管理外の割込み */
     546
     547#define TA_ENAINT               UINT_C(0x01)    /* 割込み要求禁止フラグをクリア */
     548#define TA_EDGE                 UINT_C(0x02)    /* エッジトリガ */
     549
     550/*
     551 *  サービスコールの動作モードの定義
     552 */
     553#define TWF_ORW                 UINT_C(0x01)    /* イベントフラグのOR待ち */
     554#define TWF_ANDW                UINT_C(0x02)    /* イベントフラグのAND待ち */
     555
     556/*
     557 *  通知処理モードの定義
     558 */
     559#define TNFY_HANDLER    UINT_C(0x00)            /* タイムイベントハンドラの呼出し */
     560#define TNFY_SETVAR             UINT_C(0x01)            /* 変数の設定 */
     561#define TNFY_INCVAR             UINT_C(0x02)            /* 変数のインクリメント */
     562#define TNFY_ACTTSK             UINT_C(0x03)            /* タスクの起動 */
     563#define TNFY_WUPTSK             UINT_C(0x04)            /* タスクの起床 */
     564#define TNFY_SIGSEM             UINT_C(0x05)            /* セマフォの資源の返却 */
     565#define TNFY_SETFLG             UINT_C(0x06)            /* イベントフラグのセット */
     566#define TNFY_SNDDTQ             UINT_C(0x07)            /* データキューへの送信 */
     567
     568#define TENFY_SETVAR    UINT_C(0x10)            /* 変数の設定 */
     569#define TENFY_INCVAR    UINT_C(0x20)            /* 変数のインクリメント */
     570#define TENFY_ACTTSK    UINT_C(0x30)            /* タスクの起動 */
     571#define TENFY_WUPTSK    UINT_C(0x40)            /* タスクの起床 */
     572#define TENFY_SIGSEM    UINT_C(0x50)            /* セマフォの返却 */
     573#define TENFY_SETFLG    UINT_C(0x60)            /* イベントフラグのセット */
     574#define TENFY_SNDDTQ    UINT_C(0x70)            /* データキューへの送信 */
     575
     576/*
     577 *  オブジェクトの状態の定義
     578 */
     579#define TTS_RUN                 UINT_C(0x01)    /* 実行状態 */
     580#define TTS_RDY                 UINT_C(0x02)    /* 実行可能状態 */
     581#define TTS_WAI                 UINT_C(0x04)    /* 待ち状態 */
     582#define TTS_SUS                 UINT_C(0x08)    /* 強制待ち状態 */
     583#define TTS_WAS                 UINT_C(0x0c)    /* 二重待ち状態 */
     584#define TTS_DMT                 UINT_C(0x10)    /* 休止状態 */
     585
     586#define TTW_SLP                 UINT_C(0x0001)  /* 起床待ち */
     587#define TTW_DLY                 UINT_C(0x0002)  /* 時間経過待ち */
     588#define TTW_SEM                 UINT_C(0x0004)  /* セマフォの資源獲得待ち */
     589#define TTW_FLG                 UINT_C(0x0008)  /* イベントフラグ待ち */
     590#define TTW_SDTQ                UINT_C(0x0010)  /* データキューへの送信待ち */
     591#define TTW_RDTQ                UINT_C(0x0020)  /* データキューからの受信待ち */
     592#define TTW_SPDQ                UINT_C(0x0100)  /* 優先度データキューへの送信待ち */
     593#define TTW_RPDQ                UINT_C(0x0200)  /* 優先度データキューからの受信待ち */
     594#define TTW_MTX                 UINT_C(0x0080)  /* ミューテックスのロック待ち状態 */
     595#define TTW_MPF                 UINT_C(0x2000)  /* 固定長メモリブロックの獲得待ち */
     596
     597#define TCYC_STP                UINT_C(0x01)    /* 周期通知が動作していない */
     598#define TCYC_STA                UINT_C(0x02)    /* 周期通知が動作している */
     599
     600#define TALM_STP                UINT_C(0x01)    /* アラーム通知が動作していない */
     601#define TALM_STA                UINT_C(0x02)    /* アラーム通知が動作している */
     602
     603/*
     604 *  その他の定数の定義
     605 */
     606#define TSK_SELF                0                       /* 自タスク指定 */
     607#define TSK_NONE                0                       /* 該当するタスクがない */
     608
     609#define TPRI_SELF               0                       /* 自タスクのベース優先度 */
     610#define TPRI_INI                0                       /* タスクの起動時優先度 */
     611
     612#define TIPM_ENAALL             0                       /* 割込み優先度マスク全解除 */
     613
     614/*
     615 *  構成定数とマクロ
     616 */
     617
     618/*
     619 *  優先度の範囲
     620 */
     621#define TMIN_TPRI               1                       /* タスク優先度の最小値(最高値)*/
     622#define TMAX_TPRI               16                      /* タスク優先度の最大値(最低値)*/
     623#define TMIN_DPRI               1                       /* データ優先度の最小値(最高値)*/
     624#define TMAX_DPRI               16                      /* データ優先度の最大値(最低値)*/
     625#define TMIN_ISRPRI             1                       /* 割込みサービスルーチン優先度の最小値 */
     626#define TMAX_ISRPRI             16                      /* 割込みサービスルーチン優先度の最大値 */
     627
     628/*
     629 *  バージョン情報
     630 */
     631#define TKERNEL_MAKER   UINT_C(0x0118)  /* カーネルのメーカーコード */
     632#define TKERNEL_PRID    UINT_C(0x0007)  /* カーネルの識別番号 */
     633#define TKERNEL_SPVER   UINT_C(0xf631)  /* カーネル仕様のバージョン番号 */
     634#define TKERNEL_PRVER   UINT_C(0x3020)  /* カーネルのバージョン番号 */
     635
     636/*
     637 *  キューイング回数の最大値
     638 */
     639#define TMAX_ACTCNT             UINT_C(1)               /* 起動要求キューイング数の最大値 */
     640#define TMAX_WUPCNT             UINT_C(1)               /* 起床要求キューイング数の最大値 */
     641
     642/*
     643 *  ビットパターンのビット数
     644 */
     645#ifndef TBIT_FLGPTN                                     /* イベントフラグのビット数 */
    756646#define TBIT_FLGPTN             (sizeof(FLGPTN) * CHAR_BIT)
    757647#endif /* TBIT_FLGPTN */
    758648
    759649/*
    760  *  システム時刻の調整できる範囲(単位:μ秒)
    761  */
    762 #define TMIN_ADJTIM             -1000000                /* システム時刻の最小調整時間 */
    763 #define TMAX_ADJTIM             1000000                 /* システム時刻の最大調整時間 */
    764 
    765 /*
    766  *  メモリ領域確保のためのマクロ
     650 *  システム時刻の調整できる範囲(単位:μ秒)
     651 */
     652#define TMIN_ADJTIM             -1000000                /* システム時刻の最小調整時間 */
     653#define TMAX_ADJTIM             1000000                 /* システム時刻の最大調整時間 */
     654
     655/*
     656 *  メモリ領域確保のためのマクロ
    767657 *
    768  *  以下のTOPPERS_COUNT_SZとTOPPERS_ROUND_SZの定義は,unitが2の巾乗であ
    769  *  ることを仮定している.
     658 *  以下のTOPPERS_COUNT_SZとTOPPERS_ROUND_SZの定義は,unitが2の巾乗であ
     659 *  ることを仮定している.
    770660 */
    771661#ifndef TOPPERS_COUNT_SZ
     
    794684
    795685/*
    796  *  その他の構成定数
    797  */
    798 #define TMAX_MAXSEM             UINT_MAX        /* セマフォの最大資源数の最大値 */
     686 *  その他の構成定数
     687 */
     688#define TMAX_MAXSEM             UINT_MAX        /* セマフォの最大資源数の最大値 */
    799689
    800690#ifdef __cplusplus
Note: See TracChangeset for help on using the changeset viewer.