在開發嵌入式系統的程式時,通常使用的處理器都和桌機/筆電的 x86 不同,因此會注意到有不同的 register ,其中會用 link register 來記錄函式返回的位置。因為功能看起來和 call stack 重複,因此去尋找了 call stack 的一點歷史紀錄。
在作業系統課程中,會提到一種叫做 priority inversion 的現象,這個現象通常是不希望發生的,通常也會順帶介紹幾種解決方式。但有些作業系統沒有把這些 protocol 通常沒有包含在預設的 scheduling policy 中。本文從一些文件和歷史 mailing list 來推測可能的原因。
居住在板橋,要騎腳踏車在周邊區域到處跑或通勤的話就會常常需要過橋,因為腳踏車在上下橋走的路線常常和汽機車不太一樣,找了一個假日把板橋靠大漢溪這一側,也就是和新莊、三重來往的的橋用腳踏車騎過一遍,整理了一些橋的上橋點和附近方便的一些橫移門。
在 C/C++ 程式中,存取越界或 use-after-free 類型的記憶體錯誤是很常見的 bug ,除了透過良好的習慣跟 design pattern 可以手工避免之外,也有一些工具在編譯過程或執行時期進行自動化的檢查。最近看到了 Google 在 2012 年發表 Address Sanitizor (簡稱 ASAN)的論文,整理一下使用方法還有論文裡面介紹 的 ASAN 實作。
架設測試用的 HTTP server 有幾種方法,直接裝標準的 HTTP server 軟體需要寫設定檔,用 Python 或 Golang 直接套框架寫對一些簡單的需求也太慢了。 HTTP 也是標準的網路協定,因此一些設計來在 shell 上使用的網路測試工具就剛好可以用來架簡單的 HTTP server 。這篇文章整理了幾種我自己會使用的方法和情境。
PVE 太久沒升級,一升上去就作死手殘好幾步差點掉一堆資料。沒有技術內容的分析,純粹作為以後警惕。
近期嘗試了練習不同的英文鍵盤排列,整理一些練習過程還有一些中文使用者特有的適應過程。
編譯完 Linux kernel 在 QEMU 中跑起來之後,完整啟動後遇到的第一個錯誤應該會是 Unable to mount root fs ,從解決這個錯誤到進入一個可以執行的 shell 其實不會太遠,接下來就建立一個可以讓 QEMU 上的 Linux 執行 shell 的磁碟 image
最近遇到看似磁碟損壞造成大部分指令回傳 Input/output error 無法使用的情況,包含想要嘗試重新開機的指令,這時可以利用 Linux 內建的 SysRq 機制來完成。