关键词:
/*********************************************** PCI设备查找程序 vendorId:设备厂商号; deviceId:设备号; index:索引号; *pBusNo:返回的总线号; *pDeviceNo;返回的设备号; *pFuncNo:返回的功能号; ************************************************/ STATUS pciFindDevice ( int vendorId, /* vendor ID */ int deviceId, /* device ID */ int index, /* desired instance of device */ int * pBusNo, /* bus number */ int * pDeviceNo, /* device number */ int * pFuncNo /* function number */ ) { STATUS status = ERROR;/*初始化状态为error*/ BOOL cont = TRUE;/*定义cont为TRUE*/ int busNo; int deviceNo; int funcNo; UINT32 device; UINT32 vendor; UINT8 header; if (pciLibInitStatus != OK) /* sanity check 检查初始化状态*/ cont = FALSE; for (busNo = 0; cont == TRUE && busNo <= pciMaxBus; busNo++)/*查找总线号*/ for (deviceNo = 0; ((cont == TRUE) && (deviceNo < PCI_MAX_DEV)); ++deviceNo) /*查找设备号*/ for (funcNo = 0; cont == TRUE && funcNo < PCI_MAX_FUNC; funcNo++)/*查找功能号*/ { /* avoid a special bus cycle 避免一个特殊的总线循环*/ if ((deviceNo == 0x1f) && (funcNo == 0x07)) continue;/*结束当前循环开始下一个循环*/ pciConfigInLong (busNo, deviceNo, funcNo, PCI_CFG_VENDOR_ID, &vendor); /* * If nonexistent device, skip to next, only look at * vendor ID field for existence check */ if (((vendor & 0x0000ffff) == 0x0000FFFF) && (funcNo == 0)) break; device = vendor >> 16;/*右移16位得到设备名*/ device &= 0x0000FFFF; vendor &= 0x0000FFFF;/*厂商名等于低16位*/ if ((vendor == (UINT32)vendorId) && (device == (UINT32)deviceId) && (index-- == 0)) { *pBusNo = busNo; *pDeviceNo = deviceNo; *pFuncNo = funcNo; status = OK; cont = FALSE; /* terminate all loops */ continue; } /* goto next if current device is single function */ pciConfigInByte (busNo, deviceNo, funcNo, PCI_CFG_HEADER_TYPE, &header); if ((header & PCI_HEADER_MULTI_FUNC) != PCI_HEADER_MULTI_FUNC && funcNo == 0) break; } return (status); } /************************************************* PCI读取函数 busNo:总线号; deviceNo:设备号; funcNo:功能号; offset:偏移量; *pData:返回的数据; **************************************************/ STATUS pciConfigInLong ( int busNo, /* bus number */ int deviceNo, /* device number */ int funcNo, /* function number */ int offset, /* offset into the configuration space */ UINT32 * pData /* data read from the offset */ ) { int key; STATUS retStat = ERROR; UINT32 retval = 0; /* check for library initialization or unaligned access */ #ifdef PCI_CONFIG_OFFSET_NOCHECK if (pciLibInitStatus != OK) { return (retStat); } #else if ((pciLibInitStatus != OK) || ((offset & (int)0x3) > 0) ) { return (retStat); } #endif key = intLock (); /* mutual exclusion start 屏蔽中断互斥开始*/ switch (pciConfigMech) { case PCI_MECHANISM_0: if (pciConfigRead (busNo, deviceNo, funcNo, offset, 4, (void *)&retval) == ERROR) { retval = 0xffffffff; } else { retStat = OK; } break; case PCI_MECHANISM_1: PCI_OUT_LONG (pciConfigAddr0, pciConfigBdfPack (busNo, deviceNo, funcNo) | (offset & 0xfc) | 0x80000000); retval = PCI_IN_LONG (pciConfigAddr1); retStat = OK; break; case PCI_MECHANISM_2: PCI_OUT_BYTE (pciConfigAddr0, 0xf0 | (funcNo << 1)); PCI_OUT_BYTE (pciConfigAddr1, busNo); retval = PCI_IN_LONG (pciConfigAddr2 | ((deviceNo & 0x000f) << 8) | (offset & 0xfc)); PCI_OUT_BYTE (pciConfigAddr0, 0); retStat = OK; break; default: break; } intUnlock (key); /* mutual exclusion stop 解除中断锁*/ *pData = retval; return (retStat); }
golang注释规范(代码片段)
...成的文档的质量。下面从包注释、结构体(接口)注释、函数(方法)注释、代码逻辑注释以及注释规范方面进行说明。包注释每个包都应该有一个包注释,一个位于package子句之前行注释包注释应该包含下面基本信息//@Title请填... 查看详情
vscode自动生成文件头部注释和函数注释(代码片段)
...,然后输入“fileheader”,文件头部注释:Fileheader:customMade函数注释:Fileheader:cursorMode随便点击哪个"在setting.json"中编辑,输入以下设置后保存,然后重启vscode更新设置://文件头部注释"fileheader.customMade": 查看详情
vscode自动生成文件头部注释和函数注释(代码片段)
主动学习VsCode自动生成文件头部注释和函数注释扩展应用商店里安装koroFileHeader必须的基础配置:头部注释模板与函数注释模板复制:复制下面给出的模板插入:插入模板到全局设置(setting.json)中。简单的更改:比如把... 查看详情
Doxygen -- 多个函数的单个注释块
】Doxygen--多个函数的单个注释块【英文标题】:Doxygen--SingleCommentBlockforMultipleFunctions【发布时间】:2016-09-1401:00:43【问题描述】:你能用一个注释块来注释doxygen中的多个函数吗?下面是一个不起作用的简单示例。我可以做类似的... 查看详情
vscode自动生成文件注释和函数注释插件使用指南(代码片段)
Vscode自动生成文件注释和函数注释插件使用指南一、插件安装插件名:koroFileHeader插件安装二、插件配置打开配置文件添加配置配置参考://函数注释"fileheader.cursorMode":"Function":"","Description":""... 查看详情
如何注释采用可变长度元组的函数? (可变元组类型注释)
】如何注释采用可变长度元组的函数?(可变元组类型注释)【英文标题】:Howtoannotatefunctionthattakesatupleofvariablelength?(variadictupletypeannotation)【发布时间】:2019-07-1120:03:18【问题描述】:我有一个函数,它接受一个不同长度的元... 查看详情
意义模糊的函数签名……文档注释
...gGetSubstring(stringstr,intstartIndex,intlength)文档注释,通常写到函数体外,用于描述函数体外的代码在函数体外///就能弹出一段代码书写注释 查看详情
具有两个或多个返回参数的函数注释
】具有两个或多个返回参数的函数注释【英文标题】:Functionannotationwithtwoormorereturnparameters【发布时间】:2019-09-2415:24:39【问题描述】:当我为返回一个参数的函数编写注释时,我没有问题。deffunc()->str:return"ok"但是,当我编写... 查看详情
R中的函数注释约定
】R中的函数注释约定【英文标题】:FunctioncommentingconventionsinR【发布时间】:2011-09-1313:15:05【问题描述】:我是R的新手,我一直在脚本文件中定义一些我自己的函数。我打算让其他人稍后重新使用它们,我找不到任何关于R函数... 查看详情
spring3.2注释自动装配多个构造函数(代码片段)
Spring文档:每个类只能标记一个带注释的构造函数,但可以注释多个非必需的构造函数。如果我有一个自动装配的构造函数,一切都很好。如果我有两个或更多autowired,但required=false注释构造函数,一切都很好。但是如果我以某... 查看详情
Python3 的“函数注释”有啥好的用途?
】Python3的“函数注释”有啥好的用途?【英文标题】:WhataregoodusesforPython3\'s"FunctionAnnotations"?Python3的“函数注释”有什么好的用途?【发布时间】:2011-03-0313:19:36【问题描述】:函数注释:PEP-3107我遇到了一段演示Python3... 查看详情
是否有任何 JS 函数可以取消注释,已经注释了 HTML [重复]
】是否有任何JS函数可以取消注释,已经注释了HTML[重复]【英文标题】:IsthereanyJSfunctiontoUncomment,alreadycommentedHTML[duplicate]【发布时间】:2018-07-0705:51:16【问题描述】:<divid="div1">bar</div>JQueryfunctioncomment(element)element.wrap(func... 查看详情
python中的函数注释
】python中的函数注释【英文标题】:functionannotationsinpython【发布时间】:2016-07-2000:14:28【问题描述】:我刚刚发现了python3(https://www.python.org/dev/peps/pep-3107/)的函数注释,它似乎非常适合记录参数或返回类型。它还在我的pycharmIDE中... 查看详情
visualstudio+vassistx自动添加函数头文件头注释(代码片段)
...操作起来也很简单,具体方法和步骤如下:1.增加函数头注释之后注释模板中编辑自己需要的注释内容:编辑好注释模板之后将输入光标定位到需要添加注释的C++函数,然后右 查看详情
go函数
函数声明和注释1、函数声明:func函数名字(参数列表)(返回值列表){}2.注释,两种注释,单行注释://和多行注释/**/3、一个.go文件初始化,先执行全局变量,再执行init()函数,init()函数自动调用4、多个包引用,如果引用顺序是mai... 查看详情
休眠注释:实体没有默认构造函数
】休眠注释:实体没有默认构造函数【英文标题】:HibernateAnnotations:Nodefaultconstructorforentity【发布时间】:2014-10-1614:28:20【问题描述】:我正在尝试持久化JAXB生成的对象。这是示例结构:@Column(name="reporting_identifier")privateStringrepor... 查看详情
返回 lambda 的函数的类型注释
】返回lambda的函数的类型注释【英文标题】:Typeannotationforfunctionreturningalambda【发布时间】:2018-12-1522:11:33【问题描述】:我非常喜欢在Python中使用类型注释的想法。我知道如何在这个简单的例子中这样做:deffoo(bar:int,lol:int)->... 查看详情
navicatpremium的mysql函数注释怎么添加
...个表,选择“设计表”,快捷键是ctrl+d 参考技术B定义完函数后可以通过comment添加注释CREATEDEFINER=CURRENT_USERFUNCTION`NewProc`()RETURNSintegerCOMMENT'这里给函数添加注释'BEGIN#Routinebodygoeshere...RETURN0;END;函数决定性请参考链接:https://blog... 查看详情