Linux字元驅動程式的基本結構與函式
基本的函式與結構
函式
//驅動註冊,登出函式
module_init(void (*func));
module_exit(void (*func));
這兩個函式,將會在執行insmod和rmmod時對傳入的函式進行回撥。
intregister_chrdev(unsignedintmajor,constchar*name,
struct file_operations*fops);
其中引數major如果等於0,則表示採用系統動態分配的主裝置號;不為0,則表示靜態註冊。
int unregister_chrdev(unsignedintmajor,constchar*name);
登出字元裝置可以使用unregister_chrdev函式。
//開啟檔案
int open(const char *pathname, int flags, mode_t mode);
//讀取檔案到buf
int read(int fd, const void *buf, size_t length);
//寫buf到檔案
int write(int fd, const void *buf, size_t length);
//ioctl是裝置驅動程式中對裝置的I/O通道進行管理的函式
//用於應用函式到驅動程式的傳參
int ioctl(int fd, ind cmd, …);
結構
struct file_operations {
struct module *owner;
ssize_t (*read)(struct file *,charchar *, size_t,
loff_t *);
//從裝置同步讀取資料
ssize_t (*write)(struct file *,const charchar *,
size_t, loff_t *);
//向裝置同步寫入資料
int (*ioctl) (struct inode *, struct file *,
unsigned int, unsigned long);
//執行裝置IO控制命令
int (*open) (struct inode *, struct file *);
//開啟
...
}
應用程式函式與驅動程式函式的關係
當在應用程式中用open開啟某個裝置時,在file_operations 結構體的open指向的成員函式,將會被回撥;相應的,read,write,ioctl等函式都會如此的呼叫。
相關文章
- UNIX下裝置驅動程式的基本結構(轉)
- 驅動開發之基本資料結構資料結構
- 簡單linux字元裝置驅動程式與程式設計小技巧(上)Linux字元程式設計
- mysql 字元函式小結MySql字元函式
- 第三章 函式與程式結構函式
- Linux裝置驅動之字元裝置驅動Linux字元
- Linux tty驅動程式 架構Linux架構
- Linux驅動實踐:你知道【字元裝置驅動程式】的兩種寫法嗎?Linux字元
- 字元裝置驅動 —— 字元裝置驅動框架字元框架
- 建構函式與解構函式函式
- ArmSoM系列板卡 嵌入式Linux驅動開發實戰指南 之 字元裝置驅動Linux字元
- ORACLE單行函式與多行函式之二:字元函式示例Oracle函式字元
- 控制結構與函式練習(一)函式
- 控制結構與函式練習(二)函式
- 控制結構與函式練習(三)函式
- 新字元驅動框架驅動LED字元框架
- 字元驅動框架字元框架
- 深入淺出:Linux裝置驅動之字元裝置驅動Linux字元
- 字元函式字元函式
- 應用呼叫驅動的ioctl函式函式
- linux C程式設計中常用的函式--字元測試篇LinuxC程式程式設計函式字元
- php字串與字元替換函式PHP字串字元函式
- 關於建構函式與解構函式的分享函式
- 蛻變成蝶:Linux裝置驅動之字元裝置驅動Linux字元
- 蛻變成蝶~Linux裝置驅動之字元裝置驅動Linux字元
- Python3控制結構與函式Python函式
- 建構函式與普通函式的區別函式
- linux 裝置驅動基本概念Linux
- oracle字元函式Oracle字元函式
- PHP筆記:建構函式與解構函式PHP筆記函式
- 字元函式、數字函式和日期函式字元函式
- linux下時間有關的函式和結構體Linux函式結構體
- getopt_long函式基本用法-linux函式Linux
- 字元驅動小例子解析字元
- LED字元裝置驅動字元
- Linux常用C函式—字元測試篇(轉)Linux函式字元
- linux網路卡驅動程式的編譯與安裝(轉)Linux編譯
- 關於字元函式的一些應用總結字元函式