函式的呼叫
open
syscall_define3()
sys_open(char *filename,inflag)
do_sys_open()
do_file_open()
path_openat
do_tmpfile \return fd
finish_open
do_dentry_open
open = inode->fops->open
1. open使用者空間呼叫軟中斷時會產生乙個軟中斷
- 檢視軟中斷號
cd /usr/include/i386-linux-gnu/asm/unistd_32.h
13__nr_open 5
2. - cd
、 /usr/include/asm-generic/unistd.h
707#define __nr_open 1024 __syscall(__nr_open,sys_open)
3.cd /usr/include/i386-linux-gnu/bits/syscall.h
- #define sys_open nr_open
int alloc_chrdev_region(dev_t \*dev,unsigned baseminor,unsigned count,const
char \*name);
//引數
//dev_t *dev 申請裝置號
//unsigned baseminor 申請的第乙個次裝置號
//unsigned count 申請次裝置號的個數
//const char *name 裝置或驅動的名字
static
inline
void __iomem *ioremap(phys_add_t offset,unsiged long size)
inline
mdev -s
-> sys/class/目錄/檔案 -> /dev/檔案
sysfs:核心和使用者互動的統一介面
cat uevent –>
ls /dev/console l
需要在class的目錄下建立類名(目錄的名字)
class_create
struct class *cls;
class_create(this_module,」fs4412」);
在類名下建立節點
device_create
建立類的返回值
null
裝置號傳的資料 (void)
建立裝置名
device_create(cls,null,devno,null,」led」);
銷毀裝置
void device_destory();
銷毀類
void class_destory();
.owner = this_module //指向當前模組
次裝置號的識別
1. iminor
static
inline
unsigned iminor(const
struct inode *inode);
驅動 linux裝置驅動 字元裝置驅動開發
preface 前面對linux裝置驅動的相應知識點進行了總結,現在進入實踐階段!linux 裝置驅動入門篇 linux 裝置驅動掃盲篇 fedora下的字元裝置驅動開發 開發乙個基本的字元裝置驅動 在linux核心驅動中,字元裝置是最基本的裝置驅動。字元裝置包括了裝置最基本的操作,如開啟裝置 關閉...
字元裝置驅動開發
一 驅動模組的載入和解除安裝 linux 驅動有兩種執行方式,第一種就是將驅動編譯進 linux 核心中,這樣當 linux 核心啟動的時候就會自動執行驅動程式。第二種就是將驅動編譯成模組 linux 下模組擴充套件名為 ko 在 linux 核心啟動以後使用 insmod 命令載入驅動模組。在除錯...
字元裝置驅動 1
字元裝置驅動 1 成於堅持,敗於止步 linux 字元裝置驅動結構 cdev 結構體 在 linux 2.6 核心中使用 cdev 結構體描述字元裝置,cdev 結構體的定義如 所示。1 struct cdev 2 cdev 結構體的 dev t 成員定義了裝置號,為 32 位,其中高 12 位為主...