gcc优化引起get_free_page比__get_free_page返回值多4096
2017-12-12 18:53:04
gcc优化引起get_free_page比__get_free_page返回值多4096
内核版本:1.3.100
extern inline unsigned long get_free_page(int priority)
{
unsigned long page;
page = __get_free_page(priority);
DDBUG("1.page=%p, nr=%d", page, page>>PAGE_SHIFT);
if (page){
memset((void *) page, 0, PAGE_SIZE);
}
DDBUG("2.page=%p, nr=%d", page, page>>PAGE_SHIFT);
return page;
}
page_alloc.c(245):__get_free_pages : 2.map_nr=431, ADDRESS(431)=001af000
/root/oldlinux/src/linux/include/linux/mm.h(242):get_free_page : 1.page=001af000, nr=431
/root/oldlinux/src/linux/include/linux/mm.h(246):get_free_page : 2.page=001b0000, nr=431
应该返回0x001af000结果错给了0x001b0000
修订:page使用volatile属性,告诉gcc,这个变量使用内存,使用前从内核中取
static inline unsigned long get_free_page(int priority)
{
volatile unsigned long page;
page = __get_free_page(priority);
DDBUG("1.page=%p, nr=%d", page, page>>PAGE_SHIFT);
if (page){
memset(page, 0, PAGE_SIZE);
}
DDBUG("2.page=%p, nr=%d", page, page>>PAGE_SHIFT);
return page;
}
page_alloc.c(245):__get_free_pages : 2.map_nr=431, ADDRESS(431)=001af000
/root/oldlinux/src/linux/include/linux/mm.h(241):get_free_page : 1.page=001af000, nr=431
/root/oldlinux/src/linux/include/linux/mm.h(245):get_free_page : 2.page=001af000, nr=431
gcc优化引起get_free_page比__get_free_page返回值多4096的更多相关文章
- [转] C++中临时对象及返回值优化
http://www.cnblogs.com/xkfz007/articles/2506022.html 什么是临时对象? C++真正的临时对象是不可见的匿名对象,不会出现在你的源码中,但是程序在运行 ...
- 转:C++中临时对象及返回值优化
http://www.cnblogs.com/xkfz007/articles/2506022.html 什么是临时对象? C++真正的临时对象是不可见的匿名对象,不会出现在你的源码中,但是程序在运行 ...
- C++返回值优化
返回值优化(Return Value Optimization,简称RVO)是一种编译器优化机制:当函数需要返回一个对象的时候,如果自己创建一个临时对象用于返回,那么这个临时对象会消耗一个构造函数(C ...
- 返回值优化(RVO)
C++的函数中,如果返回值是一个对象,那么理论上它不可避免的会调用对象的构造函数和析构函数,从而导致一定的效率损耗.如下函数所示: A test() { A a; return a; } 在test函 ...
- GCC:条件判断中赋值语句和函数结尾时无返回值的警告
有下面非常经典的一个字符串复制程序. test1.c #include <stdio.h> int main() { char str_t[]="This String come ...
- 【M20】协助完成“返回值优化(RVO)”
1.方法返回对象,会导致临时对象的产生,这降低了效率,const Rational operator* (const Rational& lhs,Rational& rhs).有没有什 ...
- [More Effective C++]条款22有关返回值优化的验证结果
(这里的验证结果是针对返回值优化的,其实和条款22本身所说的,考虑以操作符复合形式(op=)取代其独身形式(op),关系不大.书生注) 在[More Effective C++]条款22的最后,在返回 ...
- C++返回值优化RVO
返回值优化,是一种属于编译器的技术,它通过转换源代码和对象的创建来加快源代码的执行速度.RVO = return value optimization. 测试平台:STM32F103VG + Keil ...
- JMeter(7) 优化判断返回类型和返回值
之前判断接口类型和返回值用beanshell,可见JMeter(5)-JMeter之BeanShell使用 优化点 接口测试里面对返回字段的类型验证和值验证为基本需求,将方法导成jar文件,导入之后方 ...
随机推荐
- 配置Jenkins 实现自动发布maven项目至weblogic(svn+maven+weblogic12c)
Jenkins安装完成之后,需要我们对其配置,然后才可以实现自动部署项目. 前提 防火墙开放weblogic的7001端口 Linux(CentOS):firewall-cmd --zone=publ ...
- Bootstrap3基础 btn-group-vertical 按钮组(横着、竖着排列)
内容 参数 OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor ...
- 【做题】agc008f - Black Radius——计数&讨论&思维
原文链接 https://www.cnblogs.com/cly-none/p/9794411.html \[ \newcommand{\stif}[2]{\left[ \begin{matrix} ...
- Markdown语法参考
参考博客: https://www.jianshu.com/p/f3147a804368 https://www.jianshu.com/p/191d1e21f7ed https://www.jian ...
- hihoCoder week23 最短路径·一
spfa 最短路 #include <bits/stdc++.h> using namespace std; #define pb push_back #define INF 1e16; ...
- Directional RNA-seq data -which parameters to choose?
Directional RNA-seq data -which parameters to choose? REF: https://chipster.csc.fi/manual/library-ty ...
- Dependency Injection2
IoC容器和Dependency Injection 模式 使用 Service Locator 依赖注入的最大好处在于:它消除了MovieLister类对具体 MovieFinder实现类的依赖 ...
- windows特殊文件或文件夹
考了很多文章,搜集了很多资料整理而成.好的用途可以用来隐藏个人资料,防止误删,病毒免疫等等.至于坏的方面,当然也可用来隐藏木马等等,就看你怎么用了.还有一个没有搞明白,资料上也没找到,请知道的指点一下 ...
- 聚类算法——KMEANS算法
聚类概念 无监督问题:我们手里没有标签 聚类:相似的东西分到一组 难点:如何评估,如何调参 基本概念 要得到簇的个数,需要指定K值 质心:均值,即向量各维取平均即可 距离的度量:常用欧几里得距离和余弦 ...
- python测试
[链接]JointhePythonDeveloperscommunityonSlack! http://pythondevelopers.herokuapp.com/