summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author[email protected] <[email protected]>2011-06-08 16:41:36 +0000
committer[email protected] <[email protected]>2011-06-08 16:41:36 +0000
commitae674ab359720f0e210becc43cee34189c0f7d49 (patch)
tree46a0507da04fcd557b074d87d74ffc051c241dd3
parent70c031362a74332e89f5919339cb59e9d0d197ad (diff)
Now, lwip is using blocking mailbox.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1473 bbd45198-f89e-11dd-88c7-29a3b14d5316
-rw-r--r--components/net/lwip-1.4.0/src/arch/sys_arch.c11
-rw-r--r--src/ipc.c10
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 <rtthread.h>
-#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 <string.h>
@@ -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;