91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于linux哪些能調用schedule或者等待事件的問題

發布時間:2020-05-11 17:37:52 來源:網絡 閱讀:393 作者:GaoNeil 欄目:移動開發

關于linux哪些能調用schedule或者等待事件的問題

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

因為spin_lock成功后,spin_lock內部調用了preempt_disable,所以spin_lock后,不能調用schedule()。當然spin_unlock會調用preempt_enable,所以后面可以根據什么執行context來判斷是否能調用schedule()函數。

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

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

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

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

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

祁阳县| 轮台县| 崇州市| 贵南县| 长子县| 都兰县| 新蔡县| 葵青区| 安多县| 凤城市| 郁南县| 陈巴尔虎旗| 广河县| 桓台县| 焉耆| 东山县| 六枝特区| 江阴市| 龙井市| 阜宁县| 虎林市| 奉化市| 宁波市| 平和县| 修武县| 龙泉市| 罗甸县| 龙陵县| 太康县| 朝阳市| 本溪市| 阿克苏市| 瓮安县| 寿光市| 虎林市| 甘孜| 湛江市| 鹤岗市| 应城市| 安西县| 淄博市|