-   
 
 cre_dtq
 acre_dtq
 
-   
 
 ER      cre_dtq ( ID dtqid, T_CDTQ *pk_cdtq );
 ER_ID   acre_dtq ( T_CDTQ *pk_cdtq );
 
| 
 | 
 | 
 | 
| 
 | 
 ID      dtqid;
 
 | 
 | 
| 
 | 
 T_CDTQ  *pk_cdtq;
 
 | 
 | 
 
 
 typedef struct  t_cdtq {
         ATR     dtqatr;         /*データ・キュー属性*/
         UINT    dtqcnt;         /*データ・キュー領域の容量(データの個数)*/
         VP      dtq;            /*データ・キュー領域の先頭アドレス*/
 } T_CDTQ;
 
 | 
 
 本サービス・コールは,信頼されたドメインに所属するタスクからのみ呼び出せます。
 
 cre_dtqは,指定された
dtqidのデータ・キューを
pk_cdtqで指定された内容で生成します。acre_dtqは
pk_cdtqで指定された内容でデータ・キューを生成し,生成したデータ・キューIDを返します。
 
 1 )	 データ・キュー属性(
dtqatr)
dtqatrには以下を指定できます。
 
   dtqatr := ( TA_TFIFO || TA_TPRI )
 -	 
TA_TFIFO(= 0x0000)
データ・キューの送信待ちキューの順序をFIFO順とします。
 
 -	 
TA_TPRI(= 0x0001)
データ・キューの送信待ちキューの順序をタスクの現在優先度順とします。ただし,同じ現在優先度のタスクの中ではFIFO順です。
 
 備考	 データ・キューの受信待ちキューはFIFO順です。
 
 2 )	 データ・キュー領域の容量(
dtqcnt),データ・キュー領域の先頭アドレス(
dtq)
アプリケーション側で,TSZ_DTQ(
dtqcnt)バイトのデータ・キュー領域を確保し,その先頭アドレスを
dtqに指定します。
また,
dtqcntに0を指定することもできます。この場合,データ・キューにデータを蓄えておくことはできないため,送信側と受信側の先に実行した方が待ち状態になり,他方が行われた時点で待ちが解除される,つまり送信側と受信側が完全に同期した動作となります。なお,
dtqcntが0の場合は,
dtqは無視されます。
 
 備考2	 RI600PXは,データ・キュー領域に関するアクセス権については何も関知しません。通常は,データ・キュー領域はメモリ・オブジェクト以外でかつユーザ・スタック以外の領域に作成してください。メモリ・オブジェクト内にデータ・キュー領域を作成した場合は,そのメモリ・オブジェクトへのオペランド・ライト・アクセスが許可されたタスクが,誤ってデータ・キュー領域を書き換えてしまう危険があります。
 
 備考3	 μITRON4.0仕様には,
dtqにNULLを指定することでRI600PXがデータ・キュー領域を割り当てる機能がありますが,本サービス・コールはこの機能をサポートしていません。
 
 
| 
 | 
 | 
 | 
| 
 | 
 | 
 acre_dtqの正常終了(生成されたデータ・キューID)
  
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 -	  dtqcnt != 0かつ dtq + TSZ_DTQ( dtqcnt)  >  0x100000000
  
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 -	 CPUロック状態から本サービス・コールを発行した。
  
 -	 「PSW.IPL > カーネル割り込みマスクレベル」の状態から本サービス・コールを発行した。
  
 | 
| 
 | 
 | 
 -	 スタック・ポインタが呼出しタスクのユーザ・スタック領域の範囲外を指している。
  
 -	 呼び出しタスクからの pk_cdtqが示す領域に対するオペランド・リード・アクセス許可がない。
  
 | 
| 
 | 
 | 
 -	 呼出しタスクは,信頼されたドメインに所属していない。
  
 | 
| 
 | 
 | 
 -	 dtqcnt  != 0かつdtq  == NULL
 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 |