errno

移植方法

  • 设置Picolibc的配置 newlib-global-errnotrue ,不使用 TLS 机制来实现 errno
  • 设置Picolibc的配置 errno-function'__errno'
  • XWOS在每个线程对象结构体中定义了一个 __errno 变量,并重新覆盖实现了 int * __errno(void) 函数, 返回 当前 线程对象的 __errno 的地址:
int * __errno(void)
{
        xwos_thd_d thdd = xwos_cthd_self();
        return &thdd.thd->osthd.libc.error_number;
}
  • 当使用 <errno.h> 中的 errno 宏时,就可获取线程自身的 __errno ,不再依赖libgloss。