rrxv6 : spin mutex

故事是這樣子的,上一篇我們使用 unsafe 來操作 global variable,並用這個做到 cooperative multitask, 很不幸的這個方法是不行的,包括幾個問題:

  1. 身為 Rustacean 非不得已怎麼可以用 unsafe 呢?這樣狂用 unsafe 根本離經叛道
  2. 當 static 的型態複雜到一個程度的時候,這樣手爆資料型態絕不是方法,一定要使用 default 才行。

稍微搜尋一下之後,果然找到一個可行的方案,用社群提供的 crate spin , 可以在 #[no_std] 的狀況下提供 Mutex(有關如何實作 Rust Mutex,' 可以參見這篇文章

...