2 * Copyright 2019 Intel Corporation
3 * SPDX-License-Identifier: MIT
10 #if defined(__linux__)
16 #include <sys/socket.h>
21 os_socket_listen_abstract(const char *path
, int count
)
23 int s
= socket(AF_UNIX
, SOCK_STREAM
, 0);
27 struct sockaddr_un addr
;
28 memset(&addr
, 0, sizeof(addr
));
29 addr
.sun_family
= AF_UNIX
;
30 strncpy(addr
.sun_path
+ 1, path
, sizeof(addr
.sun_path
) - 2);
32 /* Create an abstract socket */
33 int ret
= bind(s
, (struct sockaddr
*)&addr
,
34 offsetof(struct sockaddr_un
, sun_path
) +
41 if (listen(s
, count
) < 0) {
50 os_socket_accept(int s
)
52 return accept(s
, NULL
, NULL
);
56 os_socket_recv(int socket
, void *buffer
, size_t length
, int flags
)
58 return recv(socket
, buffer
, length
, flags
);
62 os_socket_send(int socket
, const void *buffer
, size_t length
, int flags
)
64 return send(socket
, buffer
, length
, flags
);
68 os_socket_block(int s
, bool block
)
70 int old
= fcntl(s
, F_GETFL
, 0);
76 fcntl(s
, F_SETFL
, old
& ~O_NONBLOCK
);
78 fcntl(s
, F_SETFL
, old
| O_NONBLOCK
);
82 os_socket_close(int s
)
90 os_socket_listen_abstract(const char *path
, int count
)
97 os_socket_accept(int s
)
104 os_socket_recv(int socket
, void *buffer
, size_t length
, int flags
)
111 os_socket_send(int socket
, const void *buffer
, size_t length
, int flags
)
118 os_socket_block(int s
, bool block
)
123 os_socket_close(int s
)