文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>字符设备驱动程序

字符设备驱动程序

时间:2009-05-31  来源:jj807

   主设备号标识设备对应的驱动程序。次设备号由内核使用,用于正确确定设备文件所指的设备。    在内何种,dev_t类型(<linux/types.h>中定义)用来保存设备编号,包括主、次设备号,它是一个32位的数,12位表示主设备号,20位表示次设备号。    一般使用<linux/kdev_t.h>中定义的宏来获得主设备号和次设备号:        MAJOR(dev_t dev);        MINOR(dev_v dev);    反之,要将主次设备号转换为dev_t类型,使用        MKDEV(int major,int minor)       在建立一个字符设备之前,驱动程序首先要做的是获得一个或多个设备编号。完成该工作的必要函数是register_chrdev_region,该函数在<linux/fs.h>中声明。  

int register_chrdev_region(dev_t first,unsigned int count,char *name); //获得设备编号

int alloc_chrdev_region(dev_t *dev,unsigned int firstminor,unsigned int count,char *name); //分配主设备号

void unregister_chrdev_region(dev_t first,unsigned int count);    //释放设备编号

   分配主设备号的最佳方式是:默认采用动态分配,同时保留在加载甚至编译时指定主设备号的余地。

   下面是scull.c中用来获取主设备号的代码:

if(scull_major){
   dev=MKDEV(scull_major,scull_minor);
result=regist_chrdev_region(dev,scull_nr_devs,"scull");
}else{
result=alloc_chrdev_region(&dev,scull_minor,scull_nr_devs,"scull");
scull_major=MAJOR(dev);
}
if(result<0){
   printk(KERN_WARNING "scull:can't get major %d\n",scull_major);
   return result;
}

相关阅读 更多 +
排行榜 更多 +
PvZ戴夫的时空冒险重置

PvZ戴夫的时空冒险重置

策略塔防 下载
PVZTV雪版阳光加50

PVZTV雪版阳光加50

策略塔防 下载
双刃战士雪姐

双刃战士雪姐

冒险解谜 下载