首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

宋宝华:Linux设备与驱动的手动解绑与手动绑定

众所周知,Linux设备与驱动之间的match,来完成设备与驱动的bind,从而触发驱动的probe()成员函数被执行。...这种自动匹配非常简单,实施起来也非常容易。 但是有时候,这种自动匹配并不一定是我们想要的。比如我们有时候就是希望XXX设备用YYY驱动,而不是用XXX驱动。...工程中有手动匹配的需求,最典型的场景是VFIO的场景,想让设备与内核空间原本绑定的驱动解绑,转而采用内核空间的通用VFIO驱动,而VFIO驱动又提供了userspace驾驭设备的能力。...下面我们来从原理和实践上演示这种手动的unbind和bind是怎么进行的。...在《Linux设备驱动开发详解》一书中,我们给出了一个简单的globalfifo设备和globalfifo驱动: globalfifo-dev.ko(增加platform_device的模块): static

4.7K41

linux手动自动更改网卡MAC地址的方法

前言 一块网卡的mac地址在出厂时已经写入,有时候是写入可以擦写的rom中,但是要有相当的专业技术或专业的设备。 对于一些绑定了mac地址,更换了设备后又不想更换mac的,就需要修改mac地址了。...:ff:ff:ff brd ff:ff:ff:ff:ff:ff 你会发现网卡已经被改成新的MAC地址了. 3、最后重启网卡 sudo ip link set dev ${interface} up 自动更改...systemd-networkd服务能通过 link 文件(底层物理网络设备配置)来设置MAC地址 我们通过 [Match] 小节来匹配某个网卡,然后通过 [Link] 小节来对网卡进行配置 Match...Type 匹配网卡的 “DEVTYPE” 属性值(网卡的设备类型)。 接收一个空格分隔的匹配模式列表(使用shell风格的通配符)。...自动生成MAC地址的特性 要求网卡必须存在 ID_NET_NAME_* 属性, 否则无法自动生成MAC地址。

8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    13 - sysfs设备节点的创建

    实际项目过程中应用层需要操作内核中GPIO, 除了应用层直接通过export方式操作,具体操作方法[Linux驱动炼成记] 02-用户空间控制GPIO, 还可以通过sysfs设备节点方式操作...&dev_attr_key_trigger_tool); if (ret){ dev_err(dev, "Failed to device create file: %d\n",ret); } 定义设备属性..., _store) // 按键中具体实现, 相当于在 /sys/devices/platform/gpio_keypad/key_trigger_tool 创建了key_trigger_tool设备节点...__,value,key_trigger_pin); //返回GPIO状态 return snprintf(buf,PAGE_SIZE,"%d\n",value); } 到这里为止,驱动中的按键的设备节点已经创建...,应用层完全可以操作设备节点 //获取按键的状态 cat /sys/devices/platform/gpio_keypad/key_trigger_tool 执行这条命令之后,就会调用驱动中key_attribute_trigger

    2.8K20

    手把手创建Linux设备属性节点,触发cat, echo操作

    手把手教你在 Linux 中创建节点,使其可以进行 cat 和 echo 。...我们测试驱动加载是否正常工作,一般都会写应用程序去测试,这样驱动程序中需要实现 open、read 函数和 write 函数,然后写一个应用程序通过 open 打开节点,获取 fb 文件描述符,进而对文件进行读写操作...这里我介绍另外一种方法,我们可以在驱动中实现 show_xxx 和 set_xxx 函数,使这个节点可以进行 cat 和 echo 操作,源码如下: test.c #include <linux/module.h...buf, size_t len) { sprintf(mybuf, "%s", buf); return len; } //定义一个名字为my_device_test的设备属性文件...mydev = device_create(cls, 0, MKDEV(major,0),NULL,"mytest_device"); //在mytest_device设备目录下创建一个

    3.4K20

    Linux内存(手动释放cache)

    这个占用有点高,并且不会自动释放。...2、什么是cache 为了提高磁盘存取效率,Linux做了一些精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:Buffer Cache...Free中的buffer和cache:(它们都是占用内存): buffer : 作为buffer cache的内存,是块设备的读写缓冲区 cache: 作为page cache的内存, 文件系统的cache...3、手动释放cache /proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。...drop_caches To free pagecache, dentries and inodes:  echo 3 > /proc/sys/vm/drop_caches 注意:在清空缓存前我们需要在linux

    10.5K80

    Linux节点inode

    Linux节点 inode inode是存储文件元信息的区域,中文译名为“索引节点”。所谓元信息,即文件的创建者、创建日期、文件的大小等等。...包含文件的元信息有以下内容: 文件名以及文件的大小(字节数),链接数,Uid 文件拥有者的ID,Gid 文件所属组的ID 文件的权限,包括读写执行权限(rwx) inode文件数据块的位置、数据块数、IO块大小、设备号码...最近访问时间、最近更改时间、最近变动时间 inode占用硬盘空间,每个inode节点的大小,一般是128字节或256字节。...inode节点的总数,在格式化的时候就给定,一般是1KB或每2KB就设置一个inode。 查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令。...Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。

    6.1K30

    Linux-手动释放linux内存cache

    buffers - cached +buffers/cache(可用)的内存数:free + buffers + cached 可用的memory=free memory+buffers+cached 当在Linux...手动释放缓存 /proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。...# sync 手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。...但实际上,我们都知道这是因为Linux对内存的管理与Windows不同,free小并不是说内存不够用了,应该看的是free的第二行最后一个值:-/+ buffers/cache: 58 191,这才是系统可用的内存大小...我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少。如果常常swap用很多,可能你就要考虑加物理内存了,这也是linux看内存是否够用的标准.

    5.8K20
    领券