附加项目 nutt

void stop() {
        delete dev;
        dev = nullptr;
}

MONITOR_DRV::~MONITOR_DRV() {
          //让task线程退出死循环
             if (_task_should_exit) {
                _task_should_exit = false;
               _task = -1;
             }

   //关闭打开的IO资源
      //close serial

    if (_serial_fd > 0) {
        ::close(_serial_fd);
    }

     //对象的指镇
        dev = nullptr;
}

//死循环退出会自动执行exit,释放TCB资源

#ifdef CONFIG_NUTTX_KERNEL
  if ((tcb->cmn.flags & TCB_FLAG_TTYPE_MASK) != TCB_FLAG_TTYPE_KERNEL)
    {
      up_task_start(tcb->cmn.entry.main, argc, tcb->argv);
      exitcode = EXIT_FAILURE; /* Should not get here */
    }
  else
#endif
    {
      exitcode = tcb->cmn.entry.main(argc, tcb->argv);
    }

  /* Call exit() if/when the task returns */

  exit(exitcode);
}

猜你喜欢

转载自blog.csdn.net/yangang185/article/details/81563098