linux 应用程序直接读写寄存器或物理内存

1.程序说明:

调试驱动程序时,经常遇到候需要查看或设置寄存器的情况,但是直接更改内核代码又不方便。

这里提供一个应用程序源码能在应用层访问底层寄存器。(网上找到的,进行过更改)。

这里只提供4字节数据的访问,如果需要其他字节宽度则需要更改代码。

line40 增加了O_DSYNC标志,防止cache导致数据写入不及时。

2.应用程序源码

  1. 内核设备文件实现

内核源码位置:/drivers/char/mem.c

/dev/mem设备文件mmap函数实现:

phys_mem_access_prot函数获得映射内存访问权限

O_DSYNC标志将会使用不带cache的映射方式,该标志在打开设备文件时指定。

Original: https://www.cnblogs.com/fanguang/p/12284202.html
Author: 反光
Title: linux 应用程序直接读写寄存器或物理内存

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578085/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Conky配置(中文备注)

    conkyrc地址:~/.conkyrc 需要注意的是,因为每个人的网卡都不同,所以在网络部分,例如 downspeed wlp0s20f3 ,后面的 wlp0s20f3 每个人都…

    Linux 2023年6月7日
    065
  • AOP实现系统告警

    工作群里的消息怕过于安静,又怕过于频繁 一、业务背景 在开发的过程中会遇到各种各样的开发问题,服务器宕机、网络抖动、代码本身的bug等等。针对代码的bug,我们可以提前预支,通过发…

    Linux 2023年6月13日
    077
  • ulimit: open files: cannot modify limit: Operation not permitted

    统管理员刚给授权了一台Linux 服务器访问权限,我在JumpServer 登录的时候,遇到下面错误: Last login: Wed Nov 10 13:29:30 2021 f…

    Linux 2023年5月27日
    0108
  • WPF获取系统dpi

    WPF获取系统dpi var dpiX = (int)typeof(SystemParameters).GetProperty("DpiX", BindingF…

    Linux 2023年6月13日
    078
  • Spring Boot:使用Redis存储技术

    综合概述 Redis是一个开源免费的高性能key-value数据库,读取速度达110000次/s,写入速度达81000次/s。Redis支持丰富的数据类型,如Lists, Hash…

    Linux 2023年5月28日
    092
  • [转帖]shell学习之shell执行方式及排错

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年5月28日
    077
  • IOC Unity

    控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Depende…

    Linux 2023年6月13日
    088
  • MybatisPlus——全网配置最全的代码生成器

    MybatisPlus代码生成器 这里讲解的是新版 (mybatis-plus 3.5.1+版本),旧版不兼容 官方文档:https://baomidou.com/(建议多看看官方…

    Linux 2023年6月7日
    094
  • Wine 运行百度云盘 中文乱码解决;wine中文乱码解决;fedora 34 运行百度网盘;

    今天需要下个 imagenet 的 ILSVRC2012 数据集,找到了网友在百度网盘中分享的下载好的; 但是因为本人使用的是 fedora 34 系统,所以尝试下载 百度网盘 l…

    Linux 2023年6月14日
    093
  • 【前端】【探究】HTML input类型为file时如何实现自定义文本以更好的美化

    想到英语四级考了两次都没过,我觉得要多使用英文,所以本文使用英文书写。 本文讲述了遇到的问题,解决的思路,并讲述了解决方案,也许对你会有帮助。 Problem descriptio…

    Linux 2023年6月14日
    093
  • PyTorch介绍-优化模型参数

    既然已经有模型和数据了,是时候在数据上优化模型参数来训练、验证和测试它了。模型训练是一个迭代过程;在每一次迭代( epoch),模型会作出一个预测,计算其预测误差( loss),收…

    Linux 2023年6月14日
    095
  • CentOS7安装redis并配置外网可访问(局域网可参考)

    1、安装gcc编辑器 安装redis需要依赖gcc环境,执行如下命令安装: yum install -y gcc 如果机器没有…

    Linux 2023年5月28日
    091
  • jenkins自动触发构建

    bash;gutter:true; 1. 安装jenkins cat /etc/yum.repos.d/jenkins.repo [jenkins] name=Jenkins ba…

    Linux 2023年6月7日
    062
  • 统计算法_探索性统计

    最近不知道写什么了,基本python的各种功能百度一下,都能搜到一大把,最近itchat好像很火,不过对这个不是很感冒,等以后有兴趣或者用的上的时候研究研究准备把统计方面的东西再看…

    Linux 2023年6月6日
    079
  • ASP.NET Core 2.2 : 二十三. 深入聊一聊配置的内部处理机制

    上一章介绍了配置的多种数据源被注册、加载和获取的过程,本节看一下这个过程系统是如何实现的。(ASP.NET Core 系列目录) 一、数据源的注册 在上一节介绍的数据源设置中,ap…

    Linux 2023年6月7日
    0120
  • 006 Linux 命令三剑客之-grep

    01 一起来认识 grep! Linux 命令三剑客,sed、grep、awk。 sed:擅长数据修改。 grep:擅长数据查找定位。 awk:擅长数据切片,数据格式化,功能最复杂…

    Linux 2023年5月27日
    090
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球