"Reentrant Code" 是 embedded system 相關教科書很重要的一個主題,學習 Linux 驅動程式的學員也一定了解到這個主題的重要性。
由於 Linux 驅動程式裡的每一個 "operation" (eg. fops->read) 是 "共用" 的,例如 major number 相同的 device file (minor number 不同) 是共用同一塊 code,所以必須考量程式碼的「可重覆進入」寫法 (thinking about filp->private data)。
這也是為什麼在 Jollen 的 Linux 驅動程式課程裡,我們如此這般在強調 Reentrant Code (Reentrant Function) 這個主題,也花了許多時間介紹 Linux 驅動程式的 "reentrant" 觀念。
Linux 驅動程式有許多主題是一點點搞不懂,就會全盤皆不懂的,reentrant code 的觀念是其中之一。由於許多學員對於 reentrant code 的理論不甚了解,因此建議未來要來上課的同學可以事先研讀這篇寫的相當好的文章:
http://www.unet.univie.ac.at/aix/aixprggd/genprogc/writing_reentrant_thread_safe_code.htm
在 Jollen 多年的 Linux 驅動程式授課經驗中,reentrant code 是同學比較不容易搞清楚的觀念,可是卻也是一開始我們課程就會講到的主題;我們提到當上層 callback 下層的驅動程式時,什麼條件下下層必考慮可重覆進入的問題。要學好 Linux 驅動程式,建議無論如何也要搞懂這個主題!
Jollen's Blog 使用 Github issues 與讀者交流討論。請點擊上方的文章專屬 issue,或 open a new issue
您可透過電子郵件 jollen@jollen.org,或是 Linkedin 與我連絡。更歡迎使用微信,請搜尋 WeChat ID:jollentw