linux 重新扫描pci设备,linux重新扫描pci总线
注册总线pci_bus_type,关注成员dev_attr
static int __init pci_driver_init(void)
{
return bus_register(&pci_bus_type);
}
postcore_initcall(pci_driver_init);
struct bus_type pci_bus_type = {
.name = "pci",
.match = pci_bus_match,
.uevent = pci_uevent,
.probe = pci_device_probe,
.remove = pci_device_remove,
.shutdown = pci_device_shutdown,
.dev_attrs = pci_dev_attrs,
.bus_attrs = pci_bus_attrs,
.pm = PCI_PM_OPS_PTR,
};
pci_dev_attrs关注成员rescan
struct device_attribute pci_dev_attrs[] = {
__ATTR_RO(resource),
__ATTR_RO(vendor),
__ATTR_RO(device),
__ATTR_RO(subsystem_vendor),
__ATTR_RO(subsystem_device),
__ATTR_RO(class),
__ATTR_RO(irq),
__ATTR_RO(local_cpus),
__ATTR_RO(local_cpulist),
__ATTR_RO(modalias),
#ifdef CONFIG_NUMA
__ATTR_RO(numa_node),
#endif
__ATTR_RO(dma_mask_bits),
__ATTR_RO(consistent_dma_mask_bits),
__ATTR(enable, 0600, is_enabled_show, is_enabled_store),
__ATTR(broken_parity_status,(S_IRUGO|S_IWUSR),
broken_parity_status_show,broken_parity_status_store),
__ATTR(msi_bus, 0644, msi_bus_show, msi_bus_store),
#ifdef CONFIG_HOTPLUG
__ATTR(remove, (S_IWUSR|S_IWGRP), NULL, remove_store),
__ATTR(rescan, (S_IWUSR|S_IWGRP), NULL, dev_rescan_store),
#endif
__ATTR_NULL,
};
rescan写操作对应处理函数
static ssize_t dev_rescan_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
unsigned long val;
struct pci_dev *pdev = to_pci_dev(dev);
if (strict_strtoul(buf, 0, &val) < 0)
return -EINVAL;
if (val) {
mutex_lock(&pci_remove_rescan_mutex);
pci_rescan_bus(pdev->bus);
mutex_unlock(&pci_remove_rescan_mutex);
}
return count;
}
重新扫描选定PCI总线,配置新设备和向系统添加新设备
unsigned int __ref pci_rescan_bus(struct pci_bus *bus)
{
unsigned int max;
struct pci_dev *dev;
max = pci_scan_child_bus(bus);
down_read(&pci_bus_sem);
list_for_each_entry(dev, &bus->devices, bus_list)
if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)
if (dev->subordinate)
pci_bus_size_bridges(dev->subordinate);
up_read(&pci_bus_sem);
pci_bus_assign_resources(bus);
pci_enable_bridges(bus);
pci_bus_add_devices(bus);
return max;
}
EXPORT_SYMBOL_GPL(pci_rescan_bus);
2. 应用
echo 1 > /sys/bus/pci/devices/0000:00:1e.0/rescan
linux 重新扫描pci设备,linux重新扫描pci总线相关推荐
- linux如何禁止pci设备,Linux 内核PCI去除一个设备
一个 PCI 可用多个不同的方法被从系统中去除. 所有的 card-bus 设备在一个不同的物 理因素上是真正的 PCI 设备, 并且内核 PCI 核心不区分它们. 允许在机器运行时加减 PCI 设备 ...
- linux查看硬件PCI设备,Linux系统查看硬件信息神器,比pci设备好用100倍!
大家都知道,当我们的 Linux 系统计算机出现问题时,需要对其排除故障,首先需要做的是找出计算机的硬件信息.下面介绍一个简单易用的应用程序--HardInfo,你可以利用它来显示你电脑的每个硬件方面 ...
- Linux驱动无硬件设备,Linux设备驱动与硬件通信
Linux物理设备驱动,主要有几种类型,如:IO类.内存类.总线类.IO类我们平时接触的最多,其主要特点是,通过IO设备的寄存器操作硬件,具体需要去查看硬件手册. 1. IO端口和IO内存 在硬件层, ...
- 查看linux服务器下接设备,linux下如何查看设备信息_网站服务器运行维护
linux下如何查看php是否启动_网站服务器运行维护 linux下查看php是否启动的方法是:可以通过执行[ps -ef | grep php]命令来查看,或者是通过执行[ps -A | grep ...
- linux中怎么查看设备,linux怎么查看硬件设备信息
你们知道怎么直接查看Linux中的硬件信息吗?下面是学习啦小编带来的关于linux怎么查看硬件设备信息的内容,欢迎阅读! linux怎么查看硬件设备信息? 建议直接进主板的bios查看硬件信息, li ...
- linux脚本获取usb设备,Linux基于USB端口执行脚本
您应该弄清楚您的外部端口与哪个USB总线连接.在我的电脑上所有外部USB端口都连接到Bus 01 要做这个检查lsusb -t的输出,然后附上一个usb设备并再次检查输出lsusb -t.那么你知道什 ...
- linux 增加回环设备,linux命令练习:mount fdisk swap dd创建本地回环设备
练习一 1.创建一个1G的分区,文件系统为ext4,卷标为MYDATA,块大小为1024,预留管理空间为磁盘 分区的3%,要求开机后制动挂载至/data目录,并且自动挂载的设备要使用卷标进行引用. f ...
- linux内核定义注册设备,linux字符型设备驱动 一.注册设备并创建设备文件
1.字符设备 字符设备.字符设备驱动与用户空间访问该设备的程序三者之间的关系 Linux内核中: a -- 使用cdev结构体来描述字符设备; b -- 通过其成员dev_t来定义设备号(分为主.次设 ...
- linux下spi添加设备,Linux Kernl添加spidev的设备节点
一.spidev介绍 如果在内核中配置spidev,会在/dev目录下产生设备节点,通过此节点可以操作挂载在该SPI总线上的设备.用户空间通过该节点可以访问内核空间. 二.配置spidev设备步骤 在 ...
最新文章
- 清华大学邀请阿里专家授课 主讲大数据
- Mac 安装 Eclipse
- Python-自定义函数-参数
- Ajax — 大事件项目(第二天)
- web前端【补充】CSS补充
- 中学计算机教育特点,中学信息技术考点:信息的概念和基本特征
- 即将到来的“分布式云”(DPaaS):分布式计算+ DB +存储即服务
- 计算机网络---TCP/UDP协议(一)
- linux显示 cron 服务是否正在运行_通过Linux系统自带日志监控系统安全
- 如何使用Xilisoft Video Editor快速剪切视频
- 德信计算机真人发声怎么变音乐,文字转语音真人发声 文字转语音制作真人语音广告...
- java 数字转换字母大写_大写字母或小写字母转换为数字
- 扫描二维码登入PC的工作原理
- 第1关 Numpy创建数组 (educoder
- perspective 3D 效果和动画配合
- python 信用卡系统+购物商城见解
- 敏捷开发之XP极限编程
- 安装thrift错误的处理方法
- git撤销未提交的commit
- cad在线转换_手绘稿画好后我熬了一个通宵描图,结果组长给我说可以一键生成CAD!...
热门文章
- office 转 pdf文件
- 《迷宫》之站立会议—5.16
- 转载JNI(Windows)
- Session丢失的解决办法小结(转)
- mavenFailed to execute goal org.apache.maven.plugins:maven-surefire-plugin解决方法
- SpringCloud的Eureka客户端(解决自动退出问题)
- 【报告分享】中国数据智能应用趋势报告:解码数据中台最佳实践,企业数字化转型新引擎.pdf(附下载链接)...
- AAAI2020中的四篇推荐系统好文(附论文下载链接)
- pyhthon下中文报错问题
- python基本词汇的特点_开课吧老师为你讲解 Python都有什么优点?