免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5465 | 回复: 6

内核函数只找到声明,没找到实现函数? [复制链接]

论坛徽章:
0
发表于 2009-05-27 15:26 |显示全部楼层
5可用积分
我在搜索内核源代码linux 2.6.23的代码中,只找到了pci_bus_read_config_byte的声明,
int pci_bus_read_config_byte (struct pci_bus *bus, unsigned int devfn, int where, u8 *val);
搜索整个内核代码却不找到它的实现,请问难道没实现就可以用?还是我没找仔细,还是用了别的方法实现了。

还请大侠们指导,小弟十分感谢。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2009-05-27 15:55 |显示全部楼层
看这个帖子:
http://linux.chinaunix.net/bbs/v ... p;page=3#pid6978219

[ 本帖最后由 Godbach 于 2009-5-27 16:04 编辑 ]

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2009-05-27 16:01 |显示全部楼层
LZ看一下源码中driver/pci/access.c的代码
  1. #define PCI_byte_BAD 0
  2. #define PCI_word_BAD (pos & 1)
  3. #define PCI_dword_BAD (pos & 3)

  4. #define PCI_OP_READ(size,type,len) \
  5. int pci_bus_read_config_##size \
  6.         (struct pci_bus *bus, unsigned int devfn, int pos, type *value)        \
  7. {                                                                        \
  8.         int res;                                                        \
  9.         unsigned long flags;                                                \
  10.         u32 data = 0;                                                        \
  11.         if (PCI_##size##_BAD) return PCIBIOS_BAD_REGISTER_NUMBER;        \
  12.         spin_lock_irqsave(&pci_lock, flags);                                \
  13.         res = bus->ops->read(bus, devfn, pos, len, &data);                \
  14.         *value = (type)data;                                                \
  15.         spin_unlock_irqrestore(&pci_lock, flags);                        \
  16.         return res;                                                        \
  17. }

  18. #define PCI_OP_WRITE(size,type,len) \
  19. int pci_bus_write_config_##size \
  20.         (struct pci_bus *bus, unsigned int devfn, int pos, type value)        \
  21. {                                                                        \
  22.         int res;                                                        \
  23.         unsigned long flags;                                                \
  24.         if (PCI_##size##_BAD) return PCIBIOS_BAD_REGISTER_NUMBER;        \
  25.         spin_lock_irqsave(&pci_lock, flags);                                \
  26.         res = bus->ops->write(bus, devfn, pos, len, value);                \
  27.         spin_unlock_irqrestore(&pci_lock, flags);                        \
  28.         return res;                                                        \
  29. }

  30. PCI_OP_READ(byte, u8, 1)
  31. PCI_OP_READ(word, u16, 2)
  32. PCI_OP_READ(dword, u32, 4)
  33. PCI_OP_WRITE(byte, u8, 1)
  34. PCI_OP_WRITE(word, u16, 2)
  35. PCI_OP_WRITE(dword, u32, 4)

  36. EXPORT_SYMBOL(pci_bus_read_config_byte);
  37. EXPORT_SYMBOL(pci_bus_read_config_word);
  38. EXPORT_SYMBOL(pci_bus_read_config_dword);
  39. EXPORT_SYMBOL(pci_bus_write_config_byte);
  40. EXPORT_SYMBOL(pci_bus_write_config_word);
  41. EXPORT_SYMBOL(pci_bus_write_config_dword);
复制代码

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
发表于 2009-05-27 16:03 |显示全部楼层

回复 #1 babyliu6 的帖子

有人找到了!

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2009-05-27 16:05 |显示全部楼层
Linux下这种方式定义函数名还是比较常见的,改天总结一些。

论坛徽章:
0
发表于 2009-05-27 16:15 |显示全部楼层
有很多函数是用2重宏语言来写的 = =

之前我还发了牢骚~

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2009-05-27 16:21 |显示全部楼层
原帖由 superfight 于 2009-5-27 16:15 发表
有很多函数是用2重宏语言来写的 = =

之前我还发了牢骚~


是啊。我之前也是遇到一个网友的类似问题,后来找到了。后来自己再看RTL8139网卡驱动的时候,发现也是这样的用法。其实,可能很多和硬件相关的为了方便定接口,都会这样用的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP