摘要:一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去预先假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 3). 多线程应用中被几个任务共享的变量 回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。嵌入式系统程序员经常同硬件、中断、RTOS等等打交道...
阅读全文
摘要:1. kmalloc(),主要用于字节大小的内存分配,物理地址连续,从按大小组冲的缓冲数组里分配数据,也是通过slab分配2. vmalloc(),仅仅在地址空间连续,物理空间的连续性不做保证。其分配的过程需要进行页表的修复。因为硬件设备并不通过MMU,也谈不少用空空间地址的概念,所以需要物理空间连续的内存。而对纯软件部分来说,vmalloc()亦可,但vmalloc需要额外的页表开销,会引起TLB 抖动,所以一般用kmalloc. vmalloc仅在需要大块内存时才需要,如加载模块.3. get_free_pages(),page一级的内存分配,采用伙伴算法4. kmem_cache_cre
阅读全文
摘要:转自http://linux.chinaitlab.com/administer/827442.html这几天看了很多文档,算是对linux的启动过程有了比较细致的了解. 网上有很多文章谈到这方面的内容,但总觉得没有一篇完全的解析linux启动的细节,下面是我小弟在学习的过程中总结出来的一些东东.这个是完整的linux启动过程,不涉及内核,但是我觉得比较详细哦. (由于本人比较懒,这一段是从网上抄的) 机器加电启动后,BIOS开始检测系统参数,如内存的大小,日期和时间,磁盘设备以及这些磁盘设备用来引导的顺序,通常情况下,BIOS都是被 配置成首先检查软驱或者光驱(或两者都检查),然后再尝...
阅读全文
摘要:本文转自http://linux.chinaitlab.com/c/805820.html1) diff的传统格式输出. ############################################ cat before.txt 输出: This is a line to be deleted This is a line that will be changed This is a line that will be unchanged cat after.txt 输出: This is a line that has been changed This is...
阅读全文
摘要:$_POST["submit"];当文件中包含以上代码会提示 Notice: Undefined index: submit in /opt/lampp/htdocs/add.php on line 10另外,有时还会出现 引用内容 Notice: Undefined variable: Submit ...... 等一些这样的提示 本来php是不需要定义变量的,但是出现这种情况应该怎么办呢? 只要在安装路径里i找出php.ini的 在php.ini中的302行 将 :error_reporting = E_ALL 修改成 error_reporting = E_ALL &
阅读全文