init

此方法會起始設定 RiCOSTask 物件。

簽章
RiCBoolean RiCOSTask_init (RiCOSTask *const me,
   RiCOSTaskEndCallBack tfunc, void *param, 
   const char *name, const long stackSize);
參數
me

要起始設定的 RiCOSTask 物件

tfunc

結束現行作業系統作業的回呼函數

param

回呼函數的參數

名稱

任務名稱

stackSize

堆疊的大小

傳回

如果成功,此方法會傳回 RiCTRUE

範例
RiCBoolean RiCOSTask_init(RiCOSTask * const me, 
   RiCOSTaskEndCallBack tfunc, void * param, 
   const char * name, const long stackSize)
{
   size_t i, len = 0;
   char* myName = NULL;

   if (me == NULL) {return 0;}

   me->endOSTaskInCleanup = TRUE;
   me->isWrapperThread = 0;

   /* 複製執行緒名稱。 */
   if (name != NULL) len = strlen(name);
   /* 檢查名稱是否合法 */
   for (i = 0; i < len; i++) {
      if ((isalnum((int)name[i]) == 0) && 
         (name[i] != '_')) {
         len = 0;
         break;
      }
   }
   if (len > 0) {
      myName = malloc(len + 1);
      strcpy(myName, name);
   }
   RiCOSEventFlag_init(&me->m_SuspEventFlag);
   RiCOSEventFlag_reset(&me->m_SuspEventFlag);
   /* 建立已暫停的執行緒!!!!!! */
   me->m_ExecFunc = tfunc;
   me->m_ExecParam = param;
   me->hThread = 0;
   me->hThread = taskSpawn(myName, 
      /* 新作業的名稱(儲存在 pStackBase) */
      (int) PRIORITY_NORMAL, /* 新作業的優先順序 */
      0,      /* 作業選項單字 */
      (int)stackSize, /* 所需的堆疊大小(位元組數) */
      (int (*)())preExecFunc, /* 執行緒函數 */
      (int)(void *)me, /* 執行緒函數的引數 */
      0,0,0,0,0,0,0,0,0);
   return 1;}

意見回饋