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

正文內(nèi)容

第10課設(shè)備驅(qū)動(dòng)開(kāi)發(fā)(完整版)

  

【正文】 k( 2) ? 讀者: unsigned int seq。 seqlock( 1) ? Linux Lock, seqlock, 目的是在讀者操作特別多的情況下,避免寫(xiě)操作餓死。 – void write_unlock_bh(rwlock_t *lock)。 ? 任意 數(shù)目的 讀者 可以 同時(shí) 進(jìn)入臨界區(qū),但是寫(xiě)者必須是排他的 。 自旋 鎖使用者一般保持鎖事件非常短,所以選擇自旋而不是睡眠,效率會(huì)高于互斥鎖。 內(nèi)核設(shè)備模型 ? 設(shè)備模型 概述 ? sysfs ? 驅(qū)動(dòng) 模型 ? kobject ? platform總線 設(shè)備 模型 概述 ? 設(shè)備模型提供獨(dú)立的機(jī)制表示設(shè)備,并表示其在系統(tǒng)中的拓?fù)浣Y(jié)構(gòu) 。 ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int)。 int (*mmap) (struct file *, struct vm_area_struct *)。 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *)。 設(shè)備分類(lèi) ? Linux支持三 類(lèi) 主要 硬件設(shè)備 – 字符 設(shè)備 (character device):每次讀寫(xiě)一個(gè)字符;無(wú)需 緩沖直接讀寫(xiě)的 設(shè)備 。 – 塊 設(shè)備 (block device):每次讀寫(xiě)一個(gè)塊 。 ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t)。 int (*open) (struct inode *, struct file *)。 unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long)。 – 將設(shè)備按類(lèi)型分類(lèi) – 將設(shè)備和對(duì)應(yīng)驅(qū)動(dòng)聯(lián)系起來(lái) – 最小化 代碼重復(fù) – 列舉 系統(tǒng) 中所有設(shè)備,觀察其狀態(tài),查看其連接 總線 – 用樹(shù)的形式將全部設(shè)備結(jié)構(gòu)完整、有效地展現(xiàn),包括所有總線和內(nèi)部 連接 – 從 樹(shù)的葉子向根的方向依次遍歷,確保以正確順序關(guān)閉各個(gè)設(shè)備的電源。 自旋鎖( 2) ? 自旋鎖的類(lèi)型是 spinlock_t ? 初始化 – spinlock_t my_spinlock = SPIN_LOCK_UNLOCKED。 ? 讀寫(xiě)鎖類(lèi)型是 rwlock_t, 位于linux/ 讀寫(xiě)鎖( 2) ? 初始化: – rwlock_t my_rwlock=RW_LOCK_UNLOCKED。 RCU鎖( 1) ? RCU( ReadCopy Update,讀 拷貝修改 ) 鎖機(jī)制是 。 seqlock的定義如下: typedef struct { unsigned sequence。 do { seq = read_seqbegin(amp。當(dāng) 一個(gè)任務(wù)試圖獲得已被占用的信號(hào)量時(shí),會(huì)進(jìn)入一個(gè)等待隊(duì)列,然后睡眠。 讀寫(xiě)信號(hào)量( rw_semaphore) ? 任意多個(gè)讀者 可以 同時(shí)擁有一個(gè)讀寫(xiě)信號(hào)量 。 – void up_write(struct rw_semaphore *sem)。 – atomic_set(atomic_t *v,int i)。 完成事件的使用 ? 靜態(tài)聲明和初始化 – DECLARE_COMPLETION(my_pletion)。 – 比如一個(gè)中斷 ISR里面要做很多比較耗時(shí)的操作,這時(shí)就可以把耗時(shí)的工作放到工作隊(duì)列中去滯后執(zhí)行。 – void flush_scheduled_work(void)。 ? 創(chuàng)建和調(diào)度工作隊(duì)列 – struct workqueue_struct *create_workqueue(const char *name)。 ? 數(shù)據(jù)結(jié)構(gòu): struct work_struct { atomic_long_t data。 – init_pletion(amp。 – void atomic_sub(int I,atomic_t *v)。 原子操作 (atomic operation) ? 原子操作 在執(zhí)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1