- 論壇徽章:
- 0
|
在Linux2.6內(nèi)核中一個(gè)字符設(shè)備用cdev結(jié)構(gòu)來描述,其定義如下:
struct cdev {
struct kobject kobj;
struct module *owner; //所屬模塊
const struct file_operations *ops;
//文件操作結(jié)構(gòu),在寫驅(qū)動時(shí),其結(jié)構(gòu)體內(nèi)的大部分函數(shù)要被實(shí)現(xiàn)
struct list_head list;
dev_t dev; //設(shè)備號,int 類型,高12位為主設(shè)備號,低20位為次設(shè)備號
unsigned int count;
};
可以使用如下宏調(diào)用來獲得主、次設(shè)備號:
MAJOR(dev_t dev)
MINOR(dev_t dev)
MKDEV(int major,int minor) //通過主次設(shè)備號來生成dev_t
以上宏調(diào)用在內(nèi)核源碼中如此定義:
#define MINORBITS 20
#define MINORMASK ((1U > MINORBITS))
#define MINOR(dev) ((unsigned int) ((dev) & MINORMASK))
#define MKDEV(ma,mi) (((ma) cdev_add() //此過程在加載模塊中
cdev_del()-->unregister_chrdev_region() //此過程在卸載模塊中
本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u3/110644/showart_2165877.html |
|