首页
学习
活动
专区
工具
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
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Undermoon - 手动设置 Redis 集群

    项目地址:https://github.com/doyoubi/undermoon 本教程将引导您完成手动设置 undermoon 集群的过程,以更好地了解 undermoon 的工作原理。...架构 我们将在一台机器上部署以下所有部件: mem_broker(内存代理) coordinator(协调器) 2 个代理与 4 个 Redis 节点 构建二进制文件 $ cargo build 请注意...运行 Server Proxy 与 Redis 运行 2 个服务器代理和 4 个 Redis 节点: # You need to run each line in different terminals...127.0.0.1:6002", "nodes": ["127.0.0.1:7003", "127.0.0.1:7004"], "host": "localhost2"}' 现在我们有 2 个服务器代理与 4 个节点...free_nodes":["127.0.0.1:7003","127.0.0.1:7004"],"peers":[],"clusters_config":{}}} 创建集群 使用 4 个 Redis 节点创建一个名为

    51720

    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.3K20

    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内存(手动释放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-手动释放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

    activiti 任务节点 处理人设置

    前言 我们在使用activiti 工作流引擎的时候,最常用的肯定是任务节点,因为在OA系统、审批系统、办公自动化系统中核心的处理就是流程的运转,流程的运转依赖于人员如何设置,人员的设置是非常重要的一个环节...处理人分配方式 处理人分配的方式有六种设置方式,可以让我们很轻松的结合业务来设置任务节点的处理人,如下图所示: 任务处理人的设置如下图所示: 下面,我们就看一下每一种方式的具体操作: 1.1.3....因为当前的节点设置的是下一个节点的变量值信息。 1.1.6....比如我们需要设定当前的任务处理人是a、b、c三个人处理,那我们怎么设置呢?设置的时候,我们就设置为a,b,c即可。 当流程运转到当前的节点的时候a、b、c三个人都可以查询到代办信息,然后对应的操作。...总结 activiti 任务节点处理人的设置总结如下: 1.指定具体的处理人,可以使用变量方式设置人。也可以直接在模板中定义。 2.候选组,可以在模版中定义,不灵活。

    3.1K10
    领券