| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 450 人关注过本帖
标题:请帮忙看下这段程序,具体的解释下
只看楼主 加入收藏
wangjiefeng
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-7-28
收藏
 问题点数:0 回复次数:0 
请帮忙看下这段程序,具体的解释下
这是一个用C语言写的遍历PCI设备的程序
 printf("\nNo.  Vendor/Device  Bus No.  Dev No.  Func No.  Class");
  i = 0;
  for (busNo = 0; busNo < 5; busNo++) {                 // bus No
    for(deviceNo = 0; deviceNo < 32; deviceNo++) {      // device no
      for (funcNo = 0; funcNo < 8; funcNo++) {          // Function No
        //j = 0x80000000 + i * 2048;
        regVal = 0x80000000                             // bit31 使能
                 + (busNo << 16)                        // Bus No
                 + (deviceNo << 11)                     // Device No
                 + (funcNo << 8);                       // Function No
        outportl(0xCF8, regVal);
        retVal = inportl(0xCFC);                        // 得到配置空间偏移为0的双字
        if (retVal != 0xffffffff) {                     // 设备存在
          i++;
          vendorID = retVal & 0xffff;                   // 得到供应商代码
          devID    = (retVal >> 16) & 0xffff;           // 得到设备代码
          regVal += 0x08;                               // 得到配置空间偏移为08H的双字
          outportl(0xCF8, regVal);
          retVal = inportl(0xCFC);
          retVal = retVal >> 8;                         // 滤掉版本号
          class3 = retVal & 0x0FF;                      // 得到三个分类代码
          class2 = (retVal >> 8) &0x0FF;
          class1 = (retVal >> 8) &0x0FF;
          printf("\n%02d   %04x/%04x       %02x       %02x       %02x      %02x-%02x-%02x",
                 i, vendorID, devID, busNo, deviceNo, funcNo, class1, class2, class3);
          if (funcNo == 0) {                          // 如果是单功能设备,则不再查funcNo>0的设备
            regVal = (regVal & 0xFFFFFFF0) + 0x0C;
            outportl(0xCF8, regVal);
            retVal = inportl(0xCFC);
            retVal = retVal >> 16;
            if ((retVal & 0x80) == 0) funcNo = 8;
          }
        }
      }
    }
  }
搜索更多相关主题的帖子: 解释 
2008-08-17 13:59
快速回复:请帮忙看下这段程序,具体的解释下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021225 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved