关于LINUX系统编程架构问题

在程序猿界混迹了多年,一直有个苦恼的问题,不管是什么样子的编程,最早的汇编,后来C语言,又接触了JAVA,始终有个念头就是整体程序架构问题,不管是你自己用不用操作系统,都要有一套很出色的编程模板。当然自己能搞出来的绝对是要花费大把时间,然而对于工作而言时间确实是非常奢侈的东西。那么,另一种方法就出现了,“抄袭”,但抄袭也是要自己有两把刷子的,而且要有广阔的眼界,有了眼界你才能找到多种多样的模式,模板。废话少说,先上个LINUX下编程的系统模板,这个是来自TI的ipnc中的对Linux下的系统编程。也当自己的记录笔记。

应用方法:

int AVSERVER_tskMain(struct OSA_TskHndl *pTsk, OSA_MsgHndl *pMsg, Uint32 curState )
{
  int status;
  Uint16 cmd = OSA_msgGetCmd(pMsg);


  #ifdef AVSERVER_DEBUG_MAIN_THR
  OSA_printf(" AVSERVER MAIN: Recevied CMD = 0x%04x, state = 0x%04x\n", cmd, curState);
  #endif


  switch(cmd) {


    case AVSERVER_MAIN_CMD_START:


      if(curState==AVSERVER_MAIN_STATE_IDLE) {


        status = AVSERVER_tskStart(pTsk, pMsg);


        if(status!=OSA_SOK)
          AVSERVER_tskStop(pTsk, pMsg);
      }


      OSA_tskAckOrFreeMsg(pMsg, OSA_SOK);
      break;


    case AVSERVER_MAIN_CMD_STOP:


      if(curState==AVSERVER_MAIN_STATE_RUNNING) {


        AVSERVER_tskStop(pTsk, pMsg);
      }


      OSA_tskAckOrFreeMsg(pMsg, OSA_SOK);
      break;
  }




  return OSA_SOK;
}


int AVSERVER_mainCreate()
{
  int status;


  status = OSA_mbxCreate(&gAVSERVER_ctrl.uiMbx);
  if(status!=OSA_SOK) {
    OSA_ERROR("OSA_mbxCreate()\n");
    return status;
  }


  status = OSA_tskCreate( &gAVSERVER_ctrl.mainTsk, AVSERVER_tskMain, AVSERVER_MAIN_THR_PRI, AVSERVER_MAIN_STACK_SIZE, AVSERVER_MAIN_STATE_IDLE);
  if(status!=OSA_SOK) {
    OSA_ERROR("OSA_tskCreate()\n");
    return status;
  }


  return status;
}


int AVSERVER_mainDelete()
{
  int status;


  status = OSA_tskDelete(&gAVSERVER_ctrl.mainTsk);
  status |= OSA_mbxDelete(&gAVSERVER_ctrl.uiMbx);


  if(status!=OSA_SOK)
    OSA_ERROR("\n");


  return status;

}


启动:  

status |= OSA_tskSendMsg(&gVIDEO_ctrl.swosdTsk, pTsk, AVSERVER_CMD_DELETE, NULL, OSA_MBX_WAIT_ACK);

代码下载:

https://download.csdn.net/download/ye_c1988/10467869


猜你喜欢

转载自blog.csdn.net/ye_c1988/article/details/80626439
今日推荐