linux内存映射边读边写,内存映射IO空间的读写函数writeb(), writew(), writel()
132 }
IO_CONCAT定义在include/asm-$(arch)目录下的IO.H中
#define IO_CONCAT(a,b)_IO_CONCAT(a,b)
#define _IO_CONCAT(a,b)a ## _ ## b
这段代码前几天看过了,是标示将两边的字符串连接起来的意思,即ab。
include/asm-$(arch)/core_apecs.h
/*
* APECS is the internal name for the 2107x chipset which provides
* memory controller and PCI access for the 21064 chip based systems.
*
* This file is based on:
*
* DECchip 21071-AA and DECchip 21072-AA Core Logic Chipsets
* Data Sheet
*
* EC-N0648-72
*
* david.rusling@reo.mts.dec.com Initial Version.
*/
继续阅读代码,看看定义__IO_PREFIX之后紧接着包含了哪个头文件。在哪个头文
件里面寻找答案。对于你的apsec,看看以下代码段(linux-2.6.28-rc4)
#undef __IO_PREFIX
#define __IO_PREFIX apecs
#define apecs_trivial_io_bw 0
#define apecs_trivial_io_lq 0
#define apecs_trivial_rw_bw 2
#define apecs_trivial_rw_lq 1
#define apecs_trivial_iounmap 1
#include
前往include/asm-$(arch)/io_trivial.h
__EXTERN_INLINE void
IO_CONCAT(__IO_PREFIX,writel)(u32 b, volatile void __iomem *a)
{
*(volatile u32 __force *)a = b;
}
就是最终通过*(volatile u32 __force *)a = b;
来写入数据的。
同样的readl读取数据也和writel类似,这里就不重复了。
# define __force __attribute__((force))
表示所定义的变量类型是可以做强制类型转换的,在进行Sparse分析的时候,是不用报告警信息的。
(如果在没有os,没有mmu的情况下,当开发板裸跑的时候,我们只需要一句话就一切ok:
*(unsigned long *)addr = value)
linux内存映射边读边写,内存映射IO空间的读写函数writeb(), writew(), writel()相关推荐
- linux flash擦除命令,Linux下flash操作读、写、擦除步骤
描述 1. 背景介绍 在板上,ZYNQ PL部分通过EMC连接一片NOR FLASH,地址空间如下: 可以看到NOR FLASH的起始地址为0x80000000,这是物理地址,可以把数据存放在以该地址 ...
- Linux系统chmod命令读、写、执行
一.chmod命令 u - 表示用户 (user) g - 表示用户组 (group) o - 表示其它 (others) a - 表示所有 (all) 1.ch ...
- c语言中读和写的作用,c语言文件读写
c语言文件读写 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种. ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码.ASCII码 ...
- Linux下有关可读可写可执行权限rwx:.sh:权限不够
在某天之前,我运行Linux下的.sh文件,都是采用./xxx.sh的方式. 突然有一天,我发现这个方式运行不了了...提示我 然后,我才知道,原来文件夹还是有权限的... 所以,请教了一下公司大神, ...
- Linux 文件权限 -rwxr-xr-- 可读 可写 可执行 什么意思 ?
2.1.文件信息含义解释 文件信息:drwxr-xr-x. 2 root root 4096 Oct 29 16:43 Desktop drwxr-xr-x:文件类型和权限.第1位:文件类型,剩余9位 ...
- linux c 串口可读可写,串口编程可写入不能读取 怎么解决
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #define DEV_NAME "/dev/ttySP1" #define EXPORT_PATH "/sys/class ...
- 在linux c 以结构体形式写文件 结构体参数如何在函数中传递,Linux安全审计机制模块实现分析(16)-核心文件之三auditsc.c文件描述及具体变量、函数定义...
原标题:Linux安全审计机制模块实现分析(16)-核心文件之三auditsc.c文件描述及具体变量.函数定义 2.4.3文件三auditsc.c2.4.3.1 文件描述 kernel/auditsc ...
- c语言标准io中可读可写,C语言标准IO: [先读再feof] VS [先feof再读]
刚学习C语言读取文件的时候,可能都遇到过这个"bug",读到末尾时数据有重复. 解决方案也是五花八门,甚至有人把数据先缓存了,再忽略掉最后一组.... 不妨看一段代码,两种解决方案 ...
- blp模型 上读下写_Java高并发编程(三):Java内存模型
1 Java内存模型的基础 在并发编程里,需要处理两个问题: 线程之间如何通信 线程之间如何同步. 通信指的是线程之间以何种机制来交换信息.在命令式编程里中,线程之间的通信机制有两种:共享内存和消息传 ...
最新文章
- Domino+Qucikplace+Sametime构建企业办公平台图文攻略(三)
- 学习WINDOWS内核好书
- Xgboost调参小结
- angular 数字逗号分隔,如何在Angular 4中为数字管道指定区域设置千位分隔符
- java中break标记的使用
- thinkphp5 验证码出不来的常见问题
- centos 卸载docker_五分钟安装docker并启动第一个docker容器
- IBM主机增加“交易实时分析”新能力
- 【机器学习】GBDT+LR算法进行特征扩增
- 记kali下使用metasploit木马进行远程控制
- SpringBoot项目实现网络测速功能
- 【BI学习作业04-ALS算法与推荐系统】
- webflux之reactor-Subscriber
- KUDU(三)kudu的模式设计
- 腾讯云技术认证考试综述 腾讯云技术认证题库
- 位宽512bit显卡_显卡位宽是什么?详解显卡位宽基础知识科普!
- AUTH权限通用后台管理控制系统、阿里云UI高端大气
- 网页自动弹窗被拦截 html,JS弹出新窗口被拦截的解决方法
- Java学习日记-Day01
- C# WPF 实现英雄联盟图片 宝宝识图
热门文章
- 计算机专业文书范文,优秀留学文书汇总(计算机专业).pdf
- oracle中怎样查看job,查看oracle数据库job及会话信息
- 移植 linux-5.8.5 到 iTOP-4412(一)build config
- PHP规范之PSR规范
- 【Mongodb和Solr】Mongodb和solr整合
- matplotlib eps格栅化,透明度被改变的问题 pdf->eps
- 2022年陕西省中级工程师职称评定流程是怎样的,仔细看哦
- 记录一次工作中的问题以及解决(POI对于Excel的数据导出覆盖问题)
- C# 仿360悬浮球开发demo程序
- 使用markdown玩转代码架构设计