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 297f819e7afdfb7fa48d246bbdc767f3d3a9a012..cbd176e5c08b099adf90938876e2d9b80ebd8254 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 @@ -27,6 +27,8 @@ err_t sys_sem_new(sys_sem_t *sem, u8_t count) char tname[RT_NAME_MAX]; sys_sem_t tmpsem; + RT_DEBUG_NOT_REENT + rt_snprintf(tname, RT_NAME_MAX, "%s%d", SYS_LWIP_SEM_NAME, counter); #if SYS_DEBUG @@ -53,6 +55,8 @@ err_t sys_sem_new(sys_sem_t *sem, u8_t count) void sys_sem_free(sys_sem_t *sem) { + RT_DEBUG_NOT_REENT + #if SYS_DEBUG { struct rt_thread *thread; @@ -90,6 +94,8 @@ u32_t sys_arch_sem_wait(sys_sem_t *sem, u32_t timeout) s32_t t; u32_t tick; + RT_DEBUG_NOT_REENT + /* get the begin tick */ tick = rt_tick_get(); #if SYS_DEBUG @@ -161,6 +167,8 @@ err_t sys_mutex_new(sys_mutex_t *mutex) char tname[RT_NAME_MAX]; sys_mutex_t tmpmutex; + RT_DEBUG_NOT_REENT + rt_snprintf(tname, RT_NAME_MAX, "%s%d", SYS_LWIP_MUTEX_NAME, counter); #if SYS_DEBUG @@ -189,6 +197,8 @@ err_t sys_mutex_new(sys_mutex_t *mutex) void sys_mutex_lock(sys_mutex_t *mutex) { + RT_DEBUG_NOT_REENT + #if SYS_DEBUG { struct rt_thread *thread; @@ -226,6 +236,8 @@ void sys_mutex_unlock(sys_mutex_t *mutex) * @param mutex the mutex to delete */ void sys_mutex_free(sys_mutex_t *mutex) { + RT_DEBUG_NOT_REENT + #if SYS_DEBUG { struct rt_thread *thread; @@ -263,6 +275,8 @@ err_t sys_mbox_new(sys_mbox_t *mbox, int size) char tname[RT_NAME_MAX]; sys_mbox_t tmpmbox; + RT_DEBUG_NOT_REENT + rt_snprintf(tname, RT_NAME_MAX, "%s%d", SYS_LWIP_MBOX_NAME, counter); #if SYS_DEBUG @@ -288,6 +302,8 @@ err_t sys_mbox_new(sys_mbox_t *mbox, int size) void sys_mbox_free(sys_mbox_t *mbox) { + RT_DEBUG_NOT_REENT + #if SYS_DEBUG { struct rt_thread *thread; @@ -309,6 +325,8 @@ void sys_mbox_free(sys_mbox_t *mbox) * @param msg message to post (ATTENTION: can be NULL) */ void sys_mbox_post(sys_mbox_t *mbox, void *msg) { + RT_DEBUG_NOT_REENT + #if SYS_DEBUG { struct rt_thread *thread; @@ -319,8 +337,8 @@ void sys_mbox_post(sys_mbox_t *mbox, void *msg) } #endif - //rt_mb_send_wait(*mbox, (rt_uint32_t)msg,RT_WAITING_FOREVER); - rt_mb_send(*mbox, (rt_uint32_t)msg); + rt_mb_send_wait(*mbox, (rt_uint32_t)msg,RT_WAITING_FOREVER); + return; } @@ -355,6 +373,8 @@ u32_t sys_arch_mbox_fetch(sys_mbox_t *mbox, void **msg, u32_t timeout) s32_t t; u32_t tick; + RT_DEBUG_NOT_REENT + /* get the begin tick */ tick = rt_tick_get(); @@ -457,6 +477,8 @@ sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, { rt_thread_t t; + RT_DEBUG_NOT_REENT + /* create thread */ t = rt_thread_create(name, thread, arg, stacksize, prio, 20); RT_ASSERT(t != RT_NULL); diff --git a/components/net/lwip-1.4.0/src/netif/ethernetif.c b/components/net/lwip-1.4.0/src/netif/ethernetif.c index fe242e835975f0fb3f1463b15d354208fa6d9f13..b40dd3a2cf3e8b0d4c2d2b7fe23e083e7a1bd428 100644 --- a/components/net/lwip-1.4.0/src/netif/ethernetif.c +++ b/components/net/lwip-1.4.0/src/netif/ethernetif.c @@ -94,6 +94,8 @@ static err_t ethernetif_linkoutput(struct netif *netif, struct pbuf *p) struct eth_tx_msg msg; struct eth_device* enetif; + RT_DEBUG_NOT_REENT + enetif = (struct eth_device*)netif->state; /* send a message to eth tx thread */ @@ -117,6 +119,8 @@ static struct eth_device* eth_dev; static err_t ethernetif_init(struct netif *netif) { + RT_DEBUG_NOT_REENT + if( (eth_dev == RT_NULL) || (eth_dev->netif != netif) ) return ERR_MEM; @@ -159,6 +163,9 @@ static err_t ethernetif_init(struct netif *netif) rt_err_t eth_device_init(struct eth_device* dev, const char* name) { struct netif* pnetif; + + RT_DEBUG_NOT_REENT + /* allocate memory */ pnetif = (struct netif*) rt_malloc (sizeof(struct netif)); if (pnetif == RT_NULL) diff --git a/examples/kernel/mbox_send_wait.c b/examples/kernel/mbox_send_wait.c index dc1e6295eed12a49b1ff5bf320db20800b0d216c..6cce513bd2d7f394e2e099e145bbe143f2370754 100644 --- a/examples/kernel/mbox_send_wait.c +++ b/examples/kernel/mbox_send_wait.c @@ -1,43 +1,43 @@ /* - * 程序清单:邮箱例程_发送阻塞 + * 绋嬪簭娓呭崟锛氶偖绠变緥绋媉鍙戦侀樆濉 * - * 这个程序用来测试邮箱发送时候的阻塞情况。 + * 杩欎釜绋嬪簭鐢ㄦ潵娴嬭瘯閭鍙戦佹椂鍊欑殑闃诲鎯呭喌銆 * */ #include #include "tc_comm.h" -/* 指向线程控制块的指针 */ +/* 鎸囧悜绾跨▼鎺у埗鍧楃殑鎸囬拡 */ static rt_thread_t tid1 = RT_NULL; static rt_thread_t tid2 = RT_NULL; -/* 邮箱控制块 */ +/* 閭鎺у埗鍧 */ static struct rt_mailbox mb; -/* 用于放邮件的内存池 */ +/* 鐢ㄤ簬鏀鹃偖浠剁殑鍐呭瓨姹 */ static char mb_pool[32]; static char mb_str1[] = "I'm a mail!"; static char mb_str2[] = "this is another mail!"; -/* 线程1入口 */ +/* 绾跨▼1鍏ュ彛 */ static void thread1_entry(void* parameter) { unsigned char* str; while (1) { - /* 从邮箱中收取邮件 */ + /* 浠庨偖绠变腑鏀跺彇閭欢 */ if (rt_mb_recv(&mb, (rt_uint32_t*)&str, RT_WAITING_FOREVER) == RT_EOK) { rt_kprintf("thread1: get a mail from mailbox, the content:%s\n", str); - /* 延时20个OS Tick */ + /* 寤舵椂20涓狾S Tick */ rt_thread_delay(50); } } } -/* 线程2入口 */ +/* 绾跨▼2鍏ュ彛 */ static void thread2_entry(void* parameter) { rt_uint8_t count; @@ -49,16 +49,16 @@ static void thread2_entry(void* parameter) count ++; if (count & 0x1) { - /* 发送mb_str1地址到邮箱中 */ + /* 鍙戦乵b_str1鍦板潃鍒伴偖绠变腑 */ str = mb_str1; } else { - /* 发送mb_str2地址到邮箱中 */ + /* 鍙戦乵b_str2鍦板潃鍒伴偖绠变腑 */ str = mb_str2; } - /* 不停的发送邮件,如果满了则等待10个tick,然后超时 */ + /* 涓嶅仠鐨勫彂閫侀偖浠讹紝濡傛灉婊′簡鍒欑瓑寰10涓猼ick锛岀劧鍚庤秴鏃 */ if( rt_mb_send_wait(&mb, (rt_uint32_t)str,10) == RT_EOK ) rt_kprintf("thread2: sent a mail to mailbox, the content:%s\n", str); else @@ -68,25 +68,25 @@ static void thread2_entry(void* parameter) int mbox_send_wait_init() { - /* 初始化一个mailbox */ + /* 鍒濆鍖栦竴涓猰ailbox */ rt_mb_init(&mb, - "mbt", /* 名称是mbt */ - &mb_pool[0], /* 邮箱用到的内存池是mb_pool */ - sizeof(mb_pool)/4, /* 大小是mb_pool大小除以4,因为一封邮件的大小是4字节 */ - RT_IPC_FLAG_FIFO); /* 采用FIFO方式进行线程等待 */ + "mbt", /* 鍚嶇О鏄痬bt */ + &mb_pool[0], /* 閭鐢ㄥ埌鐨勫唴瀛樻睜鏄痬b_pool */ + sizeof(mb_pool)/4, /* 澶у皬鏄痬b_pool澶у皬闄や互4锛屽洜涓轰竴灏侀偖浠剁殑澶у皬鏄4瀛楄妭 */ + RT_IPC_FLAG_FIFO); /* 閲囩敤FIFO鏂瑰紡杩涜绾跨▼绛夊緟 */ - /* 创建线程1 */ + /* 鍒涘缓绾跨▼1 */ tid1 = rt_thread_create("t1", - thread1_entry, RT_NULL, /* 线程入口是thread1_entry, 入口参数是RT_NULL */ + thread1_entry, RT_NULL, /* 绾跨▼鍏ュ彛鏄痶hread1_entry, 鍏ュ彛鍙傛暟鏄疪T_NULL */ THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); if (tid1 != RT_NULL) rt_thread_startup(tid1); else tc_stat(TC_STAT_END | TC_STAT_FAILED); - /* 创建线程2 */ + /* 鍒涘缓绾跨▼2 */ tid2 = rt_thread_create("t2", - thread2_entry, RT_NULL, /* 线程入口是thread2_entry, 入口参数是RT_NULL */ + thread2_entry, RT_NULL, /* 绾跨▼鍏ュ彛鏄痶hread2_entry, 鍏ュ彛鍙傛暟鏄疪T_NULL */ THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); if (tid2 != RT_NULL) rt_thread_startup(tid2); @@ -99,38 +99,38 @@ int mbox_send_wait_init() #ifdef RT_USING_TC static void _tc_cleanup() { - /* 调度器上锁,上锁后,将不再切换到其他线程,仅响应中断 */ + /* 璋冨害鍣ㄤ笂閿侊紝涓婇攣鍚庯紝灏嗕笉鍐嶅垏鎹㈠埌鍏朵粬绾跨▼锛屼粎鍝嶅簲涓柇 */ rt_enter_critical(); - /* 删除线程 */ + /* 鍒犻櫎绾跨▼ */ if (tid1 != RT_NULL && tid1->stat != RT_THREAD_CLOSE) rt_thread_delete(tid1); if (tid2 != RT_NULL && tid2->stat != RT_THREAD_CLOSE) rt_thread_delete(tid2); - /* 执行邮箱对象脱离 */ + /* 鎵ц閭瀵硅薄鑴辩 */ rt_mb_detach(&mb); - /* 调度器解锁 */ + /* 璋冨害鍣ㄨВ閿 */ rt_exit_critical(); - /* 设置TestCase状态 */ + /* 璁剧疆TestCase鐘舵 */ tc_done(TC_STAT_PASSED); } int _tc_mbox_send_wait() { - /* 设置TestCase清理回调函数 */ + /* 璁剧疆TestCase娓呯悊鍥炶皟鍑芥暟 */ tc_cleanup(_tc_cleanup); mbox_send_wait_init(); - /* 返回TestCase运行的最长时间 */ + /* 杩斿洖TestCase杩愯鐨勬渶闀挎椂闂 */ return 300; } -/* 输出函数命令到finsh shell中 */ +/* 杈撳嚭鍑芥暟鍛戒护鍒癴insh shell涓 */ FINSH_FUNCTION_EXPORT(_tc_mbox_send_wait, a example of mailbox send wait); #else -/* 用户应用入口 */ +/* 鐢ㄦ埛搴旂敤鍏ュ彛 */ int rt_application_init() { mbox_send_wait_init();