Chinaunix

标题: cdev_alloc 的疑问 [打印本页]

作者: 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

  1. 527 /**
  2. 528  * cdev_alloc() - allocate a cdev structure
  3. 529  *  
  4. 530  * Allocates and returns a cdev structure, or NULL on failure.
  5. 531  */
  6. 532 struct cdev *cdev_alloc(void)
  7. 533 {      
  8. 534     struct cdev *p = kzalloc(sizeof(struct cdev), GFP_KERNEL);
  9. 535     if (p) {
  10. 536         INIT_LIST_HEAD(&p->list);
  11. 537         kobject_init(&p->kobj, &ktype_cdev_dynamic);
  12. 538     }
  13. 539     return p;
  14. 540 }      
复制代码


因为kzalloc以后还要kobject_init
作者: openspace    时间: 2009-11-07 23:11
原帖由 qiangqiang02 于 2009-10-20 16:58 发表
cdev_alloc 可以用来动态分配一个struct cdev 结构

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

问题:

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


封装复用,还有LS说的,实际上单纯分配一个结构简单,但是要更新相关的系统数据结构就比较复杂了
封装一下方便许多




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2