原创 【內核&驅動】字符設備驅動程序【3】
open和release open方法 提供給驅動程序以初始化的能力,open方法應完成以下工作 檢查設備特定的錯誤 如果設備是首次打開,則對其進行初始化工作 如有必要,更新f_op組件 分配並填寫置於fi
原创 【內核&驅動】字符設備驅動程序【1】
1.編寫驅動程序的第一部就是定義驅動程序爲用戶提供的能力(機制); 2.舉例在計算機內存之上實現若干設備抽象: scull:simple character Utility for Loading Localities, 區域裝載的簡單字
原创 【內核&驅動】併發和競態【1】
1.導致併發執行的原因 硬件中斷服務 SMP(對稱多處理) 內核搶佔 schedule() 2.scull的缺陷 if (!dptr->data[s_pos]) { dptr->data[s
原创 【內核&驅動】字符設備驅動程序【2】
一些重要的數據結構(VFS核心結構體) 1.super_block 和mount一一對應,這也意味着如果mount操作,在內核中分配新的結構體,存儲分區信息 umount時,VFS就把該結構體釋放掉 mount幾次內核中就有幾個supe
原创 C語言預處理命令總結大全
C程序的源代碼中可包括各種編譯指令,這些指令稱爲預處理命令。雖然它們實際上不是C語言的一部分,但卻擴展了C程序設計的環境。本節將介紹如何應用預處理程序和註釋簡化程序開發過程,並提高程序的可讀性。ANSI標準定義的C語言預處理程序包括下列命
原创 消息隊列創建流程及代碼示例
消息隊列是消息的鏈接表,存放在內核中並由消息隊列標示符標識。 1. 創建或打開一個隊列 int msgget(key_t key, int flag); key: 鍵 由ftok()生成 key_
原创 C++ Templates讀書筆記1__函數模板
本文是《C++ Templates》一書的學習筆記,如果發現有錯誤或者不明確的地方,歡迎指正,如果對本文有更好的建議,同樣也歡迎提出,謝謝。 模板是泛型編程的基礎,所謂泛型編程,就是以獨立與任何特定類型的方式編寫代碼。 函數模板的示例
原创 設計模式C++版_1_簡單工廠模式
本文是學習設計模式的學習筆記,文中引用瞭如下作者(書籍、博客)的內容,實例程序在《設計模式C++版》的基礎上有所改動,特此聲明。 Peixing Yang的《大話設計模式C++源代碼》 程傑的《大話設計模式》 K_Eckel的《設計模式
原创 【APUE】進程環境
本文章介紹進程的環境1.main函數 c程序總是從main函數開始執行的,其原型是 int main(int argc, char **argv); //argc是命令行參數的個數 //ar
原创 信號及代碼示例
1. 信號的概念 每個信號都有一個以SIG開頭的名字。 在頭文件<signal.h>中,這些信號都被定義爲正整數。不存在編號爲0的信號。 在信號發生的時候,可以進行一下處理: 1)忽略此信號
原创 【內核&驅動】字符設備驅動程序【3】
open和release open方法 提供給驅動程序以初始化的能力,open方法應完成以下工作 檢查設備特定的錯誤 如果設備是首次打開,則對其進行初始化工作 如有必要,更新f_op組件 分配並填寫置於fi
原创 【APUE】文件和目錄
本文章將描述文件系統的其他特性和文件的性質。1 stat、fstat、和lstat函數 獲取文件的信息結構 #include <sys/stat.h> int stat(const char *restrict p
原创 【內核&驅動】字符設備驅動程序【1】
1.編寫驅動程序的第一部就是定義驅動程序爲用戶提供的能力(機制); 2.舉例在計算機內存之上實現若干設備抽象: scull:simple character Utility for Loading Localities, 區域裝載的簡單字
原创 【APUE】標準I/O庫
本文章說明標準I/O庫1.流和FILE對象 對於文件IO都是針對於文件描述符的,但是對於標準I/O,則是針對於流進行的 當用標準I/O庫打開一個文件的時候,我們已使一個流和一個文件相關聯 對於ASCII字符集,一個
原创 【APUE】文件I/O
1 文件描述符 所有打開的文件都通過文件描述符引用,文件描述符是一個非負整數,本質是一個數組下標。 當打開或創建一個文件的時候,內核向進程返回一個文件描述符。 open,creat返回文件描述符來標識該文件,將其作爲參數