1 #include <sys/socket.h>
6 int socketpair(int domain
, int type
, int protocol
, int fd
[2])
8 int r
= socketcall(socketpair
, domain
, type
, protocol
, fd
, 0, 0);
9 if (r
<0 && (errno
==EINVAL
|| errno
==EPROTONOSUPPORT
)
10 && (type
&(SOCK_CLOEXEC
|SOCK_NONBLOCK
))) {
11 r
= socketcall(socketpair
, domain
,
12 type
& ~(SOCK_CLOEXEC
|SOCK_NONBLOCK
),
15 if (type
& SOCK_CLOEXEC
) {
16 __syscall(SYS_fcntl
, fd
[0], F_SETFD
, FD_CLOEXEC
);
17 __syscall(SYS_fcntl
, fd
[1], F_SETFD
, FD_CLOEXEC
);
19 if (type
& SOCK_NONBLOCK
) {
20 __syscall(SYS_fcntl
, fd
[0], F_SETFL
, O_NONBLOCK
);
21 __syscall(SYS_fcntl
, fd
[1], F_SETFL
, O_NONBLOCK
);