操作系统模拟层(OS emulation layer)
不同的操作系统,提供不同的通信机制,而且这些通信的方法实现也不同,增加操作系统模拟层,将操作系统相关的功能函数和数据结构放在这一层中(对应于代码sys.c/h),这一层提供诸如创建lwIP进程,延时,互斥锁,信号量,邮箱等相关的函数。如下:
- // Creates a new thread
- sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread,
- void *arg, int stacksize, int prio);
- /** Create a new mutex
- * @param mutex pointer to the mutex to create
- * @return a new mutex */
- err_t sys_mutex_new(sys_mutex_t *mutex);
- /** Delete a semaphore
- * @param mutex the mutex to delete */
- void sys_mutex_free(sys_mutex_t *mutex);
- #ifndef sys_msleep
- void sys_msleep(u32_t ms); /* only has a (close to) 1 jiffy resolution. */
- #endif
- /* Mailbox functions. */
- /** Create a new mbox of specified size
- * @param mbox pointer to the mbox to create
- * @param size (miminum) number of messages in this mbox
- * @return ERR_OK if successful, another err_t otherwise */
- err_t sys_mbox_new(sys_mbox_t *mbox, int size);
一般说来,移植到其他操作系统上时,实现这些接口即可,但是在实际的移植过程中还需要做一些细节处理。具体的一个移植的实现请看RT-Thread源码对于sys.c/h如何处理的。