1 /* 2 * Copyright (c) 2006-2018, 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 send(int s, const void *dataptr, size_t size, int flags); 39 int sendto(int s, const void *dataptr, size_t size, int flags, 40 const struct sockaddr *to, socklen_t tolen); 41 int socket(int domain, int type, int protocol); 42 int closesocket(int s); 43 int ioctlsocket(int s, long cmd, void *arg); 44 #else 45 #define accept(s, addr, addrlen) sal_accept(s, addr, addrlen) 46 #define bind(s, name, namelen) sal_bind(s, name, namelen) 47 #define shutdown(s, how) sal_shutdown(s, how) 48 #define getpeername(s, name, namelen) sal_getpeername(s, name, namelen) 49 #define getsockname(s, name, namelen) sal_getsockname(s, name, namelen) 50 #define getsockopt(s, level, optname, optval, optlen) sal_getsockopt(s, level, optname, optval, optlen) 51 #define setsockopt(s, level, optname, optval, optlen) sal_setsockopt(s, level, optname, optval, optlen) 52 #define connect(s, name, namelen) sal_connect(s, name, namelen) 53 #define listen(s, backlog) sal_listen(s, backlog) 54 #define recv(s, mem, len, flags) sal_recvfrom(s, mem, len, flags, NULL, NULL) 55 #define recvfrom(s, mem, len, flags, from, fromlen) sal_recvfrom(s, mem, len, flags, from, fromlen) 56 #define send(s, dataptr, size, flags) sal_sendto(s, dataptr, size, flags, NULL, NULL) 57 #define sendto(s, dataptr, size, flags, to, tolen) sal_sendto(s, dataptr, size, flags, to, tolen) 58 #define socket(domain, type, protocol) sal_socket(domain, type, protocol) 59 #define closesocket(s) sal_closesocket(s) 60 #define ioctlsocket(s, cmd, arg) sal_ioctlsocket(s, cmd, arg) 61 #endif /* SAL_USING_POSIX */ 62 63 #ifdef __cplusplus 64 } 65 #endif 66 67 #endif /* _SYS_SOCKET_H_ */ 68