cre_dtq
acre_dtq
ER cre_dtq ( ID dtqid, T_CDTQ *pk_cdtq );
ER_ID acre_dtq ( 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を返します。
dtqatr := ( TA_TFIFO || TA_TPRI )
2 ) データ・キュー領域の容量(dtqcnt),データ・キュー領域の先頭アドレス(dtq)
アプリケーション側で,TSZ_DTQ(dtqcnt)バイトのデータ・キュー領域を確保し,その先頭アドレスをdtqに指定します。
また,dtqcntに0を指定することもできます。この場合,データ・キューにデータを蓄えておくことはできないため,送信側と受信側の先に実行した方が待ち状態になり,他方が行われた時点で待ちが解除される,つまり送信側と受信側が完全に同期した動作となります。なお,dtqcntが0の場合は,dtqは無視されます。
アプリケーション側で,TSZ_DTQ(dtqcnt)バイトのデータ・キュー領域を確保し,その先頭アドレスをdtqに指定します。
また,dtqcntに0を指定することもできます。この場合,データ・キューにデータを蓄えておくことはできないため,送信側と受信側の先に実行した方が待ち状態になり,他方が行われた時点で待ちが解除される,つまり送信側と受信側が完全に同期した動作となります。なお,dtqcntが0の場合は,dtqは無視されます。
備考2 RI600PXは,データ・キュー領域に関するアクセス権については何も関知しません。通常は,データ・キュー領域はメモリ・オブジェクト以外でかつユーザ・スタック以外の領域に作成してください。メモリ・オブジェクト内にデータ・キュー領域を作成した場合は,そのメモリ・オブジェクトへのオペランド・ライト・アクセスが許可されたタスクが,誤ってデータ・キュー領域を書き換えてしまう危険があります。