混雜裝置,它們擁有相同的主裝置號(數字10),但次裝置號不同,我們稱這類裝置為混雜裝置(miscdevice)。然後呼叫其file_operations結構中註冊的檔案操作介面進行操作。對比普通字元裝置操作比較簡單
struct miscdevice ;例:
static
struct miscdevice gpio_miscdev =
;
int
misc_register
(struct miscdevice * misc)
引數:裝置描述結構體指標
例: misc_register
(&gpio_miscdev)
;
static
struct file_operations gpio_fops=
;各函式指標具體原型見字元裝置模型:https:
110261854
int
demisc_register
(struct miscdevice * misc)
引數:裝置描述結構體指標
例: misc_deregister
(&gpio_miscdev)
;
模板:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
<..>
#define device_name "imx28x_led"
static
intgpio_open
(struct inode *inode,
struct file *filp)
;static
intgpio_release
(struct inode *inode,
struct file *filp)
;ssize_t gpio_write
(struct file *filp,
const
char __user *buf, size_t count,loff_t *f_pos)
;static
intgpio_ioctl
(struct inode *inode,
struct file *flip,
unsigned
int command,
unsigned
long arg)
;static
intgpio_init
(void);
static
void
gpio_exit
(void);
static
intgpio_open
(struct inode *inode,
struct file *filp)
static
intgpio_release
(struct inode *inode,
struct file *filp)
ssize_t gpio_write
(struct file *filp,
const
char __user *buf, size_t count,
loff_t *f_pos)
static
intgpio_ioctl
(struct inode *inode,
struct file *flip,
unsigned
int command,
unsigned
long arg)
static
struct file_operations gpio_fops=
;static
struct miscdevice gpio_miscdev =
;static
int __init gpio_init
(void
)static
void __exit gpio_exit
(void
)module_init
(gpio_init)
;module_exit
(gpio_exit)
;
參考: 混雜裝置驅動模型
在linux系統中,存在一類字元裝置,它們擁有相同的主裝置號10,但次裝置號不同,我們稱這類裝置為混雜裝置 miscdevice 所有的混雜裝置形成乙個鍊錶,對裝置訪問時核心根據次裝置號查詢到相應的混雜裝置。如果乙個字元裝置驅動要驅動多個裝置,則它不應該選用混雜裝置來實現。linux中使用struc...
Linux 混雜裝置驅動模型
混雜裝置miscdevice是字元裝置的一種,它們共享乙個主裝置號misc major 即10 但次裝置號不同,所有的miscdevice裝置形成了乙個鍊錶,對裝置訪問時核心根據次裝置號查詢對應的miscdevice裝置。這樣做的好處,節約主裝置號,將某些裝置用鍊錶的形式鏈結在一起,最後通過查詢次裝...
12 混雜裝置驅動模型
混雜裝置驅動模型 在linux系統中,存在一類字元裝置,它們擁有相同的主裝置號 數字10 但次裝置號不同,我們稱這類裝置為混雜裝置 miscdevice 所有的混雜裝置形成乙個鍊錶,對裝置訪問時核心根據次裝置號查詢到相應的混雜裝置。一 裝置描述 linux中使用struct miscdevice來描...