freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

第10課設備驅動開發(fā)-wenkub

2022-10-09 16:43:18 本頁面
 

【正文】 設備分類 ? Linux支持三 類 主要 硬件設備 – 字符 設備 (character device):每次讀寫一個字符;無需 緩沖直接讀寫的 設備 。 1 嵌入式 系統(tǒng) An Introduction to Embedded System 浙江大學計算機學院 2020年 4月 第 10課 設備驅動開發(fā) 提綱 ? Linux設備驅動簡介 ? 設備 驅動結構 ? 內核設備模型 ? 同步機制 ? 工作隊列 ? 異步 I/O Linux設備驅動簡介 ? 驅動 的功能 ? 設備分類 ? 設備文件和設備號 ? 代碼分布 驅動的功能 ? 設備驅動程序 的主要功能 – 對設備的初始化和釋放 。 – 塊 設備 (block device):每次讀寫一個塊 。 Linux設備驅動代碼的分布 ? 在 drivers目錄下: – block – char – cdrom – pci – scsi – – sound 驅動程序 的注冊與注銷 ? 注冊 – fs/ register_chrdev()函數 – fs/ register_blkdev()函數 ? 注銷 – unregister_chrdev()函數 – unregister_blkdev()函數 設備的 操作 ? 設備的打開與 釋放 ? 設備的讀寫 操作 ? 設備 的控制操作 struct file_operations { struct module *owner。 ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t)。 int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long)。 int (*open) (struct inode *, struct file *)。 int (*aio_fsync) (struct kiocb *, int datasync)。 unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long)。 ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int)。 – 將設備按類型分類 – 將設備和對應驅動聯系起來 – 最小化 代碼重復 – 列舉 系統(tǒng) 中所有設備,觀察其狀態(tài),查看其連接 總線 – 用樹的形式將全部設備結構完整、有效地展現,包括所有總線和內部 連接 – 從 樹的葉子向根的方向依次遍歷,確保以正確順序關閉各個設備的電源。 各個 Platform device 和 Platform driver掛載在虛擬總線 platform_bus上 ? 接口 定義在 linux/中。 自旋鎖( 2) ? 自旋鎖的類型是 spinlock_t ? 初始化 – spinlock_t my_spinlock = SPIN_LOCK_UNLOCKED。 ? 非 阻塞版本: – int spin_trylock(spinlock_t *lock)。 ? 讀寫鎖類型是 rwlock_t, 位于linux/ 讀寫鎖( 2) ? 初始化: – rwlock_t my_rwlock=RW_LOCK_UNLOCKED。 – void read_unlock(rwlock_t *lock)。 RCU鎖( 1) ? RCU( ReadCopy Update,讀 拷貝修改 ) 鎖機制是 。 RCU鎖( 2) ? 加鎖 : rcu_read_lock() ? 釋放鎖 : rcu_read_unlock() ? 同步 RCU鎖: synchronize_rcu()。 seqlock的定義如下: typedef struct { unsigned sequence。 如果讀者獲取了鎖,寫者依然可
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1