Now, lwip is using blocking mailbox.

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1473 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
mbbill@gmail.com 2011-06-08 16:41:36 +00:00
parent 70c031362a
commit ae674ab359
2 changed files with 14 additions and 7 deletions

View File

@ -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

View File

@ -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;