欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

關(guān)于linux哪些能調(diào)用schedule或者等待事件的問題

關(guān)于linux哪些能調(diào)用schedule或者等待事件的問題

對同步問題,需要注意:
1)不能調(diào)用schedule的情況(wait_event、sleep等, 等待函數(shù)內(nèi)部會調(diào)用schedule):
(1)中斷、
(2)軟中斷、
(3)tasklet、
(4)timer(基于軟中斷實現(xiàn))、
(5)hrtimer (軟中斷或硬中斷環(huán)境下執(zhí)行)執(zhí)行環(huán)境下、
(6)或者“內(nèi)核線程、普通線程內(nèi)核態(tài)環(huán)境下調(diào)用了preempt_disable()/local_irq_disable()后”,
不能調(diào)用schedule()函數(shù)。

創(chuàng)新互聯(lián)建站長期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為羅城企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)羅城網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

因為spin_lock成功后,spin_lock內(nèi)部調(diào)用了preempt_disable,所以spin_lock后,不能調(diào)用schedule()。當(dāng)然spin_unlock會調(diào)用preempt_enable,所以后面可以根據(jù)什么執(zhí)行context來判斷是否能調(diào)用schedule()函數(shù)。

2)能調(diào)用等待函數(shù)的情況
(1) workqueue(內(nèi)部實現(xiàn)用到kernel thread)、
(2) kernel thread、
(3) 普通線程的內(nèi)核態(tài),
這些context下,可以調(diào)用schedule()。前提是沒有調(diào)用preempt_disable禁止搶占和local_irq_disable禁止中斷等操作時。

具體的原因和原理,請看我的課程:
https://edu.51cto.com/course/17155.html

https://edu.51cto.com/course/17132.html

關(guān)于具體的寫linux驅(qū)動的方法、技巧和注意事項,歡迎觀看我的《如何編寫linux設(shè)備驅(qū)動》的視頻:
https://edu.51cto.com/course/17132.html

另外我的相關(guān)培訓(xùn)視頻請看:
歡迎觀看我發(fā)布的各個課程: https://edu.51cto.com/lecturer/8896847.html

另外我的免費的linux各種驅(qū)動開發(fā)課程如下:
https://edu.51cto.com/course/17138.html

另外關(guān)于《關(guān)于如何編寫linux設(shè)備驅(qū)動》
1)首先確定硬件接口使用的總線,
2)然后確定要實現(xiàn)的功能,是網(wǎng)卡、sensor還是什么?再確定對上層應(yīng)用暴露的接口, 從而選擇子系統(tǒng),例如iio、input子系統(tǒng)等。由于linux只有字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備三種設(shè)備,其實iio、input子系統(tǒng)都是字符設(shè)備,只是它們幫你封裝好了字符設(shè)備的file_operations和Major設(shè)備號了,另外提供統(tǒng)一的sysfs接口(一類sysfs接口)。你只需要按照子系統(tǒng)要求注冊進(jìn)子系統(tǒng)就行。子系統(tǒng)就像應(yīng)用和你驅(qū)動之間的framework中間層,它幫你處理了很多通用的功能。另外自己再加入一些specific的sysfs接口即可。
確定了上面這些后,你就可以找到對應(yīng)的例子去抄(參考)了。說白了,linux 內(nèi)核設(shè)計者已經(jīng)給你搭好了大的框架,你所要思考框架的東西并不多,你需要的是熟悉內(nèi)核提供了什么框架子系統(tǒng),如何使用。
什么樣的bus,決定你調(diào)用什么總線API去訪問硬件,什么樣的功能決定你用什么樣的子系統(tǒng)來暴露接口給上層應(yīng)用使用。

當(dāng)前標(biāo)題:關(guān)于linux哪些能調(diào)用schedule或者等待事件的問題
鏈接分享:http://www.chinadenli.net/article32/iphdpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)App設(shè)計網(wǎng)站收錄外貿(mào)建站網(wǎng)站設(shè)計公司面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管