Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

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

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 の指定内容によって、 いろいろな共有メモリ の制御を行います。 以下にその cmd の内容を示します。

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.2.1R

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