shm: Index | Files

package shm

import ""

Package shm implements System V shared memory functions (shmctl, shmget, shmat, shmdt).


Package Files

shm.go shm_linux_amd64.go


const (

    // Create key if key does not exist.
    IPC_CREAT = 01000
    // Fail if key exists.
    IPC_EXCL = 02000
    // Return error on wait.
    IPC_NOWAIT = 04000

    // Private key.

    // Attach read-only access.
    SHM_RDONLY = 010000
    // Round attach address to SHMLBA.
    SHM_RND = 020000
    // Take-over region on attach.
    SHM_REMAP = 040000
    // Execution access.
    SHM_EXEC = 0100000

    // Lock segment (root only).
    SHM_LOCK = 1
    // Unlock segment (root only).
    SHM_UNLOCK = 12

    // Remove identifier.
    IPC_RMID = 0
    // Set `ipc_perm` options.
    IPC_SET = 1
    // Get `ipc_perm' options.
    IPC_STAT = 2


func At Uses

func At(shmId int, shmAddr uintptr, shmFlg int) (data []byte, err error)

At attaches the shared memory segment identified by shmId.

Using At() with shmAddr equal to NULL is the preferred, portable way of attaching a shared memory segment.

func Ctl Uses

func Ctl(shmId int, cmd int, buf *IdDs) (int, error)

Ctl performs the control operation specified by cmd on the shared memory segment whose identifier is given in shmId.

The buf argument is a pointer to a IdDs structure.

func Dt Uses

func Dt(data []byte) error

Dt detaches the shared memory segment.

The to-be-detached segment must be currently attached with shmAddr equal to the value returned by the attaching At() call.

func Get Uses

func Get(key int, size int, shmFlg int) (shmId int, err error)

Get allocates a shared memory segment.

Get() returns the identifier of the shared memory segment associated with the value of the argument key. A new shared memory segment is created if key has the value IPC_PRIVATE or key isn't IPC_PRIVATE, no shared memory segment corresponding to key exists, and IPC_CREAT is specified in shmFlg.

If shmFlg specifies both IPC_CREAT and IPC_EXCL and a shared memory segment already exists for key, then Get() fails with errno set to EEXIST.

func Rm Uses

func Rm(shmId int) error

Rm removes the shared memory segment.

func Size Uses

func Size(shmId int) (int64, error)

Size returns size of shared memory segment.

type IdDs Uses

type IdDs struct {
    // Operation permission struct.
    Perm Perm
    // Size of segment in bytes.
    SegSz uint64
    // Last attach time.
    Atime int64
    // Last detach time.
    Dtime int64
    // Last change time.
    Ctime int64
    // Pid of creator.
    Cpid int32
    // Pid of last shmat/shmdt.
    Lpid int32
    // Number of current attaches.
    Nattch uint64
    // Reserved.
    GlibcReserved4 uint64
    // Reserved.
    GlibcReserved5 uint64

IdDs describes shared memory segment.

type Perm Uses

type Perm struct {
    // Key.
    Key int32
    // Owner's user ID.
    Uid uint32
    // Owner's group ID.
    Gid uint32
    // Creator's user ID.
    Cuid uint32
    // Creator's group ID.
    Cgid uint32
    // Read/write permission.
    Mode uint16
    // Padding.
    Pad1 uint16
    // Sequence number.
    Seq uint16
    // Padding.
    Pad2 uint16
    // Padding.
    PadCgo0 [4]byte
    // Reserved.
    GlibcReserved1 uint64
    // Reserved.
    GlibcReserved2 uint64

Perm is used to pass permission information to IPC operations.

Package shm imports 2 packages (graph) and is imported by 2 packages. Updated 2019-08-11. Refresh now. Tools for package owners.