qiangqiang02 发表于 2009-10-20 16:58

cdev_alloc 的疑问

cdev_alloc 可以用来动态分配一个struct cdev 结构

函数原型:
      struct cdev *cdev_alloc(void) ;

问题:

      要想动态或者一个struct cdev,用kmalloc不就可以了吗?为什么还有一个专门的处理函数?

T-bagwell 发表于 2009-10-20 17:13


527 /**
528* cdev_alloc() - allocate a cdev structure
529*
530* Allocates and returns a cdev structure, or NULL on failure.
531*/
532 struct cdev *cdev_alloc(void)
533 {      
534   struct cdev *p = kzalloc(sizeof(struct cdev), GFP_KERNEL);
535   if (p) {
536         INIT_LIST_HEAD(&p->list);
537         kobject_init(&p->kobj, &ktype_cdev_dynamic);
538   }
539   return p;
540 }      


因为kzalloc以后还要kobject_init

openspace 发表于 2009-11-07 23:11

原帖由 qiangqiang02 于 2009-10-20 16:58 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
cdev_alloc 可以用来动态分配一个struct cdev 结构

函数原型:
      struct cdev *cdev_alloc(void) ;

问题:

      要想动态或者一个struct cdev,用kmalloc不就可以了吗?为什么还有一个专门的处理 ...

封装复用,还有LS说的,实际上单纯分配一个结构简单,但是要更新相关的系统数据结构就比较复杂了
封装一下方便许多
页: [1]
查看完整版本: cdev_alloc 的疑问