Source File
syscall_bsd.go
Belonging Package
syscall
if < 0 || > 1000 {
return nil, EINVAL
}
:= make([]_Gid_t, )
, = getgroups(, &[0])
if != nil {
return nil,
}
= make([]int, )
for , := range [0:] {
[] = int()
}
return
}
func ( []int) ( error) {
if len() == 0 {
return setgroups(0, nil)
}
:= make([]_Gid_t, len())
for , := range {
[] = _Gid_t()
}
return setgroups(len(), &[0])
}
type WaitStatus uint32
const (
mask = 0x7F
core = 0x80
shift = 8
exited = 0
stopped = 0x7F
)
func ( WaitStatus) () bool { return &mask == exited }
func ( WaitStatus) () int {
if &mask != exited {
return -1
}
return int( >> shift)
}
func ( WaitStatus) () bool { return &mask != stopped && &mask != 0 }
func ( WaitStatus) () Signal {
:= Signal( & mask)
if == stopped || == 0 {
return -1
}
return
}
func ( WaitStatus) () bool { return .Signaled() && &core != 0 }
func ( WaitStatus) () bool { return &mask == stopped && Signal(>>shift) != SIGSTOP }
func ( WaitStatus) () bool { return &mask == stopped && Signal(>>shift) == SIGSTOP }
func ( WaitStatus) () Signal {
if !.Stopped() {
return -1
}
return Signal(>>shift) & 0xFF
}
func ( WaitStatus) () int { return -1 }
func ( int, *WaitStatus, int, *Rusage) ( int, error) {
var _C_int
, = wait4(, &, , )
if != nil {
* = WaitStatus()
}
return
}
func ( *SockaddrInet4) () (unsafe.Pointer, _Socklen, error) {
if .Port < 0 || .Port > 0xFFFF {
return nil, 0, EINVAL
}
.raw.Len = SizeofSockaddrInet4
.raw.Family = AF_INET
:= (*[2]byte)(unsafe.Pointer(&.raw.Port))
[0] = byte(.Port >> 8)
[1] = byte(.Port)
for := 0; < len(.Addr); ++ {
.raw.Addr[] = .Addr[]
}
return unsafe.Pointer(&.raw), _Socklen(.raw.Len), nil
}
func ( *SockaddrInet6) () (unsafe.Pointer, _Socklen, error) {
if .Port < 0 || .Port > 0xFFFF {
return nil, 0, EINVAL
}
.raw.Len = SizeofSockaddrInet6
.raw.Family = AF_INET6
:= (*[2]byte)(unsafe.Pointer(&.raw.Port))
[0] = byte(.Port >> 8)
[1] = byte(.Port)
.raw.Scope_id = .ZoneId
for := 0; < len(.Addr); ++ {
.raw.Addr[] = .Addr[]
}
return unsafe.Pointer(&.raw), _Socklen(.raw.Len), nil
}
func ( *SockaddrUnix) () (unsafe.Pointer, _Socklen, error) {
:= .Name
:= len()
if >= len(.raw.Path) || == 0 {
return nil, 0, EINVAL
}
.raw.Len = byte(3 + ) // 2 for Family, Len; 1 for NUL
.raw.Family = AF_UNIX
for := 0; < ; ++ {
.raw.Path[] = int8([])
}
return unsafe.Pointer(&.raw), _Socklen(.raw.Len), nil
}
func ( *SockaddrDatalink) () (unsafe.Pointer, _Socklen, error) {
if .Index == 0 {
return nil, 0, EINVAL
}
.raw.Len = .Len
.raw.Family = AF_LINK
.raw.Index = .Index
.raw.Type = .Type
.raw.Nlen = .Nlen
.raw.Alen = .Alen
.raw.Slen = .Slen
for := 0; < len(.raw.Data); ++ {
.raw.Data[] = .Data[]
}
return unsafe.Pointer(&.raw), SizeofSockaddrDatalink, nil
}
func ( *RawSockaddrAny) (Sockaddr, error) {
switch .Addr.Family {
case AF_LINK:
:= (*RawSockaddrDatalink)(unsafe.Pointer())
:= new(SockaddrDatalink)
.Len = .Len
.Family = .Family
.Index = .Index
.Type = .Type
.Nlen = .Nlen
.Alen = .Alen
.Slen = .Slen
for := 0; < len(.Data); ++ {
.Data[] = .Data[]
}
return , nil
case AF_UNIX:
:= (*RawSockaddrUnix)(unsafe.Pointer())
if .Len < 2 || .Len > SizeofSockaddrUnix {
return nil, EINVAL
}
:= new(SockaddrUnix)
=
break
}
}
:= (*[len(.Path)]byte)(unsafe.Pointer(&.Path[0]))[0:]
.Name = string()
return , nil
case AF_INET:
:= (*RawSockaddrInet4)(unsafe.Pointer())
:= new(SockaddrInet4)
:= (*[2]byte)(unsafe.Pointer(&.Port))
.Port = int([0])<<8 + int([1])
for := 0; < len(.Addr); ++ {
.Addr[] = .Addr[]
}
return , nil
case AF_INET6:
:= (*RawSockaddrInet6)(unsafe.Pointer())
:= new(SockaddrInet6)
:= (*[2]byte)(unsafe.Pointer(&.Port))
.Port = int([0])<<8 + int([1])
.ZoneId = .Scope_id
for := 0; < len(.Addr); ++ {
.Addr[] = .Addr[]
}
return , nil
}
return nil, EAFNOSUPPORT
}
func ( int) ( int, Sockaddr, error) {
var RawSockaddrAny
var _Socklen = SizeofSockaddrAny
, = accept(, &, &)
if != nil {
return
}
Close()
return 0, nil, ECONNABORTED
}
, = anyToSockaddr(&)
if != nil {
Close()
= 0
}
return
}
func ( int) ( Sockaddr, error) {
var RawSockaddrAny
var _Socklen = SizeofSockaddrAny
if = getsockname(, &, &); != nil {
return
func (, , int) ( byte, error) {
var byte
:= _Socklen(1)
= getsockopt(, , , unsafe.Pointer(&), &)
return ,
}
func (, , int) ( [4]byte, error) {
:= _Socklen(4)
= getsockopt(, , , unsafe.Pointer(&[0]), &)
return ,
}
func (, , int) (*IPMreq, error) {
var IPMreq
:= _Socklen(SizeofIPMreq)
:= getsockopt(, , , unsafe.Pointer(&), &)
return &,
}
func (, , int) (*IPv6Mreq, error) {
var IPv6Mreq
:= _Socklen(SizeofIPv6Mreq)
:= getsockopt(, , , unsafe.Pointer(&), &)
return &,
}
func (, , int) (*IPv6MTUInfo, error) {
var IPv6MTUInfo
:= _Socklen(SizeofIPv6MTUInfo)
:= getsockopt(, , , unsafe.Pointer(&), &)
return &,
}
func (, , int) (*ICMPv6Filter, error) {
var ICMPv6Filter
:= _Socklen(SizeofICMPv6Filter)
:= getsockopt(, , , unsafe.Pointer(&), &)
return &,
}
if .Addr.Family != AF_UNSPEC {
, = anyToSockaddr(&)
}
return
}
func ( int, , []byte, Sockaddr, int) ( error) {
_, = SendmsgN(, , , , )
return
}
func ( int, , []byte, Sockaddr, int) ( int, error) {
var unsafe.Pointer
var _Socklen
if != nil {
, , = .sockaddr()
if != nil {
return 0,
}
}
var Msghdr
.Name = (*byte)(unsafe.Pointer())
.Namelen = uint32()
var Iovec
if len() > 0 {
.Base = (*byte)(unsafe.Pointer(&[0]))
.SetLen(len())
}
var byte
:= [2]Timeval{
NsecToTimeval(TimespecToNsec([0])),
NsecToTimeval(TimespecToNsec([1])),
}
return utimes(, (*[2]Timeval)(unsafe.Pointer(&[0])))
}
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |