From f633fe02c5d479e5f6b578ae6382c6f52eb102d9 Mon Sep 17 00:00:00 2001 From: shaojinchun Date: Thu, 3 Dec 2020 15:50:04 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=A7=A3=E5=86=B3sys=5Fgetaddrinfo?= =?UTF-8?q?=E6=97=B6ai=5Fnext=E6=B2=A1=E6=9C=89=E8=B5=8B=E5=80=BC=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/lwp/lwp_syscall.c | 1 + 1 file changed, 1 insertion(+) diff --git a/components/lwp/lwp_syscall.c b/components/lwp/lwp_syscall.c index 62ebb7d2d9..cda71b09c5 100644 --- a/components/lwp/lwp_syscall.c +++ b/components/lwp/lwp_syscall.c @@ -1276,6 +1276,7 @@ int sys_getaddrinfo(const char *nodename, const char *servname, const struct mus /* set up addrinfo */ res->ai_family = k_res->ai_family; res->ai_flags = k_res->ai_flags; + res->ai_next = NULL; if (hints != NULL) { -- Gitee From b8b8dcca9f17e777f642d509f051ac036ed7c603 Mon Sep 17 00:00:00 2001 From: shaojinchun Date: Thu, 3 Dec 2020 15:50:17 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=9B=E7=A8=8B?= =?UTF-8?q?=E9=80=80=E5=87=BA=E6=97=B6=EF=BC=8C=E5=85=88=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=9C=AA=E5=85=B3=E9=97=AD=E6=96=87=E4=BB=B6=EF=BC=8C=E5=86=8D?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=9C=AA=E9=87=8A=E6=94=BE=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?,=20=E6=B3=A8=E6=84=8F=E4=BC=9A=E5=A2=9E=E5=8A=A0=E5=AF=B9idle?= =?UTF-8?q?=E6=A0=88=E7=9A=84=E5=8E=8B=E5=8A=9B(=E8=A6=81=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=88=B04096)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/lwp/lwp_pid.c | 116 +++++++++++++++++++-------------------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/components/lwp/lwp_pid.c b/components/lwp/lwp_pid.c index 5b23c1874e..1e183a9c11 100644 --- a/components/lwp/lwp_pid.c +++ b/components/lwp/lwp_pid.c @@ -119,6 +119,63 @@ out: return lwp; } +static void lwp_user_obj_free(struct rt_lwp *lwp) +{ + rt_base_t level = 0; + struct rt_list_node *list = RT_NULL, *node = RT_NULL; + struct rt_object *object = RT_NULL; + + list = &(lwp->object_list), node = list->next; + + level = rt_hw_interrupt_disable(); + for ( ;list != node; ) + { + object = rt_list_entry(node, struct rt_object, lwp_obj_list); + node = node->next; + + /* remove from kernel object list */ + switch (object->type) + { + case RT_Object_Class_Thread: + { + rt_thread_t tid = (rt_thread_t)object; + if (tid->stat != RT_THREAD_CLOSE) + { + rt_thread_delete(tid); + } + break; + } + case RT_Object_Class_Semaphore: + rt_sem_delete((rt_sem_t)object); + break; + case RT_Object_Class_Mutex: + rt_mutex_delete((rt_mutex_t)object); + break; + case RT_Object_Class_Event: + rt_event_delete((rt_event_t)object); + break; + case RT_Object_Class_MailBox: + rt_mb_delete((rt_mailbox_t)object); + break; + case RT_Object_Class_MessageQueue: + rt_mq_delete((rt_mq_t)object); + break; + case RT_Object_Class_Device: + rt_device_close((rt_device_t)object); + break; + case RT_Object_Class_Timer: + rt_timer_delete((rt_timer_t)object); + break; + case RT_Object_Class_Channel: + break; + default: + LOG_E("input object type(%d) error", object->type); + break; + } + } + rt_hw_interrupt_enable(level); +} + void lwp_free(struct rt_lwp* lwp) { rt_base_t level; @@ -142,6 +199,7 @@ void lwp_free(struct rt_lwp* lwp) { /* auto clean fds */ __exit_files(lwp); + lwp_user_obj_free(lwp); rt_free(lwp->fdt.fds); lwp->fdt.fds = RT_NULL; } @@ -224,63 +282,6 @@ void lwp_free(struct rt_lwp* lwp) rt_hw_interrupt_enable(level); } -void lwp_user_obj_free(struct rt_lwp *lwp) -{ - rt_base_t level; - struct rt_list_node *list = RT_NULL, *node = RT_NULL; - struct rt_object *object = RT_NULL; - - list = &(lwp->object_list), node = list->next; - - level = rt_hw_interrupt_disable(); - for ( ;list != node; ) - { - object = rt_list_entry(node, struct rt_object, lwp_obj_list); - node = node->next; - - /* remove from kernel object list */ - switch (object->type) - { - case RT_Object_Class_Thread: - { - rt_thread_t tid = (rt_thread_t)object; - if (tid->stat != RT_THREAD_CLOSE) - { - rt_thread_delete(tid); - } - break; - } - case RT_Object_Class_Semaphore: - rt_sem_delete((rt_sem_t)object); - break; - case RT_Object_Class_Mutex: - rt_mutex_delete((rt_mutex_t)object); - break; - case RT_Object_Class_Event: - rt_event_delete((rt_event_t)object); - break; - case RT_Object_Class_MailBox: - rt_mb_delete((rt_mailbox_t)object); - break; - case RT_Object_Class_MessageQueue: - rt_mq_delete((rt_mq_t)object); - break; - case RT_Object_Class_Device: - rt_device_close((rt_device_t)object); - break; - case RT_Object_Class_Timer: - rt_timer_delete((rt_timer_t)object); - break; - case RT_Object_Class_Channel: - break; - default: - LOG_E("input object type(%d) error", object->type); - break; - } - } - rt_hw_interrupt_enable(level); -} - void lwp_ref_inc(struct rt_lwp *lwp) { rt_base_t level; @@ -311,7 +312,6 @@ void lwp_ref_dec(struct rt_lwp *lwp) rt_raw_channel_send(gdb_get_server_channel(), &msg); } #endif - lwp_user_obj_free(lwp); lwp_free(lwp); } } -- Gitee