Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ semctl(2V) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(2)

semget(2V)

semop(2V)

SEMCTL(2V)  —  NEWS-OS Programmer’s Manual

名称

semctl − セマフォの制御

形式

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>

int semctl(semid, semnum, cmd, arg)
int semid, cmd;
int semnum;
union semun {
     int val;
     struct semid_ds ∗buf;
     ushort ∗array;
} arg;

解説

semctl は cmd を指定することで様々な セマフォ制御を行います。

以下の cmd は semid および semnum で指定するセマフォに関して実行 されます。

GETVAL semval の値を返す ( intro(2) 参照)。 {READ}

SETVAL semval の値を arg.val に設定する。 {ALTER} この cmd の実行が成功すると、 全プロセス内の指定セマフォ に対応する semadj の値が消去されます。

GETPID sempid の値を返す。 {READ}

GETNCNT semncnt の値を返す。 {READ}

GETZCNT semzcnt の値を返す。 {READ}

以下の cmd はそれぞれセマフォのセット の各 semval を返し、 設定する。

GETALL arg.array によって指定する 配列に semval を出力する。 {READ}

SETALL arg.array によって指定する配列に semval を設定する。 {ALTER} この cmd の実行が成功し、 全プロセス内の各指定セマフォ に対応する semadj の値が消去されるとき。

以下の cmd も指定可能です。

IPC_STAT semid に関連するデータ構造体の各 メンバのカレントの値を arg.buf で指定する構造体に置き換える。 この構造体の内容は intro(2) で定義されます。 {READ}

IPC_SET semid に関連するデータ構造体の以下の各 メンバの値を arg.buf で示す構造体の対応する値に置き換える。

sem_perm.uid
sem_perm.gid
sem_perm.mode /∗ only low 9 bits ∗/

この cmd はスーパーユーザの ID または semid に関連するデータ構造体の sem_perm.uid の値に一致する有効ユーザ ID を持つプロセスによってのみ 実行できる。

IPC_RMID semid で示すセマフォ識別子を システムから取り除き、 セマフォと関連するデータ構造体を 破壊する。 この cmd はスーパーユーザの ID または semid に関連するデータ構造体の sem_perm.uid の値に一致する有効ユーザ ID を持つプロセスによってのみ 実行できる。

semctl は以下の内容の内1つでも該当する場合、 失敗します。

­[EINVAL] semid が有効なセマフォ識別子でない。

­[EINVAL] semnum の値が ゼロ以下または sem_nsems よりも大きい。

­[EINVAL] cmd が有効でない。

­[EACCES] 動作許可が呼び出しプロセス に対して否定された ( intro(2) 参照)。

­[ERANGE] cmd が SETVAL または SETALL となり、 semval が設定される値 システムに許される最大値以上である。

­[EPERM] cmd が IPC_RMID または IPC_SET と同一であり、 呼び出しプロセスの有効 ユーザ ID がスーパーユーザの ID と同一でなく、 また semid に関連するデータ構造体の sem_perm.uid の値とも同一でない。

­[EFAULT] arg.buf が不正アドレスを示している。

リターン値

コマンドの実行に成功すると、 cmd によって以下のような値が返されます。

GETVAL semval の値

GETPID sempid の値

GETNCNT semncnt の値

GETZCNT semzcnt の値

その他 0 の値

失敗した場合、 −1 が返され、 errno が設定されます。

関連事項

intro(2), semget(2V), semop(2V). 

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026