Everything

cre_sem

acre_sem

概要
セマフォの生成
C言語形式
 ER      cre_sem ( ID semid, T_CSEM *pk_csem );
 ER_ID   acre_sem ( T_CSEM *pk_csem );
パラメータ
I/O
パラメータ
説明
I
 ID      semid;
セマフォのID
I
 T_CSEM  *pk_csem;
セマフォ生成情報を格納した領域へのポインタ

【 セマフォ生成情報T_CSEMの構造 】
 typedef struct  t_csem {
         ATR     sematr;         /*セマフォ属性*/
         UINT    isemcnt;        /*セマフォ資源数の初期値*/
         UINT    maxsem;         /*セマフォ資源数の最大値*/
 } T_CSEM;

機能
本サービス・コールは,信頼されたドメインに所属するタスクからのみ呼び出せます。
cre_semは,指定されたsemidのセマフォをpk_csemで指定された内容で生成します。acre_semはpk_csemで指定された内容でセマフォを生成し,生成したセマフォIDを返します。
1 ) セマフォ属性(sematr
sematrには以下を指定できます。
   sematr := ( TA_TFIFO || TA_TPRI )
- TA_TFIFO(= 0x0000)
セマフォの待ちキューの順序をFIFO順とします。
- TA_TPRI(= 0x0001)
セマフォの待ちキューの順序をタスクの現在優先度順とします。ただし,同じ現在優先度のタスクの中ではFIFO順です。
2 ) セマフォ資源数の初期値(isemcnt
セマフォ資源数の初期値を,0~maxsemの範囲で指定します。
3 ) セマフォ資源数の最大値(maxsem
セマフォ資源数の最大値を,1~TMAX_MAXSEM(= 65535)の範囲で指定します。
戻り値
マクロ
数値
意味

正の値
acre_semの正常終了(生成されたセマフォID)
E_OK
0
cre_semの正常終了
E_RSATR
-11
予約属性
- sematrのbit0以外のビットが1
E_PAR
-17
パラメータ・エラー
- pk_csem == NULL
- maxsem == 0
- maxsem > TMAX_MAXSEM
- maxsem < isemcnt
E_ID
-18
不正ID番号(cre_semのみ)
- semid≦0
- semid > VTMAX_SEM
E_CTX
-25
コンテキスト・エラー
- CPUロック状態から本サービス・コールを発行した。
- 非タスクから本サービス・コールを発行した。
- 「PSW.IPL > カーネル割り込みマスクレベル」の状態から本サービス・コールを発行した。
E_MACV
-26
メモリ・アクセス違反
- スタック・ポインタが呼出しタスクのユーザ・スタック領域の範囲外を指している。
- 呼び出しタスクからのpk_csemが示す領域に対するオペランド・リード・アクセス許可がない。
E_OACV
-27
オブジェクト・アクセス違反
- 呼出しタスクは,信頼されたドメインに所属していない。
E_NOID
-34
空きIDなし(acre_semのみ)
E_OBJ
-41
オブジェクト状態不正(cre_semのみ)
- semidのセマフォが存在する。