一个简单的弹出对话框的例子c:\autolisp\test1.lsp加载AutoLISP文件有以下几种方式:1.命令行方式:当回到AutoCAD环境下,用Load函数装载后就可以执行了。选择所需要加载的LISP文件,点击加载既可。在装入ACAD.LSP文件时若出现一条AutoLISP错误,剩余的文件就会被忽略而不装入,并提示出错。......
2023-11-02
在Linux系统中,Capric卡驱动程序的加载与卸载的过程如源代码12-1所示。这部分程序并不会直接操作PCIe设备,而是通过pci_register_driver函数向内核注册一个pci_driver结构,即capric_drv,并由capric_probe函数完成Capric卡的初始化。
源代码12-1 Capric卡驱动程序的加载与卸载
在上述源代码中,pci_register_driver函数的主要作用是将capric_drv结构与PCI设备的pci_dev结构[94]进行绑定,并在初始化时执行capric_probe函数,而在结束时执行capric_re-move函数。这段源代码的主要作用是将Capric卡驱动程序使用的“软件结构pci_driver”与“硬件结构pci_dev”建立联系。本文并不会深入分析pci_register_driver和pci_unregister_driver函数的实现细节,而仅介绍该函数的执行顺序。对Linux系统有一定经验的读者,可以从中获得必要的知识。
pci_register_driver函数首先调用__pci_register_driver→driver_register→bus_add_driver函数。bus_add_driver函数进行一些必要的初始化操作后,调用driver_attach→bus_for_each_dev函数查找Capric卡的pci_dev结构。
在Linux系统中,bus_for_each_dev函数是一个重要的函数,该函数将遍历Capric卡所在PCI总线树上的所有pci_dev结构,并依次判断pci_dev结构中的DeviceID、VendorID等信息是否与capric_ids结构中包含的对应信息相同,如果相同则调用capric_probe函数。bus_for_each_dev函数调用__driver_attach函数实现该过程。(www.chuimin.cn)
__driver_attach函数调用drv→bus→match函数(即pci_bus_match函数),而pci_bus_match函数将继续调用pci_match_device→pci_match_id函数,判断capric_ids所包含的内容是否在当前PCI总线树的pci_dev中出现。如果出现,将capric_drv结构与实际的PCI设备进行绑定。之后继续调用driver_probe_device→really_probe函数。
really_probe函数将调用dev→bus→probe函数(即pci_device_probe函数),pci_device_probe函数将调用__pci_device_probe→pci_call_probe→local_pci_probe函数,并最终调用Cap-ric卡的probe函数,即capric_probe函数。
Capric卡的卸载过程是加载的逆过程,其调用顺序为pci_unregister_driver函数、driver_unregister函数、bus_remove_driver函数、driver_detach函数和__device_release_driver函数,并最终调用capric_remove函数。
对于Capric卡,初始化与结束操作是在capric_probe和capric_remove函数中完成的。在capric_ids结构中使用的id号,是联系Capric卡的pci_driver结构和pci_dev结构的桥梁。在该结构中的PCI_VENDOR_ID_XILINX和PCI_DEVICE_ID_EP_PIPE即为Capric卡的Vendor ID和DeviceID,分别为0x10EE和0x0007。
有关PCI Express体系结构导读的文章
一个简单的弹出对话框的例子c:\autolisp\test1.lsp加载AutoLISP文件有以下几种方式:1.命令行方式:当回到AutoCAD环境下,用Load函数装载后就可以执行了。选择所需要加载的LISP文件,点击加载既可。在装入ACAD.LSP文件时若出现一条AutoLISP错误,剩余的文件就会被忽略而不装入,并提示出错。......
2023-11-02
Capric卡的设计基于Xilinx公司的LogiCORE。在Capric卡的初始化阶段,需要与对端设备进行协商,确认Max_Payload_Size参数的值,如果Capric卡与Intel的Chipset直接相连,该参数为128B或者256B。系统软件在Capric卡初始化时,将分析Capric卡的配置空间,并填写Capric卡的配置寄存器空间。在设备驱动程序中,Capric卡需要执行以下步骤完成硬件初始化。......
2023-10-20
设备驱动程序的加载涉及几个重要的概念,下面分别进行介绍。在Linux下,操作系统没有对I/O端口屏蔽,任何驱动程序都可以对任意的I/O端口操作,这样很容易引起混乱,因此每个驱动程序都应该避免误用端口。......
2023-11-19
图15.4.1页面加载事件window.onload代码15.4.1.js在控制台输出一条Hello信息,先于load事件之前执行。图15.4.2与window.onload等价的body.onload大部分情况下,只需要等待浏览器将标签解析完成并生成完整的DOM树就可以对网页元素进行处理,不需要等待图像资源、框架资源等加载完成。图15.4.3页面加载事件DOMContentLoaded文档对象document的DOMContentLoaded在所有JavaScript脚本加载完成和DOM树第一次生成完成时触发,不需要等待网页中的其他多媒体资源加载完成,明显早于window.onload事件,因此一般使用DOMContentLoaded替代load事件,加速代码执行。......
2023-11-08
在教学实践中,这两个操作元素具有功能不同的变式。(一)问题卡的类型及功能问题卡,用于记录学生学习过程中存在的问题和困惑,它可以引导学生提出问题,也可以帮助教师发现学生学习过程中存在的问题。(二)助学卡的类型及功能助,即帮助、协同、辅佐。......
2023-08-08
4.信用卡越少越好先消费,后付钱,听上去很美,可是天下没有免费的午餐。等到拿到账单,就目瞪口呆或者以为银行“乱收费”,因此,信用卡并不是越多越划算,我们要避免让自己沦为“卡奴”。就变成信用卡、现金卡的奴隶,就可称为卡奴。某网站曾对6000余名上班族信用卡使用情况进行的调查显示,约4成上班族已成为信用卡卡“奴”。调查显示,拥有信用卡的上班族中,超过半数者不得不承担一部分利息和负资产。......
2023-12-01
图1.1确认对话框随后会出现Microsoft Office 2016的安装界面,可以直接单击“立即安装”,系统将按照默认设置自动安装Office程序;如需选择安装的程序及安装目录等,可以单击“自定义”进入下一步,如图1.2所示。选中“Microsoft Office 2016”,再单击“卸载”,等待卸载任务结果后即完成卸载。......
2023-11-09
相关推荐