- 論壇徽章:
- 0
|
在dreamice 的 揭開字符設(shè)備驅(qū)動(dòng)程序的面紗 文章中,分配設(shè)備號(hào)是這樣的:- 198 if (globalmem_major)
- 199 result = register_chrdev_region(devno, 1, "globalmem");
- 200 else /*動(dòng)態(tài)申請(qǐng)*/
- 201 {
- 202 result = alloc_chrdev_region(&devno, 0, 1, "globalmem");
- 203 globalmem_major = MAJOR(devno);
- 204 }
- 205 if (result < 0)
- 206 return result;
復(fù)制代碼 查了一下,alloc_chrdev_region原型:- 233 int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count,
- 234 const char *name)
- 235 {
- 236 struct char_device_struct *cd;
- 237 cd = __register_chrdev_region(0, baseminor, count, name);
- 238 if (IS_ERR(cd))
- 239 return PTR_ERR(cd);
- 240 *dev = MKDEV(cd->major, cd->baseminor);
- 241 return 0;
- 242 }
復(fù)制代碼 PTR_ERR的定義:- 27 static inline long PTR_ERR(const void *ptr)
- 28 {
- 29 return (long) ptr;
- 30 }
復(fù)制代碼 想問的是:為什么上面的判斷是 if (result < 0) 啊? 按理說result應(yīng)該是一個(gè)指針啊。
哪位知道的解釋一下?
[ 本帖最后由 rossini23 于 2008-12-8 23:14 編輯 ] |
|