SYS_ARCH_DECL_PROTECT(x): Declare the variable "x" to hold the protection. Used so you can specify what data type the protection will require. 在lwipopts.h 中定义 宏SYS_LIGHTWEIGHT_PROT为1. 在sys_arch.h / sys_arch.c 中提供 1 个数据类型和2个函数 sys_prot_t 数据类型 sys_prot_t ...
sys_mutex_lock()上锁 sys_mutex_unlock()解锁 sys_mutex_free()删除互斥锁 任务 sys_thread_new()创建新任务 sys_thread_delete()删除任务 sys_arch_protect()进入临界区保护 sys_arch_unprotect()推出临界区保护 Lwip配置文件 per.h文件 per.h文件用来控制性能测试,不使用此功能,直接定义为空即可。 cc.h文...
接口文件sys_arch.c和sys_archh,这两个文件可以自己创建也可以contrib包中获取,路径分别为“contrib-2.1.0\ports\freertos”与“contrib-2.1.0\ports\freertos\includearch”,用户在移植的时候必须根据操作系统的功能为协议栈提供相应的接口,如邮箱(因为本次移植以FreeRTOS为例子,FreeRTOS中没有邮箱这种概念,但是...
sys_prot_t sys_arch_protect(void) { CPU_SR_ALLOC(); CPU_CRITICAL_ENTER(); return 1; } void sys_arch_unprotect(sys_prot_t pval) { CPU_SR_ALLOC(); LWIP_UNUSED_ARG(pval); CPU_CRITICAL_EXIT(); } sys_arch_protecth函数要求实现的功能是完成临界区域保护并保存当前内容,这里调用CPU_...
SYS_ARCH_PROTECT(lev); if(netif->loop_first != NULL) { //原来的loop中还有数据 netif->loop_last->next = r; //接到原来数据的后面 netif->loop_last = last; } else { netif->loop_first = r; netif->loop_last = last; } SYS_ARCH_UNPROTECT(lev); ...
* If set to 1, mem_malloc will be protected by a semaphore and SYS_ARCH_PROTECT,* while mem...
= NULL) { LWIP_PBUF_REF_T ref; SYS_ARCH_DECL_PROTECT(old_level); SYS_ARCH_PROTECT(old_level); /* 减少引用计数(指向 pbuf 的指针数) */ ref = --(p->ref); SYS_ARCH_UNPROTECT(old_level); if (ref == 0) { /* 为了下一次迭代,请记住链中的下一个 pbuf */ q = p->next; ...
SYS_ARCH_DECL_PROTECT(old_level); //申请临界保护变量 SYS_ARCH_PROTECT(old_level); //进入临界区 LWIP_ASSERT("pbuf_free: p->ref > 0", p->ref > 0); ref = --(p->ref); //该pbuf引用次数-1 SYS_ARCH_UNPROTECT(old_level);
操作系统适配层的移植主要是在sys_arch.c里面,主要有以下几部分: 信号量相关: sys_sem_tsys_sem_new(u8_tcount) 创建一个新的信号量,并给信号量赋予初值count。 voidsys_sem_signal(sys_sem_tsem) 向指定的信号量发送信号。 void sys_sem_free(sys_sem_tsem) ...
typedef OS_Q sys_mbox_t; LwIP中包含有必须完整执行而不可被打断的代码,因此需要使用临界段代码保护的功能。μC/OS-Ⅲ中提供了关闭中断和锁定调度器两种临界段代码保护方法。LwIP中的临界段代码保护宏可直接定义为μC/OS-Ⅲ关闭中断的对应临界段代码保护宏。 #define SYS_ARCH_DECL_PROTECT() CPU_SR_...