• 検索結果がありません。

ランデブ

ドキュメント内 px100.book (ページ 77-84)

第 3 章 従来機能の変更 25

3.5 拡張同期・通信機能

3.5.3 ランデブ

CRA_POR

ランデブポートの生成(静的 API,アクセス許可指定)

cra_por

ランデブポートの生成(アクセス許可指定)

acra_por

ランデブポートの生成(ID番号自動割付け,アクセス許可指定)

【静的 API】

CRA_POR ( ID porid, { ATR poratr, UINT maxcmsz, UINT maxrmsz }, ACVCT acvct ) ;

【 C言語 API】

ER ercd = cra_por ( ID porid, T_CPOR *pk_cpor, ACVCT *p_acvct ) ;

ER_ID porid = acra_por ( T_CPOR *pk_cpor, ACVCT *p_acvct ) ;

【パラメータ】

ID porid 生成対象のランデブポートの ID番号

T_CPOR * pk_cpor ランデブポート生成情報を入れたパケットへ

のポインタ(静的 APIではパケットの内容を直 接記述する)

ACVCT acvct ランデブポートのアクセス許可ベクタ

pk_cporの内容( T_CPOR型)

ATR poratr ランデブポート属性

UINT maxcmsz 呼出しメッセージの最大サイズ(バイト数)

UINT maxrmsz 返答メッセージの最大サイズ(バイト数)

(実装独自に他の情報を追加してもよい)

【リターンパラメータ】

cra_porの場合

ER ercd 正常終了( E_OK)またはエラーコード acra_porの場合

ER_ID porid 生成したランデブポートの ID番号(正の値)ま

たはエラーコード

【エラーコード】

E_ID 不正 ID番号( poridが不正あるいは使用できない)

E_NOID ID番号不足(割付け可能なランデブポート IDがない)

E_RSATR 予約属性( poratrが不正あるいは使用できない)

E_PAR パラメータエラー( pk_cpor, maxcmsz, maxrmsz, p_acvct, acvctが不正)

E_OBJ オブジェクト状態エラー(対象ランデブポートが登録済

み)

poridで指定される ID番号を持つランデブポートを, pk_cporで指定されるラ ンデブポート生成情報に基づいて生成する. CRE_POR/ cre_por/ acre_por との違いは,生成するランデブポートに, acvctで指定されるアクセス許可ベ クタを設定することのみである.

sac_por

ランデブポートのアクセス許可ベクタの変更

【 C言語 API】

ER ercd = sac_por ( ID porid, ACVCT *p_acvct ) ;

【パラメータ】

ID porid 変更対象のランデブポートの ID番号

ACVCT acvct ランデブポートのアクセス許可ベクタ

【リターンパラメータ】

ER ercd 正常終了( E_OK)またはエラーコード

【エラーコード】

E_ID 不正 ID番号( poridが不正あるいは使用できない)

E_PAR パラメータエラー( p_acvct, acvctが不正)

E_NOEXS オブジェクト未生成(対象ランデブポートが未登録)

【機能】

poridで指定されるランデブポートに対するアクセス許可ベクタを,acvctで指

定されるアクセス許可ベクタに設定する.

【補足説明】

このサービスコールは,呼び出された時点ですでにランデブポートの呼出し待 ち行列につながれているタスクには影響しない.そのため,ランデブポートの 呼出し待ち行列につながれているタスクが,新たに設定したアクセス許可ベク タではランデブを呼び出すことを許可されていない場合でも,そのタスクはラ ンデブ呼出し待ち状態のままとなり,ランデブが成立すれば,ランデブ終了待 ち状態となることができる.ランデブポートの受付待ち行列につながれている タスクについても同様である.

fwd_por

ランデブの回送

【 C言語 API】

ER ercd = fwd_por ( ID porid, RDVPTN calptn, RDVNO rdvno, VP msg, UINT cmsgsz ) ;

【パラメータ】

ID porid 回送先のランデブポートの ID番号

RDVPTN calptn 呼出し側のランデブ条件を示すビットパター

RDVNO rdvno 回送するランデブ番号

VP msg 呼出しメッセージの先頭番地

UINT cmsgsz 呼出しメッセージのサイズ(バイト数)

【リターンパラメータ】

ER ercd 正常終了( E_OK)またはエラーコード

【エラーコード】

E_ID 不正 ID番号( poridが不正あるいは使用できない)

E_PAR パラメータエラー( calptn, msg, cmsgszが不正)

E_ILUSE サービスコール不正使用(回送先のランデブポートの返

答メッセージの最大サイズが大きすぎる,ランデブを受 け付けたタスクの所属する保護ドメイン以外からの呼 出し)

E_OBJ オブジェクト状態エラー( rdvnoが不正)

E_NOEXS オブジェクト未生成(対象ランデブポートが未登録)

【機能】

rdvnoで指定されるランデブ番号を付与されたランデブを, poridで指定され

るランデブポートに対して, calptnで指定されるランデブ条件により回送す る. µITRON4.0仕様との違いは,指定されたランデブを受け付けたタスクの所 属する保護ドメイン以外(カーネルドメインも例外ではない)から呼び出され た場合に, E_ILUSEエラーを返すことのみである.

rpl_rdv

ランデブの終了

【 C言語 API】

ER ercd = rpl_rdv ( RDVNO rdvno, VP msg, UINT rmsgsz ) ;

【パラメータ】

RDVNO rdvno 終了させるランデブ番号

VP msg 返答メッセージの先頭番地

UINT rmsgsz 返答メッセージのサイズ(バイト数)

【リターンパラメータ】

ER ercd 正常終了( E_OK)またはエラーコード

【エラーコード】

E_PAR パラメータエラー( msg, rmsgszが不正)

E_ILUSE サービスコール不正使用(ランデブを受け付けたタスク

の所属する保護ドメイン以外からの呼出し)

E_OBJ オブジェクト状態エラー( rdvnoが不正)

【機能】

r dvno で指 定されるラ ンデブ番号 を付与され たランデブ を終了させ る.

µITRON4.0仕様との違いは,指定されたランデブを受け付けたタスクの所属す

る保護ドメイン以外(カーネルドメインも例外ではない)から呼び出された場 合に, E_ILUSEエラーを返すことのみである.

ref_por

ランデブポートの状態参照

【 C言語 API】

ER ercd = ref_por ( ID porid, T_RPOR *pk_rpor ) ;

【パラメータ】

ID porid 状態参照対象のランデブポートの ID番号

T_RPOR * pk_rpor ランデブポート状態を返すパケットへのポイ

ンタ

【リターンパラメータ】

ER ercd 正常終了( E_OK)またはエラーコード pk_rporの内容( T_RPOR型)

ID ctskid ランデブポートの呼出し待ち行列の先頭のタ

スクの ID番号

ID atskid ランデブポートの受付待ち行列の先頭のタス

クの ID番号

ACVCT acvct ランデブポートのアクセス許可ベクタ

(実装独自に他の情報を追加してもよい)

【エラーコード】

E_ID 不正 ID番号( poridが不正あるいは使用できない)

E_PAR パラメータエラー( pk_rporが不正)

E_NOEXS オブジェクト未生成(対象ランデブポートが未登録)

【機能】

poridで指定されるランデブポートに関する状態を参照し, pk_rporで指定さ

れるパケットに返す. µITRON4.0仕様との違いは, acvctに対象ランデブポー トのアクセス許可ベクタを返すことのみである.

ドキュメント内 px100.book (ページ 77-84)