diff --git a/components/fs/fatfs/fs.c b/components/fs/fatfs/fs.c index 7435e822..04fecb89 100755 --- a/components/fs/fatfs/fs.c +++ b/components/fs/fatfs/fs.c @@ -44,6 +44,7 @@ #ifdef LOSCFG_NET_LWIP_SACK #include "lwip/lwipopts.h" +#include "lwip/sockets.h" #define CONFIG_NSOCKET_DESCRIPTORS LWIP_CONFIG_NUM_SOCKETS #else #define CONFIG_NSOCKET_DESCRIPTORS 0 diff --git a/components/net/lwip-2.1/porting/include/arch/cc.h b/components/net/lwip-2.1/porting/include/arch/cc.h index 746bf9e9..64e364fa 100644 --- a/components/net/lwip-2.1/porting/include/arch/cc.h +++ b/components/net/lwip-2.1/porting/include/arch/cc.h @@ -32,19 +32,42 @@ #ifndef _LWIP_PORTING_CC_H_ #define _LWIP_PORTING_CC_H_ +#ifdef LITTLE_ENDIAN +#undef LITTLE_ENDIAN +#endif + +#ifdef BIG_ENDIAN +#undef BIG_ENDIAN +#endif + +#include #include #include #include "securec.h" -#include "log.h" +#include "memory_pool.h" #ifdef htons #define LWIP_DONT_PROVIDE_BYTEORDER_FUNCTIONS #endif -#define LWIP_PROVIDE_ERRNO 1 -#define __SIZEOF_POINTER__ 4 // 32位系统 +#define SOCKLEN_T_DEFINED +#define SA_FAMILY_T_DEFINED +#define IN_PORT_T_DEFINED -#define LOS_TASK_STATUS_DETACHED 0x0100 // 预留字段 +#define LWIP_TIMEVAL_PRIVATE 0 +#define LWIP_ERRNO_STDINCLUDE +#define LWIP_SOCKET_STDINCLUDE + +#define LWIP_DNS_API_DEFINE_ERRORS 0 +#define LWIP_DNS_API_DEFINE_FLAGS 0 +#define LWIP_DNS_API_DECLARE_STRUCTS 0 +#define LWIP_DNS_API_DECLARE_H_ERRNO 0 + +#ifndef __SIZEOF_POINTER__ +#define __SIZEOF_POINTER__ 4 // 32 bit system +#endif + +#define LOS_TASK_STATUS_DETACHED 0x0100 // reserved #if defined(__arm__) && defined(__ARMCC_VERSION) /* Keil uVision4 tools */ @@ -96,7 +119,6 @@ extern void HilogPrintf(const char *fmt, ...); #define init_waitqueue_head(...) #define poll_check_waiters(...) #define IOCTL_CMD_CASE_HANDLER() -#define DF_NADDR(addr) #define DNS_SERVER_ADDRESS(ipaddr) (ip4_addr_set_u32(ipaddr, ipaddr_addr("114.114.114.114"))) #define DNS_SERVER_ADDRESS_SECONDARY(ipaddr) (ip4_addr_set_u32(ipaddr, ipaddr_addr("114.114.115.115"))) diff --git a/components/net/lwip-2.1/porting/include/arch/sys_arch.h b/components/net/lwip-2.1/porting/include/arch/sys_arch.h index 95f7f80a..16b89d75 100644 --- a/components/net/lwip-2.1/porting/include/arch/sys_arch.h +++ b/components/net/lwip-2.1/porting/include/arch/sys_arch.h @@ -33,8 +33,6 @@ #define _LWIP_PORTING_SYS_ARCH_H_ #include -#include "memory_pool.h" -#include "los_mux.h" #ifdef __cplusplus extern "C" { diff --git a/components/net/lwip-2.1/porting/include/lwip/inet.h b/components/net/lwip-2.1/porting/include/lwip/inet.h new file mode 100644 index 00000000..3a77c310 --- /dev/null +++ b/components/net/lwip-2.1/porting/include/lwip/inet.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved. + * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _LWIP_PORTING_INET_H_ +#define _LWIP_PORTING_INET_H_ + +#include +#include +#include_next + +#if LWIP_IPV4 +#define inet_addr_from_ip4addr(target_inaddr, source_ipaddr) \ + ((target_inaddr)->s_addr = ip4_addr_get_u32(source_ipaddr)) +#define inet_addr_to_ip4addr(target_ipaddr, source_inaddr) \ + (ip4_addr_set_u32(target_ipaddr, (source_inaddr)->s_addr)) + +/* directly map this to the lwip internal functions */ +#define inet_addr(cp) ipaddr_addr(cp) +#define inet_aton(cp, addr) ip4addr_aton(cp, (ip4_addr_t*)addr) +#define inet_ntoa(addr) ip4addr_ntoa((const ip4_addr_t*)&(addr)) +#define inet_ntoa_r(addr, buf, buflen) ip4addr_ntoa_r((const ip4_addr_t*)&(addr), buf, buflen) +#endif /* LWIP_IPV4 */ +#if LWIP_IPV6 +#define inet6_addr_from_ip6addr(target_in6addr, source_ip6addr) \ + {(target_in6addr)->s6_addr32[0] = (source_ip6addr)->addr[0]; \ + (target_in6addr)->s6_addr32[1] = (source_ip6addr)->addr[1]; \ + (target_in6addr)->s6_addr32[2] = (source_ip6addr)->addr[2]; \ + (target_in6addr)->s6_addr32[3] = (source_ip6addr)->addr[3];} +#define inet6_addr_to_ip6addr(target_ip6addr, source_in6addr) \ + {(target_ip6addr)->addr[0] = (source_in6addr)->s6_addr32[0]; \ + (target_ip6addr)->addr[1] = (source_in6addr)->s6_addr32[1]; \ + (target_ip6addr)->addr[2] = (source_in6addr)->s6_addr32[2]; \ + (target_ip6addr)->addr[3] = (source_in6addr)->s6_addr32[3]; \ + ip6_addr_clear_zone(target_ip6addr);} +#endif /* LWIP_IPV6 */ + +#endif /* _LWIP_PORTING_INET_H_ */ diff --git a/components/net/lwip-2.1/porting/include/lwip/lwipopts.h b/components/net/lwip-2.1/porting/include/lwip/lwipopts.h index 7d077758..ab54f69a 100644 --- a/components/net/lwip-2.1/porting/include/lwip/lwipopts.h +++ b/components/net/lwip-2.1/porting/include/lwip/lwipopts.h @@ -134,8 +134,7 @@ #define LWIP_NETIF_LOOPBACK 1 #define LWIP_POSIX_SOCKETS_IO_NAMES 0 #define LWIP_RAW 1 -#define CONFIG_NFILE_DESCRIPTORS 1 -#define LWIP_SOCKET_OFFSET CONFIG_NFILE_DESCRIPTORS +#define LWIP_SOCKET_OFFSET FAT_MAX_OPEN_FILES #define LWIP_SO_RCVBUF 1 #define LWIP_SO_RCVTIMEO 1 #define LWIP_SO_SNDTIMEO 1 diff --git a/components/net/lwip-2.1/porting/include/netdb.h b/components/net/lwip-2.1/porting/include/lwip/netdb.h similarity index 88% rename from components/net/lwip-2.1/porting/include/netdb.h rename to components/net/lwip-2.1/porting/include/lwip/netdb.h index 5043cf0a..aea2dbc9 100644 --- a/components/net/lwip-2.1/porting/include/netdb.h +++ b/components/net/lwip-2.1/porting/include/lwip/netdb.h @@ -1,39 +1,38 @@ -/* - * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved. - * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the copyright holder nor the names of its contributors may be used - * to endorse or promote products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef __LITEOS_NETDB_PORTING_H__ -#define __LITEOS_NETDB_PORTING_H__ - -#include "lwip/netdb.h" - -struct hostent *gethostbyname(const char *name); - -#endif // __LITEOS_NETDB_PORTING_H__ \ No newline at end of file +/* + * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved. + * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _LWIP_PORTING_NETDB_H_ +#define _LWIP_PORTING_NETDB_H_ + +#include +#include_next + +#endif /* _LWIP_PORTING_NETDB_H_ */ diff --git a/components/net/lwip-2.1/porting/include/lwip/netif.h b/components/net/lwip-2.1/porting/include/lwip/netif.h index 421a5fb6..1e57b768 100644 --- a/components/net/lwip-2.1/porting/include/lwip/netif.h +++ b/components/net/lwip-2.1/porting/include/lwip/netif.h @@ -32,6 +32,9 @@ #ifndef _LWIP_PORTING_NETIF_H_ #define _LWIP_PORTING_NETIF_H_ +#include +#include + #define netif_find netifapi_netif_find_by_name #if LWIP_DHCPS @@ -39,12 +42,11 @@ LWIP_NETIF_CLIENT_DATA_INDEX_DHCPS #endif -#define LWIP_NETIF_FULLNAME 16 #define linkoutput linkoutput; \ void (*drv_send)(struct netif *netif, struct pbuf *p); \ u8_t (*drv_set_hwaddr)(struct netif *netif, u8_t *addr, u8_t len); \ void (*drv_config)(struct netif *netif, u32_t config_flags, u8_t setBit); \ - char full_name[LWIP_NETIF_FULLNAME]; \ + char full_name[IFNAMSIZ]; \ u16_t link_layer_type #include_next #undef linkoutput @@ -52,7 +54,7 @@ #undef LWIP_NETIF_CLIENT_DATA_INDEX_DHCP #endif -#include // For ETHARP_HWADDR_LEN, by `hieth-sf src/interface.c' and `wal/wal_net.c' +#include #ifdef __cplusplus extern "C" { @@ -60,9 +62,9 @@ extern "C" { // redefine NETIF_NAMESIZE which was defined in netif.h #undef NETIF_NAMESIZE -#define NETIF_NAMESIZE LWIP_NETIF_FULLNAME +#define NETIF_NAMESIZE IFNAMSIZ -#define LOOPBACK_IF 0 // 772 +#define LOOPBACK_IF 0 #define ETHERNET_DRIVER_IF 1 #define WIFI_DRIVER_IF 801 #define BT_PROXY_IF 802 diff --git a/components/net/lwip-2.1/porting/include/sys/socket.h b/components/net/lwip-2.1/porting/include/lwip/sockets.h similarity index 56% rename from components/net/lwip-2.1/porting/include/sys/socket.h rename to components/net/lwip-2.1/porting/include/lwip/sockets.h index c5f27a60..3ff28693 100644 --- a/components/net/lwip-2.1/porting/include/sys/socket.h +++ b/components/net/lwip-2.1/porting/include/lwip/sockets.h @@ -1,79 +1,83 @@ -/* - * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved. - * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the copyright holder nor the names of its contributors may be used - * to endorse or promote products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _SYS_SOCKET_PORTING_H -#define _SYS_SOCKET_PORTING_H - -#include "lwip/sockets.h" - -#ifdef __cplusplus -extern "C" { -#endif - -int socket (int, int, int); - -int bind (int, const struct sockaddr *, socklen_t); -int connect (int, const struct sockaddr *, socklen_t); -int listen (int, int); -int accept (int, struct sockaddr *__restrict, socklen_t *__restrict); - -int getsockname (int, struct sockaddr *__restrict, socklen_t *__restrict); -int getpeername (int, struct sockaddr *__restrict, socklen_t *__restrict); - -ssize_t send (int, const void *, size_t, int); -ssize_t recv (int, void *, size_t, int); -ssize_t sendto (int, const void *, size_t, int, const struct sockaddr *, socklen_t); -ssize_t recvfrom (int, void *__restrict, size_t, int, struct sockaddr *__restrict, socklen_t *__restrict); -ssize_t sendmsg (int, const struct msghdr *, int); -ssize_t recvmsg (int, struct msghdr *, int); - -int getsockopt (int, int, int, void *__restrict, socklen_t *__restrict); -int setsockopt (int, int, int, const void *, socklen_t); - -const char *inet_ntop(int af, const void *src, char *dst, socklen_t size); -int inet_pton(int af, const char *src, void *dst); - -int shutdown (int, int); -int closesocket(int sockfd); - -int ioctlsocket(int s, long cmd, void *argp); - -#if LWIP_SOCKET_SELECT -int select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, struct timeval *timeout); -#endif -#if LWIP_SOCKET_POLL -int poll(struct pollfd *fds, nfds_t nfds, int timeout); -#endif - -#ifdef __cplusplus -} -#endif -#endif +/* + * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved. + * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _LWIP_PORTING_SOCKETS_H_ +#define _LWIP_PORTING_SOCKETS_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include_next +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#if FD_SETSIZE < (LWIP_SOCKET_OFFSET + MEMP_NUM_NETCONN) +#error "external FD_SETSIZE too small for number of sockets" +#else +#define LWIP_SELECT_MAXNFDS FD_SETSIZE +#endif + +#if IOV_MAX > 0xFFFF +#error "IOV_MAX larger than supported by LwIP" +#endif + +#if LWIP_UDP && LWIP_UDPLITE +#define UDPLITE_SEND_CSCOV 0x01 /* sender checksum coverage */ +#define UDPLITE_RECV_CSCOV 0x02 /* minimal receiver checksum coverage */ +#endif + +// For BSD 4.4 socket sa_len compatibility +#define DF_NADDR(addr) +#define SA_LEN(addr, _) (IP_IS_V4_VAL(addr) ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6)) +#define sa_len sa_data[0] * 0 + SA_LEN(naddr, _) +#define sin_len sin_zero[0] +#define sin6_len sin6_addr.s6_addr[0] + +// for sockets.c, TCP_KEEPALIVE is not supported currently +#define TCP_KEEPALIVE 0xFF +#define SIN_ZERO_LEN 8 + +int closesocket(int sockfd); +int ioctlsocket(int s, long cmd, void *argp); + +#ifdef __cplusplus +} +#endif + +#endif /* _LWIP_PORTING_SOCKETS_H_ */ diff --git a/components/net/lwip-2.1/porting/src/netdb_porting.c b/components/net/lwip-2.1/porting/src/netdb_porting.c index df905f71..804d7e07 100644 --- a/components/net/lwip-2.1/porting/src/netdb_porting.c +++ b/components/net/lwip-2.1/porting/src/netdb_porting.c @@ -29,7 +29,7 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "netdb.h" +#include "lwip/netdb.h" struct hostent *gethostbyname(const char *name) { diff --git a/components/net/test/lwip_test.h b/components/net/test/lwip_test.h index a873a59d..9b0894aa 100644 --- a/components/net/test/lwip_test.h +++ b/components/net/test/lwip_test.h @@ -32,8 +32,10 @@ #ifndef LWIP_TEST_H #define LWIP_TEST_H +#include "lwip/arch.h" +#include "lwip/sockets.h" #include -#include "log.h" +#include #include "securec.h" #ifdef __cplusplus diff --git a/components/net/test/net_socket_test_002.c b/components/net/test/net_socket_test_002.c index 7abdfb13..2a225872 100644 --- a/components/net/test/net_socket_test_002.c +++ b/components/net/test/net_socket_test_002.c @@ -30,14 +30,18 @@ */ #include "lwip_test.h" +#include "lwipopts.h" +#include +#include #define MSG "Hi, I am UDP" #define TEST_CASE 120 static char g_buf[BUF_SIZE + 1] = { 0 }; -int UdpTest(void) +void UdpTestTask(void *p) { + (void)p; LogPrintln("net_socket_test_002.c enter"); g_testCase = TEST_CASE; int sfd; @@ -111,6 +115,13 @@ int UdpTest(void) /* close socket */ ret = closesocket(sfd); LWIP_ASSERT("socket invalid param.", ret != -1); - return LWIP_TEST_RET_OK; + return; } +int UdpTest() +{ + int ret = sys_thread_new("udp_test", UdpTestTask, NULL, + STACK_TEST_SIZE, TCPIP_THREAD_PRIO); + ICUNIT_ASSERT_NOT_EQUAL(ret, -1, 23); + return ret; +} diff --git a/components/net/test/net_socket_test_003.c b/components/net/test/net_socket_test_003.c index 120d5822..86854d2e 100644 --- a/components/net/test/net_socket_test_003.c +++ b/components/net/test/net_socket_test_003.c @@ -39,7 +39,6 @@ #define TEST_CASE 130 static char g_buf[BUF_SIZE + 1] = { 0 }; -extern sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stackSize, int prio); static int SampleTcpServer() { diff --git a/components/net/test/net_socket_test_007.c b/components/net/test/net_socket_test_007.c index 70845d1f..bb4d6c9d 100644 --- a/components/net/test/net_socket_test_007.c +++ b/components/net/test/net_socket_test_007.c @@ -40,7 +40,6 @@ static char g_buf_temp[BUF_SIZE + 1] = { 0 }; #define SEND_UDP_COUNT 10000 // send count #define TEST_CASE 170 -extern sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stackSize, int prio); static void UdpTestMoreTask(void *p) { (void)p; diff --git a/components/net/test/net_socket_test_008.c b/components/net/test/net_socket_test_008.c index 6248d53d..f46106a8 100644 --- a/components/net/test/net_socket_test_008.c +++ b/components/net/test/net_socket_test_008.c @@ -41,8 +41,6 @@ static char g_serverSendBuf[BUF_SIZE + 1] = { 0 }; static char g_clientRecvBuf[BUF_SIZE + 1] = { 0 }; -extern sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stackSize, int prio); - static void InitMsgBuf() { int i; diff --git a/components/net/test/net_socket_test_009.c b/components/net/test/net_socket_test_009.c index 282d1a10..95b678f4 100644 --- a/components/net/test/net_socket_test_009.c +++ b/components/net/test/net_socket_test_009.c @@ -43,8 +43,6 @@ static char g_buf[BUF_SIZE + 1] = { 0 }; -extern sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stackSize, int prio); - static int SampleTcpServer() { #if LWIP_SOCKET_SELECT diff --git a/components/net/test/net_socket_test_010.c b/components/net/test/net_socket_test_010.c index 9b5d8434..354cbbd8 100644 --- a/components/net/test/net_socket_test_010.c +++ b/components/net/test/net_socket_test_010.c @@ -43,8 +43,6 @@ #define TIME_OUT (1000 * 10) // timeout 10s static char g_buf[BUF_SIZE + 1] = { 0 }; -extern sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stackSize, int prio); - static int SampleTcpServer() { #if LWIP_SOCKET_POLL diff --git a/components/net/test/net_socket_test_011.c b/components/net/test/net_socket_test_011.c index e324143b..32174654 100644 --- a/components/net/test/net_socket_test_011.c +++ b/components/net/test/net_socket_test_011.c @@ -310,8 +310,9 @@ static struct netif *CreateBtNetIf() return btNetif; } -int UdpTestNetif(void) +static void UdpTestNetifTask(void *p) { + (void)p; LogPrintln("net_socket_test_011.c enter"); g_testCase = TEST_CASE; int sfd; @@ -363,7 +364,15 @@ int UdpTestNetif(void) /* close socket */ ret = closesocket(sfd); LWIP_ASSERT("socket invalid param.", ret != -1); - return LWIP_TEST_RET_OK; + return; +} + +int UdpTestNetif() +{ + int ret = sys_thread_new("udp_test_netif", UdpTestNetifTask, NULL, + STACK_TEST_SIZE, TCPIP_THREAD_PRIO); + ICUNIT_ASSERT_NOT_EQUAL(ret, -1, 23); + return ret; } static void ArpPackageProc(struct netif *netif, struct pbuf *p) diff --git a/components/net/test/net_socket_test_012.c b/components/net/test/net_socket_test_012.c index 63073535..3385f337 100755 --- a/components/net/test/net_socket_test_012.c +++ b/components/net/test/net_socket_test_012.c @@ -45,7 +45,6 @@ static int g_portClient = STACK_PORT_TCP_DUP_START; static char g_bufServer[BUF_SIZE + 1] = { 0 }; static char g_bufClient[BUF_SIZE + 1] = { 0 }; -extern sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stackSize, int prio); static int SampleTcpServer() { diff --git a/components/net/test/net_socket_test_013.c b/components/net/test/net_socket_test_013.c index 325393ac..ccf7ba3b 100755 --- a/components/net/test/net_socket_test_013.c +++ b/components/net/test/net_socket_test_013.c @@ -38,8 +38,6 @@ #define STACK_PORT_TCP_LONG 2231 #define TCP_LONG_BUF_SIZE (2 * 1024) -extern sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stackSize, int prio); - static int SampleTcpServer() { int sfd, lsfd; diff --git a/components/net/test/test_main.c b/components/net/test/test_main.c index 125b9dd0..2ea6b700 100644 --- a/components/net/test/test_main.c +++ b/components/net/test/test_main.c @@ -119,7 +119,7 @@ static void LwipTestTimeoutCallback(void const *argument) osTimerId_t g_lwipTestTimerId = NULL; -void LwipTestStartTimer(uint32 timeout) +void LwipTestStartTimer(uint32_t timeout) { osStatus_t status; if (g_lwipTestTimerId != NULL) { diff --git a/kal/cmsis/cmsis_liteos2.c b/kal/cmsis/cmsis_liteos2.c index 9f679f10..bc5d5afd 100755 --- a/kal/cmsis/cmsis_liteos2.c +++ b/kal/cmsis/cmsis_liteos2.c @@ -58,7 +58,12 @@ static osKernelState_t g_kernelState; extern BOOL g_taskScheduled; -#define LOS_PRIORITY_WIN 8 +/* LOSCFG_BASE_CORE_TSK_DEFAULT_PRIO <---> osPriorityNormal */ +#define LOS_PRIORITY(cmsisPriority) (LOSCFG_BASE_CORE_TSK_DEFAULT_PRIO - ((cmsisPriority) - osPriorityNormal)) +#define CMSIS_PRIORITY(losPriority) (osPriorityNormal + (LOSCFG_BASE_CORE_TSK_DEFAULT_PRIO - (losPriority))) + +/* OS_TASK_PRIORITY_HIGHEST and OS_TASK_PRIORITY_LOWEST is reserved for internal TIMER and IDLE task use only. */ +#define ISVALID_LOS_PRIORITY(losPrio) ((losPrio) > OS_TASK_PRIORITY_HIGHEST && (losPrio) < OS_TASK_PRIORITY_LOWEST) const osVersion_t g_stLosVersion = { 001, 001 }; @@ -74,8 +79,6 @@ const osVersion_t g_stLosVersion = { 001, 001 }; #define KERNEL_ID "HUAWEI-LiteOS" // ==== Kernel Management Functions ==== -uint32_t osTaskStackWaterMarkGet(UINT32 taskID); - osStatus_t osKernelInitialize(void) { @@ -285,23 +288,24 @@ osThreadId_t osThreadNew(osThreadFunc_t func, void *argument, const osThreadAttr UINT32 uwTid; UINT32 uwRet; LosTaskCB *pstTaskCB = NULL; - TSK_INIT_PARAM_S stTskInitParam; + TSK_INIT_PARAM_S stTskInitParam = {NULL}; + UINT16 usPriority; - if (OS_INT_ACTIVE) { - return NULL; - } - - if ((attr == NULL) || (func == NULL) || (attr->priority < osPriorityLow1) || - (attr->priority > osPriorityAboveNormal6)) { + if (OS_INT_ACTIVE || (func == NULL)) { + return (osThreadId_t)NULL; + } + + usPriority = attr ? LOS_PRIORITY(attr->priority) : LOSCFG_BASE_CORE_TSK_DEFAULT_PRIO; + if (!ISVALID_LOS_PRIORITY(usPriority)) { + /* unsupported priority */ return (osThreadId_t)NULL; } - (void)memset_s(&stTskInitParam, sizeof(TSK_INIT_PARAM_S), 0, sizeof(TSK_INIT_PARAM_S)); stTskInitParam.pfnTaskEntry = (TSK_ENTRY_FUNC)func; stTskInitParam.uwArg = (UINT32)argument; - stTskInitParam.uwStackSize = attr->stack_size; - stTskInitParam.pcName = (CHAR *)attr->name; - stTskInitParam.usTaskPrio = OS_TASK_PRIORITY_LOWEST - ((UINT16)(attr->priority) - LOS_PRIORITY_WIN); /* 0~31 */ + stTskInitParam.uwStackSize = attr ? attr->stack_size : LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE; + stTskInitParam.pcName = (CHAR *)(attr ? attr->name : "[NULL]"); + stTskInitParam.usTaskPrio = usPriority; uwRet = LOS_TaskCreate(&uwTid, &stTskInitParam); @@ -457,12 +461,12 @@ osStatus_t osThreadSetPriority(osThreadId_t thread_id, osPriority_t priority) return osErrorParameter; } - if (priority < osPriorityLow1 || priority > osPriorityAboveNormal6) { + usPriority = LOS_PRIORITY(priority); + if (!ISVALID_LOS_PRIORITY(usPriority)) { return osErrorParameter; } pstTaskCB = (LosTaskCB *)thread_id; - usPriority = OS_TASK_PRIORITY_LOWEST - ((UINT16)priority - LOS_PRIORITY_WIN); uwRet = LOS_TaskPriSet(pstTaskCB->taskID, usPriority); switch (uwRet) { case LOS_ERRNO_TSK_PRIOR_ERROR: @@ -495,7 +499,7 @@ osPriority_t osThreadGetPriority(osThreadId_t thread_id) return osPriorityError; } - return (osPriority_t)(OS_TASK_PRIORITY_LOWEST - (usRet - LOS_PRIORITY_WIN)); + return (osPriority_t)CMSIS_PRIORITY(usRet); } @@ -865,7 +869,7 @@ uint32_t osEventFlagsGet(osEventFlagsId_t ef_id) uint32_t rflags; if (pstEventCB == NULL) { - return (uint32_t)osFlagsErrorParameter; + return 0; } uwIntSave = LOS_IntLock(); diff --git a/kal/posix/include/limits.h b/kal/posix/include/limits.h index f77e3ed0..eefb2472 100644 --- a/kal/posix/include/limits.h +++ b/kal/posix/include/limits.h @@ -7,6 +7,8 @@ #define PATH_MAX 256 #define MQ_PRIO_MAX 1 #define PTHREAD_STACK_MIN LOSCFG_BASE_CORE_TSK_MIN_STACK_SIZE +#define IOV_MAX 1024 +#define SSIZE_MAX LONG_MAX #include_next #else diff --git a/kal/posix/musl_src/network/h_errno.c b/kal/posix/musl_src/network/h_errno.c new file mode 100644 index 00000000..8c7082c2 --- /dev/null +++ b/kal/posix/musl_src/network/h_errno.c @@ -0,0 +1,9 @@ +#include + +#undef h_errno +int h_errno; + +int *__h_errno_location(void) +{ + return &h_errno; +} diff --git a/kernel/arch/arm/cortex-m3/keil/los_interrupt.c b/kernel/arch/arm/cortex-m3/keil/los_interrupt.c index 83ca2882..85014297 100644 --- a/kernel/arch/arm/cortex-m3/keil/los_interrupt.c +++ b/kernel/arch/arm/cortex-m3/keil/los_interrupt.c @@ -35,6 +35,7 @@ #include "los_context.h" #include "los_arch_interrupt.h" #include "los_debug.h" +#include "los_hook.h" #include "los_task.h" #include "los_sched.h" #include "los_memory.h" @@ -180,6 +181,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) hwiIndex = HalIntNumGet(); + OsHookCall(LOS_HOOK_TYPE_ISR_ENTER, hwiIndex); + HalPreInterruptHandler(hwiIndex); #if (OS_HWI_WITH_ARG == 1) @@ -194,6 +197,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) HalAftInterruptHandler(hwiIndex); + OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); + intSave = LOS_IntLock(); g_intCount--; LOS_IntRestore(intSave); diff --git a/kernel/arch/arm/cortex-m33/gcc/los_interrupt.c b/kernel/arch/arm/cortex-m33/gcc/los_interrupt.c index 9817ca8b..b43c3a03 100644 --- a/kernel/arch/arm/cortex-m33/gcc/los_interrupt.c +++ b/kernel/arch/arm/cortex-m33/gcc/los_interrupt.c @@ -34,6 +34,7 @@ #include "los_context.h" #include "los_arch_interrupt.h" #include "los_debug.h" +#include "los_hook.h" #include "los_task.h" #include "los_sched.h" #include "los_memory.h" @@ -169,6 +170,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) hwiIndex = HalIntNumGet(); + OsHookCall(LOS_HOOK_TYPE_ISR_ENTER, hwiIndex); + HalPreInterruptHandler(hwiIndex); #if (OS_HWI_WITH_ARG == 1) @@ -183,6 +186,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) HalAftInterruptHandler(hwiIndex); + OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); + intSave = LOS_IntLock(); g_intCount--; LOS_IntRestore(intSave); diff --git a/kernel/arch/arm/cortex-m4/gcc/los_interrupt.c b/kernel/arch/arm/cortex-m4/gcc/los_interrupt.c index 159eba03..b96b494b 100644 --- a/kernel/arch/arm/cortex-m4/gcc/los_interrupt.c +++ b/kernel/arch/arm/cortex-m4/gcc/los_interrupt.c @@ -34,6 +34,7 @@ #include "los_context.h" #include "los_arch_interrupt.h" #include "los_debug.h" +#include "los_hook.h" #include "los_task.h" #include "los_sched.h" #include "los_memory.h" @@ -179,6 +180,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) hwiIndex = HalIntNumGet(); + OsHookCall(LOS_HOOK_TYPE_ISR_ENTER, hwiIndex); + HalPreInterruptHandler(hwiIndex); #if (OS_HWI_WITH_ARG == 1) @@ -193,6 +196,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) HalAftInterruptHandler(hwiIndex); + OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); + intSave = LOS_IntLock(); g_intCount--; LOS_IntRestore(intSave); diff --git a/kernel/arch/arm/cortex-m4/iar/los_interrupt.c b/kernel/arch/arm/cortex-m4/iar/los_interrupt.c index 35f5f1bc..88fec1ca 100644 --- a/kernel/arch/arm/cortex-m4/iar/los_interrupt.c +++ b/kernel/arch/arm/cortex-m4/iar/los_interrupt.c @@ -199,11 +199,11 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) HalAftInterruptHandler(hwiIndex); + OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); + intSave = LOS_IntLock(); g_intCount--; LOS_IntRestore(intSave); - - OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); } /* **************************************************************************** diff --git a/kernel/arch/arm/cortex-m7/gcc/los_interrupt.c b/kernel/arch/arm/cortex-m7/gcc/los_interrupt.c index d3454940..23999f6b 100644 --- a/kernel/arch/arm/cortex-m7/gcc/los_interrupt.c +++ b/kernel/arch/arm/cortex-m7/gcc/los_interrupt.c @@ -34,6 +34,7 @@ #include "los_context.h" #include "los_arch_interrupt.h" #include "los_debug.h" +#include "los_hook.h" #include "los_task.h" #include "los_sched.h" #include "los_memory.h" @@ -169,6 +170,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) hwiIndex = HalIntNumGet(); + OsHookCall(LOS_HOOK_TYPE_ISR_ENTER, hwiIndex); + HalPreInterruptHandler(hwiIndex); #if (OS_HWI_WITH_ARG == 1) @@ -183,6 +186,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) HalAftInterruptHandler(hwiIndex); + OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); + intSave = LOS_IntLock(); g_intCount--; LOS_IntRestore(intSave); diff --git a/kernel/arch/arm/cortex-m7/iar/los_interrupt.c b/kernel/arch/arm/cortex-m7/iar/los_interrupt.c index fb05b4db..1950757d 100644 --- a/kernel/arch/arm/cortex-m7/iar/los_interrupt.c +++ b/kernel/arch/arm/cortex-m7/iar/los_interrupt.c @@ -195,11 +195,11 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) HalAftInterruptHandler(hwiIndex); + OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); + intSave = LOS_IntLock(); g_intCount--; LOS_IntRestore(intSave); - - OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); } /* **************************************************************************** diff --git a/kernel/arch/risc-v/riscv32/gcc/los_interrupt.c b/kernel/arch/risc-v/riscv32/gcc/los_interrupt.c index 524b0193..34c4d250 100644 --- a/kernel/arch/risc-v/riscv32/gcc/los_interrupt.c +++ b/kernel/arch/risc-v/riscv32/gcc/los_interrupt.c @@ -37,6 +37,7 @@ #include "los_task.h" #include "los_sched.h" #include "los_debug.h" +#include "los_hook.h" #include "riscv_hal.h" #ifdef __cplusplus @@ -121,12 +122,16 @@ __attribute__((section(".interrupt.text"))) VOID HalHwiInterruptDone(HWI_HANDLE_ { g_intCount++; + OsHookCall(LOS_HOOK_TYPE_ISR_ENTER, hwiNum); + HWI_HANDLE_FORM_S *hwiForm = &g_hwiForm[hwiNum]; HwiProcFunc func = (HwiProcFunc)(hwiForm->pfnHook); func(hwiForm->uwParam); ++g_hwiFormCnt[hwiNum]; + OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiNum); + g_intCount--; } diff --git a/targets/cortex-m3_stm32f103_simulator_keil/project/los_demo.uvproj b/targets/cortex-m3_stm32f103_simulator_keil/project/los_demo.uvproj index a7e48226..5f7c8a69 100755 --- a/targets/cortex-m3_stm32f103_simulator_keil/project/los_demo.uvproj +++ b/targets/cortex-m3_stm32f103_simulator_keil/project/los_demo.uvproj @@ -512,6 +512,11 @@ 1 ..\..\..\utils\los_error.c + + los_hook.c + 1 + ..\..\..\utils\los_hook.c + los_context.c 1