eM4 OS設計中的可重入性

Make small ones into better one.

reentrant的概念

引用wiki其中的英文解釋:

In computing, a computer program or subroutine is called reentrant if it can be interrupted in the middle of its execution and then safely be called again ("re-entered") before its previous invocations complete execution. The interruption could be caused by an internal action such as a jump or call, or by an external action such as an interrupt or signal.

https://zh.wikipedia.org/zh-hans/%E5%8F%AF%E9%87%8D%E5%85%A5zh.wikipedia.org

Reentrancy (computing)en.m.wikipedia.org

(中文維基404,可以看其搜索引擎檢索內容匹配)

eM4內核中的重入函數

  1. 重入函數的實現
  2. eM4內核中提供功能

關於:

  • Set的創建與註冊,
  • Handler的創建與註冊,
  • Handler處理實體,
  • Handler運行棧的申請與初始化,
  • 同步實現,
  • 臨界區,
  • 任務切換,
  • 基於優先順序的搶佔調度,
  • 事件的非同步觸發,
  • ……

eM4內核提供每個Set通用的事件處理機制,基本原理為:按照FIFO原則執行對應的事件處理策略。

處理實體為各個Set的所共用,為了避免某Set獲取處理資源時因改變處理實體內的狀態導致處理異常,因此該通用處理實體具備如下特徵:

  1. 處理實體函數的可重入性;
  2. 僅提供處理機制,不負責各個事件的處理方法;

參見如下的處理機制策略流程圖

【待補充】

總結

事件處理作為該eM4核心的處理機制,必需在實現方式上考慮通用性和特別之處:

  1. 共用函數的重入性考慮,
  2. 機制與策略實現選擇考慮。

擴展閱讀

關於機制與策略的概念參見本專欄

【相關Linux/Linus 的觀點摘要】

推薦閱讀:

TAG:嵌入式系統 | 操作系統 | 單片機 |