介绍

  1. 演示了一个驱动对应多个设备,以及各个设备的存取
  2. 演示了应用与驱动,mmap 的映射实现与访问
  3. 演示了应用层通过 select, poll, epoll 方式读写设备数据
  4. netlink 的方式待续

driver

  1. 删除驱动 rmmod memdev
  2. 一般内核都会对模块进行签名检查,没好的办法,关闭内核源码的对模块签名,重新编译内核,用新内核启动

app

  1. mmap 是演示应用层与驱动层之间的使用

  2. read 和 write 演示了利用 select, poll, epoll 模型从内核读取东西

  3. netlink_unicast 需要驱动层打开 NETLINK_UNICAST 宏定义

    Compile kernel module and user space program:

    make

    Load kernel module:

    insmod ./netlink_test.ko

    Also check kernel log dmesg for module debug output:

    ./nl_recv "Hello you!"

    Hello you!

    Unload kernel module:

    rmmod netlink_test.ko

  4. netlink_multicast 需要驱动层打开 NETLINK_MULTICAST 宏定义

    Compile kernel module and user space program.

    make

    Load kernel module:

    insmod ./netlink_test.ko

    Also check kernel log dmesg for module debug output.

    ./nl_recv "Hello you!"

    Listen for message...

    Received from kernel: Hello you!

    Listen for message...

    Execute ./nl_recv in another console as well and see how the message is send to the kernel and back to all running nl_recv instances.

    Note: Only root or the kernel can send a message to a multicast group!

    Unload kernel module:

    rmmod netlink_test.ko

  5. netlink_namespace 需要驱动层打开 NETLINK_NAMESPACE 宏定义

    Compile kernel module and user space program.

    make

    Load kernel module:

    insmod ./netlink_test.ko

    Check kernel log dmesg for module debug output.

    ./nl_recv "Hello you!"

    Hello you!

    Unload kernel module:

    rmmod netlink_test.ko

源码下载

随便找个 linux 系统,需要找到对应的内核源码包,去掉对模块的签名校验,安装新内核,以新内核启动系统

本文源码

有关驱动与应用层数据交互的小例子( 以及驱动 epoll 实现的实现方式 )的更多相关文章

  1. 基于Xen实现一种domain0和domainU的应用层数据交互高效机制 - 2

    继续昨天的思路,今天先google了类似的实现domain0和domainU之间数据传输的方案 [Xen-devel] XenStore as a data transfer path?  这篇帖子讨 ...

  2. 基于Xen实现一种domain0和domainU的应用层数据交互高效机制 - 3

    继续 上一篇 的研究,结合 xen4.2.3 的代码分析,发现 xen4.2.3 的应用层工具库 tools 包含一个工具叫 libvchan ,其头文件描述如下: * This is a libra ...

  3. 基于Xen实现一种domain0和domainU的应用层数据交互高效机制

    项目里有一个需求,domain0的应用层需要定时给domainU(hvm windows)的应用层传递一块数据,原来的方案是在domainU的应用层架设一个http服务器,监听在某个端口,然后需要塞数 ...

  4. Hybrid小程序混合开发之路 - 数据交互

    HTML+CSS是历史悠久.超高自由度.控制精准.表现能力极强.编码简单.学习门槛超低.真跨平台的一种UI界面开发方式. 本文介绍的是微信小程序和H5混合开发的一种数据交互方式. 很多应用在原生界面中 ...

  5. --@angularJS--自定义服务与后台数据交互小实例

    1.myService.html: <!DOCTYPE HTML><html ng-app="app"><head>    <title& ...

  6. Vue小项目二手书商城:(二)axios前后端数据交互

    实现内容: 写路由接口(express) axios取数据 一.写接口 1.我们要在前端取到后端的数据(之前写的data.json)可以用vue-resourse或者用axios,在vue2之后官方就 ...

  7. STM32L476应用开发之四:触摸屏驱动与数据交互

    数据交互可以说是任何一台仪器都需要的功能.我们的便携式气体分析仪,需要人来操作和配置,所以触摸屏就是我们必然的一个选择.本次我们计划采用3.5寸显示屏,串口通讯. 1.硬件设计 前面我们实验了串行通讯 ...

  8. PHP 数据库驱动、连接数据不同方式学习笔记

    相关学习资料 http://www.php.net/manual/zh/refs.database.php http://www.php.net/manual/zh/internals2.pdo.ph ...

  9. Spring MVC之JSON数据交互和RESTful的支持

    1.JSON概述 1.1 什么是JSON JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式.它是基于JavaScript的一个子集,使用了C.C ...

  10. .net实现与excel的数据交互、导入导出

    应该说,一套成熟的基于web的管理系统,与用户做好的excel表格进行数据交互是一个不可或缺的功能,毕竟,一切以方便客(jin)户(qian)为宗旨. 本人之前从事PHP的开发工作,熟悉PHP的都应该 ...

随机推荐

  1. Excel Vlookup用法和常见报错#REF! #Value!

    VLOOKUP(E2,$A$2:$C$5,2,FALSE) E2 为选中查找的条件 $A$2:$C$5 1为需要查找的区域,这个区域一般是固定的,所以要加上$符号 2这个区域可以在前面加上SHEET2 ...

  2. css 伪类实现渐变线条

    如下图所示: 需要实现渐变的小竖线或者小横线 可以用伪类, 代码如下: div { position: relative; z-index: 2; &::after{ content: ''; ...

  3. jmeter中使用csv文件时设置编码

    1.新建XLS文件,另存为CSV格式文件 2.在jmeter中可以尝试将编码设置成GB2312,或者utf-8

  4. ansible使用报错not possible

    一.问题描述: 执行ansible webservers -m ping报错如下(hosts文件指定ssh_user,ssh_pass) 二.解决方案 vim /etc/ansible/ansible ...

  5. JS Math与一些原始类型

    镇楼图 Pixiv:DSマイル 一.值属性.函数 globalThis JS有全局对象,但是在不同环境中全局对象均不同.在Web环境中,window.self.frames取得全局对象,在Web Wo ...

  6. python 循环 类型转换

  7. [Leetcode 108]有序数组转BST二叉搜索树Convert Sorted Array to Binary Search Tree

    题目 https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ Given an integer array  ...

  8. 【Unity】阅读LuaFramework_UGUI的一种方法

    写在前面 我第一次接触到LuaFramework_UGUI是在一个工作项目中,当时也是第一次知道toLua.但我刚开始了解LuaFramework_UGUI时十分混乱,甚至将LuaFramework_ ...

  9. 归纳了一下AD的快捷键

    1:shift+s 键 切换单层显示 2:q     英寸和毫米 尺寸切换3:D+R进入布线规则设置.其中 Clearance 是设置最小安全线间距,覆铜时候间距的.比较常用4:CTRL+鼠标单击某个 ...

  10. Typora配置本地图片自动上传阿里云OSS

    一.下载Typora ​ Gitee下载地址 二.下载Picgo.app ​ Github下载地址 三.配置Picgo 打开Typora,格式→图像→图像全局设置: 四.图床设置 注册阿里云账号 打开 ...