Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ shmctl(S) — OpenDesktop Software Development System 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

shmget(S)

shmop(S)


 shmctl(S)                      6 January 1993                      shmctl(S)


 Name

    shmctl - shared memory control operations

 Syntax


    cc  . . .  -lc


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

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


 Description

    The shmctl system call provides a variety of shared memory control opera-
    tions as specified by cmd.  The following cmds are available:

    IPCRMID    Remove the shared memory identifier specified by shmid from
                the system and destroy the shared memory segment and data
                structure associated with it.  This cmd can only be executed
                by a process that has an effective user ID equal to that of
                super user, or to the value of shmperm.cuid or shmperm.uid
                in the data structure associated with shmid.

    IPCSET     Set the value of the following members of the data structure
                associated with shmid to the corresponding value found in the
                structure pointed to by buf:

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

                This cmd can only be executed by a process that has an effec-
                tive user ID equal to that of super user, or to the value of
                shmperm.cuid or shmperm.uid in the data structure associ-
                ated with shmid.

    IPCSTAT    Place the current value of each member of the data structure
                associated with shmid into the structure pointed to by buf.

    SHMLOCK    Lock the shared memory segment specified by shmid in memory.
                This cmd can only be executed by a process that has an effec-
                tive user ID equal to super user.

    SHMUNLOCK  Unlock the shared memory segment specified by shmid.  This
                cmd can only be executed by a process that has an effective
                user ID equal to super user.


 Return value

    Upon successful completion, a value of 0 is returned. Otherwise, a value
    of -1 is returned, and errno is set to indicate the error.

 Diagnostics

    The shmctl system call fails if one or more of the following is true:

    [EACCES]    cmd is equal to IPCSTAT and {READ} operation permission is
                denied to the calling process.

    [EFAULT]    buf points to an illegal address.

    [EINVAL]    shmid is not a valid shared memory identifier.

    [EINVAL]    cmd is not a valid command.

    [ENOMEM]    cmd is equal to SHMLOCK, and there is not enough memory.

    [ENOSYS     The functionality is not supported on this implementation.

    [EPERM]     cmd is equal to IPCRMID or IPCSET, and the effective user
                ID of the calling process is not equal to that of super user
                or to the value of shmperm.cuid or shmperm.uid in the data
                structure associated with shmid.

    [EPERM]     cmd is equal to SHMLOCK or SHMUNLOCK, and the effective
                user ID of the calling process is not equal to that of super
                user.


 Notes

    The user must explicitly remove shared memory segments after the last
    reference to them has been removed.

 See also

    shmget(S), shmop(S)

 Standards conformance

    shmctl is conformant with:
    AT&T SVID Issue 2;
    and X/Open Portability Guide, Issue 3, 1989.


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