1 /* 2 * Copyright (c) 2006-2021, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2015-02-17 Bernard First version 9 * 2018-05-17 ChenYong Add socket abstraction layer 10 */ 11 12 #ifndef SYS_SOCKET_H_ 13 #define SYS_SOCKET_H_ 14 15 #include <rtthread.h> 16 #include <sal_socket.h> 17 #ifdef SAL_USING_TLS 18 #include <sal_tls.h> 19 #endif 20 21 #ifdef __cplusplus 22 extern "C" { 23 #endif 24 25 #ifdef SAL_USING_POSIX 26 int accept(int s, struct sockaddr *addr, socklen_t *addrlen); 27 int bind(int s, const struct sockaddr *name, socklen_t namelen); 28 int shutdown(int s, int how); 29 int getpeername(int s, struct sockaddr *name, socklen_t *namelen); 30 int getsockname(int s, struct sockaddr *name, socklen_t *namelen); 31 int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen); 32 int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen); 33 int connect(int s, const struct sockaddr *name, socklen_t namelen); 34 int listen(int s, int backlog); 35 int recv(int s, void *mem, size_t len, int flags); 36 int recvfrom(int s, void *mem, size_t len, int flags, 37 struct sockaddr *from, socklen_t *fromlen); 38 int recvmsg(int s, struct msghdr *message, int flags); 39 int sendmsg(int s, const struct msghdr *message, int flags); 40 int send(int s, const void *dataptr, size_t size, int flags); 41 int sendto(int s, const void *dataptr, size_t size, int flags, 42 const struct sockaddr *to, socklen_t tolen); 43 int socket(int domain, int type, int protocol); 44 int closesocket(int s); 45 int ioctlsocket(int s, long cmd, void *arg); 46 int socketpair(int domain, int type, int protocol, int *fds); 47 #else 48 #define accept(s, addr, addrlen) sal_accept(s, addr, addrlen) 49 #define bind(s, name, namelen) sal_bind(s, name, namelen) 50 #define shutdown(s, how) sal_shutdown(s, how) 51 #define getpeername(s, name, namelen) sal_getpeername(s, name, namelen) 52 #define getsockname(s, name, namelen) sal_getsockname(s, name, namelen) 53 #define getsockopt(s, level, optname, optval, optlen) sal_getsockopt(s, level, optname, optval, optlen) 54 #define setsockopt(s, level, optname, optval, optlen) sal_setsockopt(s, level, optname, optval, optlen) 55 #define connect(s, name, namelen) sal_connect(s, name, namelen) 56 #define listen(s, backlog) sal_listen(s, backlog) 57 #define recv(s, mem, len, flags) sal_recvfrom(s, mem, len, flags, NULL, NULL) 58 #define recvfrom(s, mem, len, flags, from, fromlen) sal_recvfrom(s, mem, len, flags, from, fromlen) 59 #define recvmsg(s, message, flags) sal_recvmsg(s, message, flags) 60 #define send(s, dataptr, size, flags) sal_sendto(s, dataptr, size, flags, NULL, NULL) 61 #define sendto(s, dataptr, size, flags, to, tolen) sal_sendto(s, dataptr, size, flags, to, tolen) 62 #define sendmsg(s, message, flags) sal_sendmsg(s, message, flags) 63 #define socket(domain, type, protocol) sal_socket(domain, type, protocol) 64 #define socketpair(domain, type, protocol, fds) sal_socketpair(domain, type, protocol, fds) 65 #define closesocket(s) sal_closesocket(s) 66 #define ioctlsocket(s, cmd, arg) sal_ioctlsocket(s, cmd, arg) 67 #endif /* SAL_USING_POSIX */ 68 69 #ifdef __cplusplus 70 } 71 #endif 72 73 #endif /* _SYS_SOCKET_H_ */ 74