msgqueue

package
v0.0.0-...-eca1f2a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 16, 2026 License: Apache-2.0, BSD-3-Clause, MIT Imports: 10 Imported by: 6

Documentation

Overview

Package msgqueue implements System V message queues.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Message

type Message struct {

	// Type is an integer representing the type of the sent message.
	Type int64

	// Text is an untyped block of memory.
	Text []byte
	// contains filtered or unexported fields
}

Message represents a message exchanged through a Queue via msgsnd(2) and msgrcv(2).

+stateify savable

type Queue

type Queue struct {
	// contains filtered or unexported fields
}

Queue represents a SysV message queue, described by sysvipc(7).

+stateify savable

func (*Queue) Destroy

func (q *Queue) Destroy()

Destroy implements ipc.Mechanism.Destroy.

func (*Queue) ID

func (q *Queue) ID() ipc.ID

ID returns queue's ID.

func (*Queue) Lock

func (q *Queue) Lock()

Lock implements ipc.Mechanism.Lock.

func (*Queue) Object

func (q *Queue) Object() *ipc.Object

Object implements ipc.Mechanism.Object.

func (*Queue) Receive

func (q *Queue) Receive(ctx context.Context, mType int64, maxSize uint64, flags, pid int32) (*Message, error)

Receive removes a message from the queue and returns it. See msgrcv(2).

func (*Queue) Send

func (q *Queue) Send(ctx context.Context, m Message, wait bool, pid int32) error

Send appends a message to the message queue, and returns an error if sending fails. See msgsnd(2).

func (*Queue) Set

func (q *Queue) Set(ctx context.Context, ds *linux.MsqidDS) error

Set modifies some values of the queue. See msgctl(IPC_SET).

func (*Queue) Stat

func (q *Queue) Stat(ctx context.Context) (*linux.MsqidDS, error)

Stat returns a MsqidDS object filled with information about the queue. See msgctl(IPC_STAT) and msgctl(MSG_STAT).

func (*Queue) StatAny

func (q *Queue) StatAny(ctx context.Context) (*linux.MsqidDS, error)

StatAny is similar to Queue.Stat, but doesn't require read permission. See msgctl(MSG_STAT_ANY).

func (*Queue) Unlock

func (q *Queue) Unlock()

Unlock implements ipc.mechanism.Unlock.

+checklocksignore

type Registry

type Registry struct {
	// contains filtered or unexported fields
}

Registry contains a set of message queues that can be referenced using keys or IDs.

+stateify savable

func NewRegistry

func NewRegistry(userNS *auth.UserNamespace) *Registry

NewRegistry returns a new Registry ready to be used.

func (*Registry) FindByID

func (r *Registry) FindByID(id ipc.ID) (*Queue, error)

FindByID returns the queue with the specified ID and an error if the ID doesn't exist.

func (*Registry) FindOrCreate

func (r *Registry) FindOrCreate(ctx context.Context, key ipc.Key, mode linux.FileMode, private, create, exclusive bool) (*Queue, error)

FindOrCreate creates a new message queue or returns an existing one. See msgget(2).

func (*Registry) IPCInfo

func (r *Registry) IPCInfo(ctx context.Context) *linux.MsgInfo

IPCInfo reports global parameters for message queues. See msgctl(IPC_INFO).

func (*Registry) MsgInfo

func (r *Registry) MsgInfo(ctx context.Context) *linux.MsgInfo

MsgInfo reports global parameters for message queues. See msgctl(MSG_INFO).

func (*Registry) Remove

func (r *Registry) Remove(id ipc.ID, creds *auth.Credentials) error

Remove removes the queue with specified ID. All waiters (readers and writers) and writers will be awakened and fail. Remove will return an error if the ID is invalid, or the user doesn't have privileges.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL