字元裝置驅動基本模型:
驅動初始化
實現驅動裝置
驅動登出
1.驅動初始化
1.分配cdev------------------主要是分配乙個cdev結構體和申請裝置號 靜態分配動態分配
2.初始化cdev---------------int cdev_init(struct cdev *, struct file_operation *)用於初始化cdev的成員, - 並建立與file_ operation的連線。
3.註冊cdev-----------------int cdev_add(struct cdev*, dev_t,unsigned)向系統新增乙個cdev完成裝置註冊
4.硬體初始化---------------硬體資源的申請與配置,涉及位址對映,暫存器的讀寫等操作
主裝置號用來標識與裝置檔案鏈結的驅動程式。次裝置號用來辨別是哪個裝置。cdev結構體的dev_t成員敵營一樂裝置號,高12位為主裝置號,低20位為次裝置號。
裝置號的獲得與構成:
獲得主裝置號:major(dev_t dev)
獲得次裝置號:minor(dev_t dev)
生成裝置號:mkdev(int major, int minor)
裝置號申請:
靜態:int register_chrdev_region(dev_t from, unsigned count, const char *name);
2.實現裝置操作
使用者空間的open write read ioctrl等系統呼叫最終需要在file_operation結構體中落實,他們是字元裝置與核心的介面。
舉例如下:
struct file_operation hello_fops = {
.owner = this_module,
.open = hello_open,
.release = hello_release,
.read = hello_read,
.write = hello_write
在驅動**中,實現相關的裝置操作函式時,需要按照核心中給定的引數型別、返回值型別等實現。
3.驅動登出
1.刪除cdev-------------在字元裝置驅動模組解除安裝函式中通過cdev_del()向系統 刪除乙個cdev,完成字元裝置的登出。
2.釋放裝置號-----------unregister_chrdev_region()被呼叫釋放原先申請的裝置號。
建立裝置節點:
Python檢測重複字 部分中華字經重複字檢測
中文去標點符號,中文繁體字轉化簡體字,列表檢測並輸出重複項,list當多個相同值時索引 關於去標點,使用包 zhon,直接pip即可 安裝及使用 關於中文繁簡轉換,安裝opencc python 安裝及使用 coding utf 8 author zhr date 2019 10 25 20 26 ...
監聽套接字 連線套接字
摘要 對於伺服器程式設計中最重要的一步等待並接受客戶的連線,那麼這一步在程式設計中如何完成,accept函式就是完成這一步的。它從核心中取出已經建立的客戶連線,然後把這個已經建立的連線返回給使用者程式,此時使用者程式就可以與自己的客戶進行點到點的通訊了。accept函式等待並接受客戶請求 inclu...
java FileInputStream 位元組流
首先要明白,檔案儲存在硬碟上實質上儲存的都是數字,因此通過fileinputstream中的read 方法讀取的是數字。fileinputstream fis new fileinputstream new file test.txt int x fis.read system.out.printl...