misc裝置驅動。又稱混雜裝置驅動。
misc裝置驅動共享一個裝置驅動号MISC_MAJOR。它在include\linux\major.h中定義:
#define MISC_MAJOR 10
miscdevice的結構體例如以下,它在include\linux\miscdevice.h中定義:
struct miscdevice {
int minor;
const char *name;
const struct file_operations *fops;
struct list_head list;
struct device *parent;
struct device *this_device;
const char *nodename;
mode_t mode;
};
misc裝置驅動的注冊和登出時用這兩個函數,他們也定義在include\linux\miscdevice.h中:
extern int misc_register(struct miscdevice * misc);
extern int misc_deregister(struct miscdevice *misc);
樣例:
再配置設定此裝置号時,能夠設為MISC_DYNAMIC_MINOR。這樣會自己主動配置設定此裝置号,如:
static struct miscdevice misc = {
.minor = MISC_DYNAMIC_MINOR,
.name = DEVICE_NAME,
.fops = &dev_fops,
以下的是file_operations結構體:
static struct file_operations dev_fops = {
.owner = THIS_MODULE,
.unlocked_ioctl = sbc2440_leds_ioctl,
注冊和登出函數:
static int __init dev_init(void)
{
int ret;
…………
ret = misc_register(&misc);
printk (DEVICE_NAME"\tinitialized\n");
return ret;
}
static void __exit dev_exit(void)
misc_deregister(&misc);