建立乙個字元裝置並在/dev目錄下建立節點的基本步驟:
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define hello_major 250
#define hello_minor 0
#define count_of_device 1
struct cdev cdev;
dev_t dev = 0;
struct file_operations hello_fops = ;
struct class *my_class;
static void char_reg_setup_cdev(void)
/*********************** 自動建立節點 **************************/
/*** 建立裝置類,用於device_create()的呼叫,
* 並使該裝置類在解除安裝驅動時,能呼叫class_destroy()刪除
**/my_class = class_create(this_module, "farsight_class");
if(is_err(my_class))
/*** 在/dev目錄下建立裝置,命名為hello,並將之與建立的類關聯
**/
device_create(my_class, null, devno, null, "hello");
}static int __init hello_init(void)
/*** 建立節點
**/
char_reg_setup_cdev();
printk(kern_info "char device registered\n");
return 0;
}static void __exit hello_exit(void)
module_init(hello_init);
module_exit(hello_exit);
module_license("gpl");
Linux裝置驅動之《字元裝置驅動》
linux裝置中最大的特點就是裝置操作猶如檔案操作一般,在應用層看來,硬體裝置只是乙個裝置檔案。應用程式可以像操作檔案一樣對硬體裝置進行操作,如open close read write 等。下面是乙個字元裝置驅動程式的簡單實現test.c 模組分析 1.初始化裝置驅動的結構體 struct fil...
Linux裝置驅動之字元裝置驅動
一 linux裝置的分類 linux系統將裝置分成三種基本型別,每個模組通常實現為其中某一類 字元模組 塊模組或網路模組。這三種型別有 字元裝置 字元裝置是個能夠像位元組流 類似檔案 一樣被訪問的裝置,由字元裝置驅動程式來實現這種特性。字元裝置可以通過檔案系統節點來訪問,比如 dev tty1等。這...
Linux裝置驅動之字元裝置(三)
在linux裝置驅動之字元裝置 一 中學習了裝置號的構成,裝置號的申請與釋放。在linux裝置驅動之字元裝置 二 中學習了如何建立乙個字元裝置,初始化,已經註冊到系統中和最後釋放該字元裝置。本節將結合前兩節學到的知道,編寫乙個簡單的字元裝置驅動。最後總結一下字元裝置驅動的模型。include inc...