ucos 中的 OS_PRIO_SELF

來源:互聯網
上載者:User

今天在看ucosii 中關於刪除任務的函數 OSTaskDel 時看到

 

if (prio == OS_PRIO_SELF) {                                 /* See if requesting to delete self    */
     prio = OSTCBCur->OSTCBPrio;                             /* Set priority to delete to current   */
    }

這樣一段代碼,一開始不太理解,自己仔細想了想,下面說一下自己的理解。

我先查了一下 OS_PRIO_SELF 是在uCOS_II.H中定義的:

#define  OS_PRIO_SELF           0xFF                    /* Indicate SELF priority                      */

 

即 OS_PRIO_SELF 是一個全域變數,且值是0xFF 。那麼這個數字有什麼用那?

我是這樣理解的,這個常量使用在有關ucos中任務處理的函數上的,用它來代表一個任務自己的優先順序,你可能要問了OS_PRIO_SELF的值不是0xff 嗎,他怎麼代表當前任務自己的優先順序那。是這樣的,在每一個函數內部都有我上面用紅的字型表示出的代碼,把當前真實的優先順序賦給prio。這樣當你不知道當前任務的優先順序時,你就可以用OS_PRIO_SELF來代替了。反正它函數內部有轉換成真正的優先順序的代碼。

這樣對我們編程者來說更方便。

例如:你想用OSTaskDel ()這個函數刪除當前的任務,一種方法是你給函數傳當前任務的優先順序(前提是你自己知道)即OSTaskDel (24)【假設當前任務的優先順序就是24 】,另一種方法是直接寫 OSTaskDel (OS_PRIO_SELF )。反正在函數內部會把真正的當前任務優先順序賦給prio的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.