From a8bb2c77c173ddf9bb35fe34c09fa4cd1c872b42 Mon Sep 17 00:00:00 2001 From: shaojinchun Date: Mon, 8 Mar 2021 14:06:53 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=80=81=E8=AE=BF=E9=97=AE=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E6=97=B6=E7=9A=84=E4=B8=80=E5=A4=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/lwp/lwp_user_mm.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/components/lwp/lwp_user_mm.c b/components/lwp/lwp_user_mm.c index 41d98ddb41..8bc8522d2e 100644 --- a/components/lwp/lwp_user_mm.c +++ b/components/lwp/lwp_user_mm.c @@ -502,21 +502,21 @@ int lwp_user_accessable(void *addr, size_t size) addr_start = addr; addr_end = (void*)((char*)addr + size); - #ifdef ARCH_RISCV64 - if(addr_start < (void *)USER_VADDR_START) - { - return 0; - } - #else - if (addr_start >= (void*)KERNEL_VADDR_START) - { - return 0; - } - if (addr_start > (void *)KERNEL_VADDR_START) - { - return 0; - } - #endif +#ifdef ARCH_RISCV64 + if(addr_start < (void *)USER_VADDR_START) + { + return 0; + } +#else + if (addr_start >= (void*)KERNEL_VADDR_START) + { + return 0; + } + if (addr_end > (void *)KERNEL_VADDR_START) + { + return 0; + } +#endif mmu_info = &lwp->mmu_info; next_page = (void *)(((size_t)addr_start + ARCH_PAGE_SIZE) & ~(ARCH_PAGE_SIZE - 1)); -- Gitee From 92a1718f8acf9d72d32b7177f78e9f7b3796aa86 Mon Sep 17 00:00:00 2001 From: shaojinchun Date: Mon, 8 Mar 2021 11:24:08 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=AF=8F=E4=B8=AAlwp?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E5=AE=9E=E4=BE=8B=E7=9A=84=E5=86=85=E6=A0=B8?= =?UTF-8?q?=E6=80=81=E6=A0=88=E5=A4=A7=E5=B0=8F=E4=B8=8D=E4=B8=80=E8=87=B4?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/lwp/lwp.c | 4 +++- components/lwp/lwp_syscall.c | 10 +++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/components/lwp/lwp.c b/components/lwp/lwp.c index 3c0312566a..06c5276dab 100644 --- a/components/lwp/lwp.c +++ b/components/lwp/lwp.c @@ -880,6 +880,8 @@ struct rt_lwp *lwp_self(void) return RT_NULL; } +#define LWP_TASK_STACK_SIZE (16 * 1024) + #ifdef RT_USING_GDBSERVER pid_t lwp_execve(char *filename, int debug, int argc, char **argv, char **envp) #else @@ -946,7 +948,7 @@ pid_t lwp_execve(char *filename, int argc, char **argv, char **envp) thread_name = thread_name ? thread_name + 1 : filename; thread = rt_thread_create(thread_name, lwp_thread_entry, RT_NULL, - 1024 * 16, 25, 200); + LWP_TASK_STACK_SIZE, 25, 200); if (thread != RT_NULL) { struct rt_lwp *self_lwp; diff --git a/components/lwp/lwp_syscall.c b/components/lwp/lwp_syscall.c index ae6b58fe0c..6eb2dd4663 100644 --- a/components/lwp/lwp_syscall.c +++ b/components/lwp/lwp_syscall.c @@ -1302,7 +1302,7 @@ long sys_clone(void *arg[]) thread = rt_thread_create((const char *)"pthread", RT_NULL, RT_NULL, - ALLOC_KERNEL_STACK_SIZE, + self->stack_size, self->init_priority, self->init_tick); if (!thread) @@ -1493,7 +1493,7 @@ int sys_fork(void) thread = rt_thread_create((const char *)thread_name, RT_NULL, RT_NULL, - ALLOC_KERNEL_STACK_SIZE, + self_thread->stack_size, self_thread->init_priority, self_thread->init_tick); if (!thread) @@ -1523,15 +1523,15 @@ int sys_fork(void) rt_hw_interrupt_enable(level); /* copy origin stack */ - rt_memcpy(thread->stack_addr, self_thread->stack_addr, ALLOC_KERNEL_STACK_SIZE); + rt_memcpy(thread->stack_addr, self_thread->stack_addr, self_thread->stack_size); lwp_tid_set_thread(tid, thread); level = rt_hw_interrupt_disable(); user_stack = lwp_get_user_sp(); rt_hw_interrupt_enable(level); - tid = lwp_set_thread_context((void *)((char *)thread->stack_addr + ALLOC_KERNEL_STACK_SIZE), - (void *)((char *)self_thread->stack_addr + ALLOC_KERNEL_STACK_SIZE), user_stack, &thread->sp, tid); + tid = lwp_set_thread_context((void *)((char *)thread->stack_addr + thread->stack_size), + (void *)((char *)self_thread->stack_addr + self_thread->stack_size), user_stack, &thread->sp, tid); if (tid) { level = rt_hw_interrupt_disable(); -- Gitee From 26b3ebbe62988ac338185d4755a19fff615152b4 Mon Sep 17 00:00:00 2001 From: shaojinchun Date: Mon, 8 Mar 2021 14:23:22 +0800 Subject: [PATCH 3/3] =?UTF-8?q?lwp=20thread=E7=9A=84=E5=86=85=E6=A0=B8?= =?UTF-8?q?=E6=A0=88=E6=94=B9=E4=B8=BA=E4=BD=BF=E7=94=A8Kconfig=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/qemu-vexpress-a9/.config | 58 ++++++++++++++++++++++++++++++++- bsp/qemu-vexpress-a9/rtconfig.h | 7 ++++ components/lwp/Kconfig | 5 +++ components/lwp/lwp.c | 2 -- 4 files changed, 69 insertions(+), 3 deletions(-) diff --git a/bsp/qemu-vexpress-a9/.config b/bsp/qemu-vexpress-a9/.config index c54dd55aa6..7ebab35cc1 100644 --- a/bsp/qemu-vexpress-a9/.config +++ b/bsp/qemu-vexpress-a9/.config @@ -335,6 +335,7 @@ CONFIG_RT_LWIP_USING_PING=y # CONFIG_RT_USING_UTEST is not set CONFIG_RT_USING_LWP=y CONFIG_RT_LWP_MAX_NR=30 +CONFIG_LWP_TASK_STACK_SIZE=16384 # CONFIG_RT_USING_GDBSERVER is not set CONFIG_RT_CH_MSG_MAX_NR=1024 CONFIG_RT_LWP_SHM_MAX_NR=64 @@ -464,6 +465,7 @@ CONFIG_LWP_TID_MAX_NR=64 # CONFIG_PKG_USING_QRCODE is not set # CONFIG_PKG_USING_ULOG_EASYFLASH is not set # CONFIG_PKG_USING_ULOG_FILE is not set +# CONFIG_PKG_USING_LOGMGR is not set # CONFIG_PKG_USING_ADBD is not set # CONFIG_PKG_USING_COREMARK is not set # CONFIG_PKG_USING_DHRYSTONE is not set @@ -480,6 +482,8 @@ CONFIG_LWP_TID_MAX_NR=64 # CONFIG_PKG_USING_GBK2UTF8 is not set # CONFIG_PKG_USING_VCONSOLE is not set # CONFIG_PKG_USING_KDB is not set +# CONFIG_PKG_USING_WAMR is not set +# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set # # system packages @@ -519,7 +523,12 @@ CONFIG_LWP_TID_MAX_NR=64 # CONFIG_PKG_USING_UC_MODBUS is not set # CONFIG_PKG_USING_PPOOL is not set # CONFIG_PKG_USING_OPENAMP is not set -# CONFIG_PKG_USING_RT_PRINTF is not set +# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set +# CONFIG_PKG_USING_RT_MEMCPY_CM is not set +# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set +# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set +# CONFIG_PKG_USING_QFPLIB_M3 is not set +# CONFIG_PKG_USING_LPM is not set # # peripheral libraries and drivers @@ -631,6 +640,53 @@ CONFIG_LWP_TID_MAX_NR=64 # CONFIG_PKG_USING_TETRIS is not set # CONFIG_PKG_USING_LWGPS is not set # CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set +# CONFIG_PKG_USING_STATE_MACHINE is not set + +# +# Privated Packages of RealThread +# +# CONFIG_PKG_USING_CODEC is not set +# CONFIG_PKG_USING_PLAYER is not set +# CONFIG_PKG_USING_MPLAYER is not set +# CONFIG_PKG_USING_PERSIMMON_SRC is not set +# CONFIG_PKG_USING_JS_PERSIMMON is not set +# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set + +# +# Network Utilities +# +# CONFIG_PKG_USING_MDNS is not set +# CONFIG_PKG_USING_UPNP is not set +# CONFIG_PKG_USING_WICED is not set +# CONFIG_PKG_USING_CLOUDSDK is not set +# CONFIG_PKG_USING_POWER_MANAGER is not set +# CONFIG_PKG_USING_RT_OTA is not set +# CONFIG_PKG_USING_RDBD_SRC is not set +# CONFIG_PKG_USING_RTINSIGHT is not set +# CONFIG_PKG_USING_SMARTCONFIG is not set +# CONFIG_PKG_USING_RTX is not set +# CONFIG_RT_USING_TESTCASE is not set +# CONFIG_PKG_USING_NGHTTP2 is not set +# CONFIG_PKG_USING_AVS is not set +# CONFIG_PKG_USING_ALI_LINKKIT is not set +# CONFIG_PKG_USING_STS is not set +# CONFIG_PKG_USING_DLMS is not set +# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set +# CONFIG_PKG_USING_ZBAR is not set +# CONFIG_PKG_USING_MCF is not set +# CONFIG_PKG_USING_URPC is not set +# CONFIG_PKG_USING_BSAL is not set +# CONFIG_PKG_USING_DCM is not set +# CONFIG_PKG_USING_EMQ is not set +# CONFIG_PKG_USING_CFGM is not set +# CONFIG_PKG_USING_RT_CMSIS_DAP is not set +# CONFIG_PKG_USING_SMODULE is not set +# CONFIG_PKG_USING_SNFD is not set +# CONFIG_PKG_USING_UDBD is not set +# CONFIG_PKG_USING_BENCHMARK is not set +# CONFIG_PKG_USING_UBJSON is not set +# CONFIG_PKG_USING_DATATYPE is not set +# CONFIG_PKG_USING_FASTFS is not set CONFIG_SOC_VEXPRESS_A9=y CONFIG_RT_USING_UART0=y CONFIG_RT_USING_UART1=y diff --git a/bsp/qemu-vexpress-a9/rtconfig.h b/bsp/qemu-vexpress-a9/rtconfig.h index 109d50a3af..5e10fe7d2a 100644 --- a/bsp/qemu-vexpress-a9/rtconfig.h +++ b/bsp/qemu-vexpress-a9/rtconfig.h @@ -230,6 +230,7 @@ #define RT_USING_LWP #define RT_LWP_MAX_NR 30 +#define LWP_TASK_STACK_SIZE 16384 #define RT_CH_MSG_MAX_NR 1024 #define RT_LWP_SHM_MAX_NR 64 #define LWP_CONSOLE_INPUT_BUFFER_SIZE 1024 @@ -280,6 +281,12 @@ /* games: games run on RT-Thread console */ + +/* Privated Packages of RealThread */ + + +/* Network Utilities */ + #define SOC_VEXPRESS_A9 #define RT_USING_UART0 #define RT_USING_UART1 diff --git a/components/lwp/Kconfig b/components/lwp/Kconfig index 687fd8e2fe..0c0c5a47f6 100644 --- a/components/lwp/Kconfig +++ b/components/lwp/Kconfig @@ -14,6 +14,11 @@ if RT_USING_LWP default 30 endif +config LWP_TASK_STACK_SIZE + int "The lwp thread kernel stack size" + default 16384 + depends on RT_USING_LWP + config RT_USING_GDBSERVER bool "Using gdbserver" default y diff --git a/components/lwp/lwp.c b/components/lwp/lwp.c index 06c5276dab..96de9795e6 100644 --- a/components/lwp/lwp.c +++ b/components/lwp/lwp.c @@ -880,8 +880,6 @@ struct rt_lwp *lwp_self(void) return RT_NULL; } -#define LWP_TASK_STACK_SIZE (16 * 1024) - #ifdef RT_USING_GDBSERVER pid_t lwp_execve(char *filename, int debug, int argc, char **argv, char **envp) #else -- Gitee