操作系统模拟层(OS emulation layer)

不同的操作系统,提供不同的通信机制,而且这些通信的方法实现也不同,增加操作系统模拟层,将操作系统相关的功能函数和数据结构放在这一层中(对应于代码sys.c/h),这一层提供诸如创建lwIP进程,延时,互斥锁,信号量,邮箱等相关的函数。如下:

  1. // Creates a new thread
  2. sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread,
  3. void *arg, int stacksize, int prio);
  4. /** Create a new mutex
  5. * @param mutex pointer to the mutex to create
  6. * @return a new mutex */
  7. err_t sys_mutex_new(sys_mutex_t *mutex);
  8. /** Delete a semaphore
  9. * @param mutex the mutex to delete */
  10. void sys_mutex_free(sys_mutex_t *mutex);
  11. #ifndef sys_msleep
  12. void sys_msleep(u32_t ms); /* only has a (close to) 1 jiffy resolution. */
  13. #endif
  14. /* Mailbox functions. */
  15. /** Create a new mbox of specified size
  16. * @param mbox pointer to the mbox to create
  17. * @param size (miminum) number of messages in this mbox
  18. * @return ERR_OK if successful, another err_t otherwise */
  19. err_t sys_mbox_new(sys_mbox_t *mbox, int size);

一般说来,移植到其他操作系统上时,实现这些接口即可,但是在实际的移植过程中还需要做一些细节处理。具体的一个移植的实现请看RT-Thread源码对于sys.c/h如何处理的。