mirror of
https://github.com/rwinkhart/sys.git
synced 2026-08-28 04:46:44 -04:00
unix: enable Sysv shared memory support on darwin/arm64
Keep it disabled on ios though. For golang/go#45696 For golang/go#46084 Change-Id: I3d551227a4ebc0eebabdd16b175aa6a75ea9de19 Reviewed-on: https://go-review.googlesource.com/c/sys/+/353509 Trust: Tobias Klauser <tobias.klauser@gmail.com> Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
committed by
Tobias Klauser
parent
808efd93c3
commit
b1ebd4e100
@@ -2,8 +2,8 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build (darwin && amd64) || (linux && !android)
|
//go:build (darwin && !ios) || (linux && !android)
|
||||||
// +build darwin,amd64 linux,!android
|
// +build darwin,!ios linux,!android
|
||||||
|
|
||||||
package unix_test
|
package unix_test
|
||||||
|
|
||||||
@@ -14,7 +14,6 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func ExampleSysvShmGet() {
|
func ExampleSysvShmGet() {
|
||||||
|
|
||||||
// create shared memory region of 1024 bytes
|
// create shared memory region of 1024 bytes
|
||||||
id, err := unix.SysvShmGet(unix.IPC_PRIVATE, 1024, unix.IPC_CREAT|unix.IPC_EXCL|0o600)
|
id, err := unix.SysvShmGet(unix.IPC_PRIVATE, 1024, unix.IPC_CREAT|unix.IPC_EXCL|0o600)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build (darwin && amd64) || linux
|
//go:build (darwin && !ios) || linux
|
||||||
// +build darwin,amd64 linux
|
// +build darwin,!ios linux
|
||||||
|
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build (darwin && amd64)
|
//go:build darwin && !ios
|
||||||
// +build darwin,amd64
|
// +build darwin,!ios
|
||||||
|
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
|
|||||||
@@ -734,6 +734,65 @@ var libc_sendfile_trampoline_addr uintptr
|
|||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {
|
||||||
|
r0, _, e1 := syscall_syscall(libc_shmat_trampoline_addr, uintptr(id), uintptr(addr), uintptr(flag))
|
||||||
|
ret = uintptr(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var libc_shmat_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_shmat shmat "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {
|
||||||
|
r0, _, e1 := syscall_syscall(libc_shmctl_trampoline_addr, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))
|
||||||
|
result = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var libc_shmctl_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_shmctl shmctl "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func shmdt(addr uintptr) (err error) {
|
||||||
|
_, _, e1 := syscall_syscall(libc_shmdt_trampoline_addr, uintptr(addr), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var libc_shmdt_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_shmdt shmdt "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func shmget(key int, size int, flag int) (id int, err error) {
|
||||||
|
r0, _, e1 := syscall_syscall(libc_shmget_trampoline_addr, uintptr(key), uintptr(size), uintptr(flag))
|
||||||
|
id = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var libc_shmget_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_shmget shmget "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Access(path string, mode uint32) (err error) {
|
func Access(path string, mode uint32) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|||||||
@@ -639,3 +639,39 @@ type Ucred struct {
|
|||||||
Ngroups int16
|
Ngroups int16
|
||||||
Groups [16]uint32
|
Groups [16]uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SysvIpcPerm struct {
|
||||||
|
Uid uint32
|
||||||
|
Gid uint32
|
||||||
|
Cuid uint32
|
||||||
|
Cgid uint32
|
||||||
|
Mode uint16
|
||||||
|
_ uint16
|
||||||
|
_ int32
|
||||||
|
}
|
||||||
|
type SysvShmDesc struct {
|
||||||
|
Perm SysvIpcPerm
|
||||||
|
Segsz uint64
|
||||||
|
Lpid int32
|
||||||
|
Cpid int32
|
||||||
|
Nattch uint16
|
||||||
|
_ [34]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
IPC_CREAT = 0x200
|
||||||
|
IPC_EXCL = 0x400
|
||||||
|
IPC_NOWAIT = 0x800
|
||||||
|
IPC_PRIVATE = 0x0
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
IPC_RMID = 0x0
|
||||||
|
IPC_SET = 0x1
|
||||||
|
IPC_STAT = 0x2
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
SHM_RDONLY = 0x1000
|
||||||
|
SHM_RND = 0x2000
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user