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

正文內(nèi)容

第10課設(shè)備驅(qū)動(dòng)開(kāi)發(fā)-資料下載頁(yè)

2024-09-28 16:43本頁(yè)面

【導(dǎo)讀】設(shè)備文件和設(shè)備號(hào)。設(shè)備驅(qū)動(dòng)程序的主要功能。–對(duì)設(shè)備的初始化和釋放。–檢測(cè)和處理設(shè)備出現(xiàn)的錯(cuò)誤。無(wú)需緩沖直接讀寫(xiě)的設(shè)備。位于設(shè)備中的地址都可以對(duì)其進(jìn)行讀寫(xiě)。作,包括打開(kāi)、關(guān)閉、讀寫(xiě)和I/O控制。程序的不同硬件設(shè)備。設(shè)備模型提供獨(dú)立的機(jī)制表示設(shè)備,并表示其在系統(tǒng)中的拓?fù)浣Y(jié)構(gòu)。–從樹(shù)的葉子向根的方向依次遍歷,確保以正確順序關(guān)閉各個(gè)設(shè)備的電源。

  

【正文】 void downgrade_write(struct rw_semaphore *sem)。 原子操作 (atomic operation) ? 原子操作 在執(zhí)行完畢 前不會(huì) 被任何其他 任務(wù)打斷 。 需要 CPU硬件支持 ; 它 的 API和原子類型的定義都在內(nèi)核源碼樹(shù)include/asm/,使用匯編語(yǔ)言實(shí)現(xiàn)。 ? 很多 資源 計(jì)數(shù) ( reft) 操作 是 通過(guò)原子操作實(shí)現(xiàn)的。 原子操作的使用 ? 原子 操作類型的定義 – typedef struct {volatile int counter。}atomic_t。 ? 原子操作 API – atomic_read(atomic_t *v)。 – atomic_set(atomic_t *v,int i)。 – void atomic_add(int I, atomic_t *v)。 – void atomic_sub(int I,atomic_t *v)。 – void atomic_inc(atomic_t *v)。 – void atomic_dec(atomic_t *v)。 – … 完成事件 (pletion) ? pletion是一種輕量級(jí)的同步機(jī)制,它允許一個(gè)任務(wù)告訴另一個(gè)任務(wù)工作已經(jīng)完成。 ? 與 semaphore的功能類似,但使用方法更為簡(jiǎn)單 – 適用于需要睡眠和喚醒的情景 :可以讓一個(gè) 任務(wù) 進(jìn)入 睡眠直到其它任務(wù)完成某些處理過(guò)程為止 。 ? 如果 要使用 pletion,需要包含linux/,同時(shí)創(chuàng)建類型為 struct pletion的變量。 完成事件的使用 ? 靜態(tài)聲明和初始化 – DECLARE_COMPLETION(my_pletion)。 ? 動(dòng)態(tài) 聲明 和 初始化 – struct pletion my_pletion。 – init_pletion(amp。my_pleiton)。 ? 等待某個(gè)進(jìn)程的完成 – void wait_for_pletion(struct pletion *p)。 ? 喚醒等待該事件的 進(jìn)程 – void plete(struct pletion *p)。 – void plete_all(struct pletion *p)。 工作隊(duì)列 ? Linux 隊(duì)列 (Work Queue),是 將工作 推 后 執(zhí)行的 機(jī)制 。 – 比如一個(gè)中斷 ISR里面要做很多比較耗時(shí)的操作,這時(shí)就可以把耗時(shí)的工作放到工作隊(duì)列中去滯后執(zhí)行。可以 交給 內(nèi)核線程去 執(zhí)行 , 允許重新 調(diào)度 或 睡眠。 ? 數(shù)據(jù)結(jié)構(gòu): struct work_struct { atomic_long_t data。 struct list_head entry。 work_func_t func。 }。 工作隊(duì)列的使用 ? 初始化 – INIT_WORK(_work, _func, _data) ? 使用 – int schedule_work(struct work_struct *work)。 – int schedule_delayed_work(struct work_struct *work, unsigned long delay)。 – void flush_scheduled_work(void)。 – int cancel_delayed_work(struct work_struct *work)。 ? 創(chuàng)建和調(diào)度工作隊(duì)列 – struct workqueue_struct *create_workqueue(const char *name)。 – int queue_work(struct workqueue_struct *wq, struct work_struct *work)。 – … 異步 I/O ? 非 阻塞 I/O(nonblocking IO),又稱 異步I/O(Asynchronous IO): – 用戶程序發(fā)出 I/O請(qǐng)求 命令 后 ,不 必等待 I/O操作完成就 可以 繼續(xù)做另外的 事情 ; – 當(dāng) I/O操作 實(shí)際 完成 時(shí) , 內(nèi)核會(huì)通過(guò)函數(shù)回 調(diào)(function callback)或者 信號(hào) 機(jī)制 (signal mechanism)通知 用戶進(jìn)程 。 – 提高系統(tǒng) 的響應(yīng)速度 ? 要 使用 AIO功能,需要包含頭文件 Thanks!
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1