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のセマフォが存在する。