清空記憶體資料memset 引數1 位址,引數2 起始位址,引數3 長度
字元裝置初始化函式cdev_init
字元裝置註冊函式cdev_add
#include
#include
// 定義module_param module_param_arrary 函式的標頭檔案
#include
// 定義引數函式中perm 引數的列舉量標頭檔案
#include
// mkdev 轉換裝置號資料型別的巨集定義
#include
// 三個字元裝置號函式
#include
// 定義字元裝置的結構體
#include
// 分配記憶體空間的函式
#include
#defind device_name "dcdev"
;#defind device_minor_num 2
;#defind device_major 0
;// 主裝置號
#defind device_minor 0
;#defind regdev_size 3000;
module_init
(sdev_init)
;module_exit
(sdev_exit)
;static
int module_arg1,module_arg2;
static
int int_array[50]
;static
int int_num;
int numdev_major = device_major;
int numdev_minor = device_minor;
/**/
// 輸入主裝置號
module_param
(numdev_major,
int,s_irusr)
;// 輸入次裝置號
module_param
(numdev_minor,
int,s_irusr)
;struct reg_dev
;struct file_operations my_fops =
;static
void
ret_init_cdev
(struct reg_dev * dev,
int index)
else
}struct reg_dev* my_devices;
static
intsdev_init
(void
)elseif(
!ret)
my_devices =
kmalloc
(device_minor_num*
sizeof
(struct reg_dev)
,gpf_kernel);if
(!my_devices)
/*初始化裝置*/
for(
int i =
0;i < device_minor_num;i++
)memset
(my_devices,
0,device_minor_num *
sizeof
(struct reg_dev));
printk
(kern_emerg,
"\ dcdev enter!\n ");
return0;
fail:
/*登出裝置號*/
unregister_chrdev_region
(mkdev
(numdev_major,numdev_minor)
,device_minor_num)
;printk
(kern_emerg,
"\kmalloc is fail!\n ");
return0;
}static
intsdev_exit
(void
)unregister_chrdev_region
(mkdev
(numdev_major,numdev_minor)
,device_minor_num)
;return0;
}
嵌入式學習筆記(五) 驅動註冊
defind driver name hello ctl include include 驅動註冊的標頭檔案和裝置註冊的標頭檔案和解除安裝函式 include module license dual bsd gpl module author xubaipei struct platform dri...
嵌入式學習筆記
嵌入式系統定義 技術角度以應用為中心,以計算機技術為基礎,軟硬體可裁剪,應用系統對功能,可靠性,成本,體積,功耗,和應用環境有特殊要求的專用計算機系統系統角度 設計完成複雜功能的硬體和軟體並使其緊密契合在一起的計算機系統 實時在規定的時間內,完成規定的動作 紅帽linux 基本命令 ls 檢視當前目...
嵌入式學習筆記
1 3 買了兩本書鳥哥的 鳥哥的linux私房菜基礎學習篇 第三版 和偉山東的 嵌入式linux應用開發完全手 冊 暫時看不懂 4 看了王剛的 linux系統移植 第二版 實現了windows和linux虛擬機器的檔案的共享 2014 11 02 主機可以ping通虛擬機器,虛擬機器ping不通主機...