VxWorks 6.9 核心編程指導之讀書筆記 -- VxWorks Kernel application (二)

來源:互聯網
上載者:User

標籤:

#1 核心對象的靜態執行個體化

核心對象的靜態執行個體化任務的靜態執行個體化

VX_TASK宏用來在編譯時間聲明一個任務對象。該宏帶有2個參數:任務名和棧大小。不像taskSpawn函數,任務名稱可以是NULL。VX_TASK的任務名稱必須指定。棧大小是非零值並且是編譯時間常量。

VX_TASK_INSTANTIATE宏被VX_TASK用來初始化和建立任務,等價於taskSpawn函數的功能。VX_TASK_INITIALIZE宏杯VX_TASK初始化任務並讓任務處於SUSPEND狀態,直到稍後調用taskActivate函數來啟用。

VX_TASK_INSTANTIATE返回傳起的任務ID,或者錯誤碼。VX_TASK和VX_TASK_INITIALIZE必須使用相同的任務名。

#include <vxWorks.h>#include <taskLib.h>VX_TASK(myTask,4096);int myTaskId;STATUS initializeFunction (void)    {    myTaskId = VX_TASK_INSTANTIATE(myTask, 100, 0, 4096, pEntry,                                    0,1,2,3,4,5,6,7,8,9);   if (myTaskId != ERROR)       return (OK);                /* instantiation succeeded */   else       return (ERROR);    }

為了初始化任務並使它處於SUSPEND狀態,必須使用VX_TASK_INITALIZE宏。並在稍後使用taskActivate函數來運行該任務。VX_TASK_INSTANIATE和taskActivate使用相同的參數。

#include <vxWorks.h>#include <taskLib.h>VX_TASK(myTask,4096);int myTaskId;STATUS initializeFunction (void){    myTaskId = VX_TASK_INITIALIZE(myTask, 100, 0, 4096, pEntry,                                   0,1,2,3,4,5,6,7,8,9);   if (myTaskId != NULL)       {       taskActivate (myTaskId);       return (OK);       }   else       return (ERROR);}

更多資訊,請參閱taskLib的API手冊。

訊號量的靜態執行個體化

VX_BINARY_SEMAPHORE,VX_COUNTING_SEMAPHORE,VX_MUTEX_SEMAPHORE和VX_READ_WRITE_SEMAPHORE宏分別用來在編譯時間定義二進位訊號量、計數訊號量、互斥訊號量。這些必須以訊號量名稱作為參數。

這些訊號量通過semBInitialize,semCInitialzie,semMInitialize和semRWInitialize函數來初始化定義的訊號量。semXInitialize函數等價於semXCreate函數。

VX_XXX_SEMAPHORE和semXInitialize函數必須使用相同的訊號量名稱。semXInitialize函數返回訊號量的ID。

#include <vxWorks.h>#include <semLib.h>VX_BINARY_SEMAPHORE(mySemB);   /* declare the semaphore */SEM_ID mySemBId;               /* semaphore ID for further operations */STATUS initializeFunction (void){    if ((mySemBId = semBInitialize (mysemB, options, 0)) == NULL)         return (ERROR);      /* initialization failed */    else         return (OK);}
訊息佇列的靜態執行個體化

VX_MSG_Q用來在編譯時間聲明訊息佇列對象。帶有3個參數:名稱,訊息佇列最大數量及每個訊息的最大尺寸。msgQInitialize函數在運行時初始化訊息佇列使之可用。宏和函數的參數必須保持一致。

 

#include <vxWorks.h>#include <msgQLib.h>VX_MSG_Q(myMsgQ,100,16);         /* declare the msgQ */MSG_Q_ID myMsgQId;               /* MsgQ ID to send/receive messages */STATUS initializeFunction (void){    if ((myMsgQId = msgQInitialize (myMsgQ, 100, 16, options)) == NULL)         return (ERROR);      /* initialization failed */    else          return (OK);}
看門狗時鐘的靜態執行個體化

VX_WDOG在編譯時間聲明看門狗時鐘。帶有一個參數,看門狗名稱。wdInitialize函數在運行時初始化看門狗時鐘。

#include <vxWorks.h>#include <wdLib.h>VX_WDOG(myWdog);    /* declare the watchdog */WDOG_ID myWdogId;   /* watchdog ID for further operations */STATUS initializeFunction (void){    if ((myWdogId = wdInitialize (myWdog)) == NULL)          return (ERROR);       /* initialization failed */    else         return (OK);}

  

 

VxWorks 6.9 核心編程指導之讀書筆記 -- VxWorks Kernel application (二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.