From ae674ab359720f0e210becc43cee34189c0f7d49 Mon Sep 17 00:00:00 2001 From: "mbbill@gmail.com" Date: Wed, 8 Jun 2011 16:41:36 +0000 Subject: [PATCH] Now, lwip is using blocking mailbox. git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1473 bbd45198-f89e-11dd-88c7-29a3b14d5316 --- components/net/lwip-1.4.0/src/arch/sys_arch.c | 11 +++++------ src/ipc.c | 10 +++++++++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/components/net/lwip-1.4.0/src/arch/sys_arch.c b/components/net/lwip-1.4.0/src/arch/sys_arch.c index 83a0f2c2d2..297f819e7a 100644 --- a/components/net/lwip-1.4.0/src/arch/sys_arch.c +++ b/components/net/lwip-1.4.0/src/arch/sys_arch.c @@ -1,11 +1,11 @@ #include -#include "lwip/debug.h" #include "lwip/sys.h" #include "lwip/opt.h" #include "lwip/stats.h" #include "lwip/err.h" #include "arch/sys_arch.h" +#include "lwip/debug.h" #include @@ -269,7 +269,6 @@ err_t sys_mbox_new(sys_mbox_t *mbox, int size) { struct rt_thread *thread; thread = rt_thread_self(); - LWIP_DEBUGF(SYS_DEBUG, ("%s, Create mbox: %s \n",thread->name, tname)); } #endif @@ -316,12 +315,12 @@ void sys_mbox_post(sys_mbox_t *mbox, void *msg) thread = rt_thread_self(); LWIP_DEBUGF(SYS_DEBUG, ("%s, Post mail: %s ,0x%x\n",thread->name, - (*mbo)x->parent.parent.name, (rt_uint32_t)msg)); + (*mbox)->parent.parent.name, (rt_uint32_t)msg)); } #endif - if (rt_mb_send(*mbox, (rt_uint32_t)msg) != RT_EOK) - rt_kprintf("TODO: FIX THIS!! mbox overflow"); + //rt_mb_send_wait(*mbox, (rt_uint32_t)msg,RT_WAITING_FOREVER); + rt_mb_send(*mbox, (rt_uint32_t)msg); return; } @@ -386,7 +385,7 @@ u32_t sys_arch_mbox_fetch(sys_mbox_t *mbox, void **msg, u32_t timeout) thread = rt_thread_self(); LWIP_DEBUGF(SYS_DEBUG, ("%s, Fetch mail: %s , 0x%x\n",thread->name, - mbox->parent.parent.name, *(rt_uint32_t **)msg)); + (*mbox)->parent.parent.name, *(rt_uint32_t **)msg)); } #endif diff --git a/src/ipc.c b/src/ipc.c index 2721d8591e..664237ef4c 100644 --- a/src/ipc.c +++ b/src/ipc.c @@ -1197,6 +1197,7 @@ rt_err_t rt_mb_init(rt_mailbox_t mb, const char* name, void* msgpool, rt_size_t mb->in_offset = 0; mb->out_offset = 0; + /* init an additional list of sender suspend thread */ rt_list_init(&(mb->suspend_sender_thread)); return RT_EOK; @@ -1263,6 +1264,9 @@ rt_mailbox_t rt_mb_create (const char* name, rt_size_t size, rt_uint8_t flag) mb->in_offset = 0; mb->out_offset = 0; + /* init an additional list of sender suspend thread */ + rt_list_init(&(mb->suspend_sender_thread)); + return mb; } @@ -1274,12 +1278,13 @@ rt_mailbox_t rt_mb_create (const char* name, rt_size_t size, rt_uint8_t flag) * @return the error code */ rt_err_t rt_mb_delete (rt_mailbox_t mb) -{ +{ /* parameter check */ RT_ASSERT(mb != RT_NULL); /* resume all suspended thread */ rt_ipc_list_resume_all(&(mb->parent.suspend_thread)); + /* also resume all mailbox private suspended thread */ rt_ipc_list_resume_all(&(mb->suspend_sender_thread)); @@ -1576,6 +1581,9 @@ rt_err_t rt_mb_control(rt_mailbox_t mb, rt_uint8_t cmd, void* arg) /* resume all waiting thread */ rt_ipc_list_resume_all(&(mb->parent.suspend_thread)); + /* also resume all mailbox private suspended thread */ + rt_ipc_list_resume_all(&(mb->suspend_sender_thread)); + /* re-init mailbox */ mb->entry = 0; mb->in_offset = 0; -- GitLab