diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:36:04 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:36:04 +0000 |
commit | b09c6d56832eb1718c07d74abf3bc6ae3fe4e030 (patch) | |
tree | d2caec2610d4ea887803ec9e9c3cd77136c448ba /dependencies/pkg/mod/golang.org/x/sys@v0.1.0/unix/example_sysvshm_test.go | |
parent | Initial commit. (diff) | |
download | icingadb-upstream.tar.xz icingadb-upstream.zip |
Adding upstream version 1.1.0.upstream/1.1.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | dependencies/pkg/mod/golang.org/x/sys@v0.1.0/unix/example_sysvshm_test.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/dependencies/pkg/mod/golang.org/x/sys@v0.1.0/unix/example_sysvshm_test.go b/dependencies/pkg/mod/golang.org/x/sys@v0.1.0/unix/example_sysvshm_test.go new file mode 100644 index 0000000..66ef2ed --- /dev/null +++ b/dependencies/pkg/mod/golang.org/x/sys@v0.1.0/unix/example_sysvshm_test.go @@ -0,0 +1,51 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin && !ios) || (linux && !android) +// +build darwin,!ios linux,!android + +package unix_test + +import ( + "log" + + "golang.org/x/sys/unix" +) + +func ExampleSysvShmGet() { + // create shared memory region of 1024 bytes + id, err := unix.SysvShmGet(unix.IPC_PRIVATE, 1024, unix.IPC_CREAT|unix.IPC_EXCL|0o600) + if err != nil { + log.Fatal("sysv shm create failed:", err) + } + + // warning: sysv shared memory segments persist even after after a process + // is destroyed, so it's very important to explicitly delete it when you + // don't need it anymore. + defer func() { + _, err := unix.SysvShmCtl(id, unix.IPC_RMID, nil) + if err != nil { + log.Fatal(err) + } + }() + + // to use a shared memory region you must attach to it + b, err := unix.SysvShmAttach(id, 0, 0) + if err != nil { + log.Fatal("sysv attach failed:", err) + } + + // you should detach from the segment when finished with it. The byte + // slice is no longer valid after detaching + defer func() { + if err = unix.SysvShmDetach(b); err != nil { + log.Fatal("sysv detach failed:", err) + } + }() + + // Changes to the contents of the byte slice are reflected in other + // mappings of the shared memory identifer in this and other processes + b[42] = 'h' + b[43] = 'i' +} |