从kernel源码进阶C语言
從kernel源碼進階C語言
第一章 關(guān)于學(xué)習(xí)和技能提升
第二章 常見的宏定義深度分析
?2.1 ARRAY_SIZE(arr)宏深度解析
?2.2 max(x, y)宏深度解析
?2.3 container_of(ptr, type, member)宏深度解析
文章目錄
- 從kernel源碼進階C語言
- 前言
- 一、關(guān)于學(xué)習(xí)和技能提升
- 總結(jié)
前言
是否還記得第一次點亮開發(fā)板的歡呼雀躍,第一次寫linux驅(qū)動時的無從下手。對于嵌入式開發(fā)者來說,大部分都是從單片機開發(fā)起步的,單片機開發(fā)的那種胸中有丘壑,眼里存山河的白盒子開發(fā)方式讓自己覺得一切盡在掌握中,切換到Linux時停杯投箸不能食,拔劍四顧心茫然的黑盒子開發(fā)方式無力感肆意,而也是從裸機到OS的切換,讓我們認識到了設(shè)計模式,設(shè)計框架,操作系統(tǒng)原理等等,而作為OS代表的kernel由于其開源免費,性能優(yōu)異,應(yīng)用廣泛的特點是值得我們深入分析和學(xué)習(xí)的。第一次閱讀源碼時,跟著教程配置完SourceInsight,打開kernel的大門,是不是覺得自己學(xué)的C和kernel的C不是一個C,看關(guān)鍵字都認識,看程序確一頭霧水。本分欄將會通過對kernel中C語言的高級用法進行分析,提升源碼閱讀效率,也能加深大家對C語言的理解,對程序設(shè)計的思考。
一、關(guān)于學(xué)習(xí)和技能提升
作為一個技術(shù)人員,對技術(shù)上應(yīng)該要有自己的追求,而不是安于現(xiàn)狀,從現(xiàn)實的角度來說,只有提升自身的技術(shù)能力才能獲得更大的發(fā)展平臺,拿到更高的收入,對于轉(zhuǎn)型做管理既能有的放矢又能以技服人。不要去參與無意義的什么語言是最好的編程語言,什么面向?qū)ο蟊让嫦蜻^程編程先進的討論,面向money才是蕓蕓眾生的選擇。把時間多花在提升自己上會更值得。工作、學(xué)習(xí)中多問自己為什么,多思考為什么才能比別人進步更快,對技術(shù)有更深刻的理解;對于學(xué)習(xí)的效率問題,方法是第一位的,但是有時把所有的精力都放在所謂的速成方法上會容易忘記甚至鄙視最樸實無華的重復(fù),而往往很多時候,只有走了彎路才會體會到重復(fù)有時是最具有效率的學(xué)習(xí)方式。對于資料查找,高質(zhì)量的學(xué)習(xí)網(wǎng)站,資料搜索技巧還是要掌握的;對于開發(fā)工具,Eclipse、Git、Android、adb、gdb、vim等也是要勤加練習(xí),不然開發(fā)中會發(fā)現(xiàn),工具的不熟悉有時非常拖累開發(fā)效率;對于程序的調(diào)試技巧,無論是kernel、Linux應(yīng)用、Android framework、Android App等常用的調(diào)試工具、調(diào)試技巧,對自己工作上有用的必須要能熟練使用,其帶來的是幾十倍的開發(fā)效率。只有效率上來才能降低自己工作工作強度和時間,讓自己有更多時間去學(xué)習(xí)提升從而形成一個正循環(huán),而不是因為技術(shù)水平限制而加班,因為加班而沒有時間學(xué)習(xí)提升然后技術(shù)水平無法提高,這樣的負循環(huán)會限制自身的發(fā)展。
學(xué)習(xí)是一個螺旋曲線的過程,在互聯(lián)網(wǎng)資訊發(fā)達,信息無處不在的今天,很多人習(xí)慣了信息泛濫,知識的易于獲取,這些對確實有效的降低了我們的學(xué)習(xí)成本,提升了學(xué)習(xí)效率,通過互聯(lián)網(wǎng)我們可以看到高手分享的真知灼見,前輩分享的經(jīng)驗心得,但是僅僅看過就不代表我們自己掌握了,就像我們有時候自嘲是面向Google、百度編程一樣,但是也確實有不少是離開了搜索引擎,無他人技術(shù)分享就無法進行項目開發(fā)的。但是要拉開和他人的差距,就只有不斷的練習(xí),閱讀源碼,項目實戰(zhàn),而這個過程往往也是痛苦,孤寂的,由于學(xué)習(xí)的螺旋曲線,可能在達到某個技能水平后一直感覺自我徘徊不前,甚至在退后,這極有可能是技能上升到新臺階的前兆,而身邊有技術(shù)大牛指導(dǎo)引路就能事半功倍。但是現(xiàn)實是我們身邊可能沒有這樣的人,就算有大牛也沒那么多時間去指點,但三人行必有我?guī)?#xff0c;在向他人提問時,最好自己先嘗試了所有的可能,整理出問題和可能的方向,這樣再去請教他人一方面能提升自己的能力,更重要的是能節(jié)約他人時間,讓別人更愿意去幫助你,畢竟你我都不喜歡被一個簡單問題反復(fù)打擾。成長路上,一定都是孤獨的。因為別人看到的只是你取得成績的時候,從來沒有人會了解你默默付出的那段歷程。
CSDN上大牛眾多,而撇開文章質(zhì)量不談,就單論一周發(fā)一兩篇博客,堅持一兩年又有多少人能做到呢,行百里者半于九十,希望自己也能堅持把這個分欄寫下去吧。
總結(jié)
啰嗦了這么多,以上僅是個人有失偏頗的觀點,也希望得到各大高手的指點,多多交流學(xué)習(xí),不吝賜教,讓我能更快進步。本分欄將對kernel的max、container_of、ARRAY_SIZE等宏、list_head等內(nèi)核數(shù)據(jù)結(jié)構(gòu)進行分析、探討,盡量講明白演化過程,受限于個人水平,有描述不足或錯誤的地方,還請批評指教。以下是個人公眾號,如有疑問可以私信或者公眾號私聊交流。
總結(jié)
以上是生活随笔為你收集整理的从kernel源码进阶C语言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 仿照余额宝余额动态变动
- 下一篇: 鸟哥的linux私房菜_linux磁盘与