Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ shmctl(2V) — NEWS-os 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

shmget(2V)

shmop(2V)

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

名称

shmctl − 共有メモリーの制御

形式

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

int shmctl (shmid, cmd, buf)
int shmid, cmd;
struct shmid_ds ∗buf;

解説

Shmctl は以下の cmd の指定内容によって、 いろいろな共有メモリー の制御を行います。 以下にその cmds の内容を示します。

IPC_STAT shmid に対応するデータ構造体の各 メンバーの現在の値を buf で示す構造体に格納する。 この構造体の内容は intro(2) に定義されています。

IPC_SET shmid に対応 するデータ構造体の以下に示す メンバーの値を buf で示す構造体の 対応する値に設定する。

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

このcmdは スーパーユーザの ID または shmid に対応するデータ構造体の shm_perm.uid の値と同じ有効ユーザ ID を持つプロセスによってのみ 実行できます。

IPC_RMID shmid によって示される共有メモリー 識別子をシステムから取り除き、 共有メモリーのセグメント および対応するデータ構造体を 破壊します。 このcmdは スーパーユーザの ID または shmid に対応するデータ構造体の shm_perm.uid の値と同じ有効ユーザ ID を持つプロセスによってのみ 実行できます。

SHM_LOCK shmidによって示される共有メモリー のセグメントのロックします。 このcmdは スーパーユーザと同じ有効ユーザ ID を持つプロセスによってのみ実行できます。

SHM_UNLOCK shmidによって示される共有メモリー のセグメントのロックを解除します。 このcmdは スーパーユーザと同じ有効ユーザ ID を持つプロセスによってのみ実行できます。

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

Shmid が有効な共有メモリー識別子でない。 ­[EINVAL]

Cmd が有効なコマンドではない。 ­[EINVAL]

Cmd が IPC_STAT であり、 操作許可が呼びだしプロセス ( intro(2) 参照)に対して認められない。 ­[EACCES]

Cmd が IPC_RMID または IPC_SET で、 呼びだしプロセスの有効ユーザ ID がスーパーユーザと異なり、 shmid に対応するデータ構造体の shm_perm.uid の値と同じではない。 ­[EPERM]

Cmd が SHM_LOCK または SHM_UNLOCK で、 呼びだしプロセスの有効ユーザ ID がスーパーユーザと異なる。 ­[EPERM]

Cmd が SHM_UNLOCK で、 shmid で指定する共有メモリーのセグメント がメモリーにロックされていない。 ­[EINVAL] Buf が不正なアドレスを示している。 ­[EFAULT]

リターン値

コマンドの実行に成功すると、 ゼロが返されます。 失敗すると、 −1が返され、 errno が設定されます。

関連事項

shmget(2V), shmop(2V). 

NEWS-OSRelease 4.1C

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