aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorMichael Tuexen <tuexen@freebsd.org>2018-12-09 14:55:34 +0100
committerDmitry Vyukov <dvyukov@google.com>2018-12-09 15:31:32 +0100
commit99fd96656f003745e4d1ee59ec590789b8ec9fbd (patch)
tree59645dab53c0b1a6b14411b07cfe691f16dd4ed6 /sys
parent82f11ef0c50d938173b46e102df1eeef3bce46ae (diff)
sys/freebsd: fix socketpair usage
Diffstat (limited to 'sys')
-rw-r--r--sys/freebsd/gen/amd64.go8
-rw-r--r--sys/freebsd/socket.txt7
2 files changed, 12 insertions, 3 deletions
diff --git a/sys/freebsd/gen/amd64.go b/sys/freebsd/gen/amd64.go
index 419f89796..4fae36493 100644
--- a/sys/freebsd/gen/amd64.go
+++ b/sys/freebsd/gen/amd64.go
@@ -421,6 +421,10 @@ var structDescs_amd64 = []*KeyedStruct{
{Key: StructKey{Name: "sigset"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sigset", TypeSize: 8}, Fields: []Type{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "mask", TypeSize: 8}}},
}}},
+ {Key: StructKey{Name: "sock_pair", Dir: 1}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sock_pair", TypeSize: 8, ArgDir: 1}, Fields: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "sock", FldName: "fd0", TypeSize: 4, ArgDir: 1}},
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "sock", FldName: "fd1", TypeSize: 4, ArgDir: 1}},
+ }}},
{Key: StructKey{Name: "sockaddr_in"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sockaddr_in", TypeSize: 16}, Fields: []Type{
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "family", TypeSize: 2}}, Val: 2},
&ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "port", TypeSize: 2}, ArgFormat: 1}, ValuesStart: 20000, ValuesPerProc: 4},
@@ -1862,7 +1866,7 @@ var syscalls_amd64 = []*Syscall{
&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "socket_domain", FldName: "domain", TypeSize: 8}}, Vals: []uint64{1, 2, 16, 23, 28}},
&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "socket_type", FldName: "type", TypeSize: 8}}, Vals: []uint64{1, 2, 3, 4, 5, 536870912, 268435456}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "proto", TypeSize: 1}}},
- &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "fds", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "pipefd", Dir: 1}}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "fds", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "sock_pair", Dir: 1}}},
}},
{NR: 135, Name: "socketpair$unix", CallName: "socketpair", Args: []Type{
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "domain", TypeSize: 8}}, Val: 1},
@@ -2406,4 +2410,4 @@ var consts_amd64 = []ConstValue{
{Name: "WUNTRACED", Value: 2},
}
-const revision_amd64 = "22112dfc79f66bcb8c6e3f8f1cf5f7e0d005927f"
+const revision_amd64 = "d990a6df2ded440a9df7303f0bfb0cddcc0d448f"
diff --git a/sys/freebsd/socket.txt b/sys/freebsd/socket.txt
index bbe312989..18a35c3eb 100644
--- a/sys/freebsd/socket.txt
+++ b/sys/freebsd/socket.txt
@@ -15,7 +15,7 @@ type sock_port proc[20000, 4, int16be]
# TODO: describe socketcall syscall
socket(domain flags[socket_domain], type flags[socket_type], proto int8) sock
-socketpair(domain flags[socket_domain], type flags[socket_type], proto int8, fds ptr[out, pipefd])
+socketpair(domain flags[socket_domain], type flags[socket_type], proto int8, fds ptr[out, sock_pair])
bind(fd sock, addr ptr[in, sockaddr_storage], addrlen len[addr])
connect(fd sock, addr ptr[in, sockaddr_storage], addrlen len[addr])
accept(fd sock, peer ptr[out, sockaddr_storage, opt], peerlen ptr[inout, len[peer, int32]]) sock
@@ -43,6 +43,11 @@ recv_flags = MSG_OOB, MSG_PEEK, MSG_WAITALL, MSG_DONTWAIT, MSG_CMSG_CLOEXEC
cmsg_levels = SOL_SOCKET, IPPROTO_IP, IPPROTO_IPV6, IPPROTO_ICMP, IPPROTO_ICMPV6, IPPROTO_SCTP, IPPROTO_TCP, IPPROTO_UDP, IPPROTO_UDPLITE
+sock_pair {
+ fd0 sock
+ fd1 sock
+}
+
# This sockaddr type corresponds to the sockaddr_storage type and is 128 bytes size.
sockaddr_storage [
un sockaddr_un