`
freesoftman
  • 浏览: 313951 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
might_sleep(): 指示当前函数可以睡眠。如果它所在的函数处于原子上下文(atomic context)中(如,spinlock, irq-handler…),将打印出堆栈的回溯信息。这个函数主要用来做调试工作,在你不确定不期望睡眠的地方是否真的不会睡眠时,就把这个宏加进去。   来自于: http://blog.csdn.net/arethe/article/details/6079307
在arm系统中,对cpu核的设计。使用了位技术变量来代表每个cpu的使用情况。 但是这里考虑到多核对同一变量的设置,因为有了多核访问,于是乎就需要防止冲突的机制。真样产生了特殊情况的操作位接口--> macro bitop, name, instr。 使用汇编的形式来完成。主要的技术,是arm arch6中的strex, ldrex。   STREX指令的英文解释如下: STREX (Store Register Exclusive) performs a conditional store to memory. The store only occurs if theexe ...
ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据。 针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器。每个位的含义如下图:   分成了4部分: 1,条件标志位 N(Negative), Z(Zero), C(Carry), V(Verflow)统称为条件标志位。ARM指令可以根据CPSR中的这些条件标志位来选择性的执行。 2,Q标志位 ARM v5的E系列处理器中,CPSR的bit[27]称为Q标志位。主要用于指示增强的DSP指令是否发生了溢出。 3,控制位 I, F, T以及M[4:0]统称为控制位。当异常中断发生时,这些位发生变化。在特权级的处理器模 ...
从Linux代码反思整形以及无符号整形变量的知识   今日,在分析Linux调度器的过程中。 在sched.c中的init_cfs_rq中,看到了如下一条奇怪的赋值语句。   static void init_cfs_rq(struct cfs_rq *cfs_rq, struct rq *rq) {     cfs_rq->tasks_timeline = RB_ROOT;
总算通过了nfs的localhost测试。   配置很简单,下面摘自网络,并且整理下:   1 安装nfs #apt-get install nfs-kernel-server #apt-get install nfs-common   2 配置/etc/exports 在文本末添加 #/root/nfs_root *(rw,sync,no_root_squash) #chmod 777 -R /root/nfs_root   可以使用showmount -e来查看当前的配置是否已经生效 #showmount -e                      Expo ...
最近买了块mini2440的开发板。 打算使用kgdb来调试下内核。于是乎开始配置tftp,搜索了众多网址。 发现没有一个是可以成功的。没有附带上ubuntu的版本不同需要的tftp的配置也不同。 好不容易在http://blog.chinaunix.net/space.php?uid=24810608&do=blog&id=159447找到了解决方案。   同时,非常感谢dfhf2007.接下来,我把自己的安装步骤总结一下:   安装tftp服务器的主要软件包有tftp-hpa与tftpd-pad。 tftp-hpa是客户端,tftpd-hpa是服务器端。   ...
看了arm汇编语言语法一个多月了。总算入门了。当然还有很多东西值得继续努力推敲滴。   最近对LDR与LTORG有了一些新的认识。   LDR是一个比较复制的指令。作用是从存储器到寄存器的单一数据读取指令。它有19条指令格式。 其中有两条格式为宏指令(macro),格式如下: 1,LDR<cond><type>Rd,<label> 2,LDR<cond>            Rd,=<32-bit-value>   这里重点分析下第二条宏指令。它会被编译器编译成一条指令,把给定的32位数值保存到寄存器Rd.通常这掉指 ...
最近由于要分析Uboot的代码。 于是乎,再一次开始复习《GNU Make中文手册》() 第一次看这本手册是在快一年前的事情了,当时是啥都不懂。一头雾水。   这次细细品味的时候,发现收获颇多。建议初学者去多看看。   今 ...
1 GNU ARM 汇编快速入门,http://blog.chinaunix.net/u/31996/showart.php?id=326146 2 ARM GNU 汇编伪指令简介,http://www.cppblog.com/jb8164/archive/2008/01/22/41661.aspx 3 GNU汇编使用经验,http://blog.chinaunix.net/u1/37614/showart_390095.html 4 GNU的编译器和开发工具,http://blog.ccidnet.com/blog-htm-do-showone-uid-34335-itemi ...
       有关内核的书籍可以用汗牛充栋来形容,不过只有一些经典的神作经住了考验。首先是5本久经考验的神作。《Linux内核设计与实现》        简称LKD,从入门开始,介绍了诸如进程管理、系统调用、中断和中断处 ...
今天在看《Linux设备驱动程序》里面的第十五章“内存映射和DMA” 里面的一大堆地址类型弄得我云里去雾里来的。   如: 用户虚拟地址 物理地址 总线地址 内核逻辑地址 内核虚拟地址 linux这个操作系统真是事情多啊,地址都搞这么多名堂的。我以前对地址的理解就是: 逻辑地址:相对于进程4G空间来说的,为了隔离物理地址与程序直接交互,减轻程序员的负担。通过段映射,页映射可以转换成物理地址。   物理地址:就是CPU通过地址总线发送的信号,可以连接到实际内存。   虚拟地址:就是为了在小内存的系统中运行大的应用程序而出现的一种机制。这里就牵涉到了页中断,就是在某个 ...
  实在是令我很郁闷的事啊。 去年用了两天的时间恶补了一下变参,今天看到变参。发现头脑一篇空白,啥都不知道了。   古人有云:温故而知新。今日我就在看一遍,做个笔记了。   在 C 语言中,函数参数的 传递方式有值传和址传 . 值传是把实参的一个专用的、临时的复制值给被调函数中相应的形参 被调用函数使用、修改这个传来的复制值,不会影响实参的值 . 址传则 是把变量 ( 实参 ) 的地址传给被调函数 . 被调函数通过这个地址找到该变量的存放位置,直接对该地址中存放 的变量的内容进行存取操作 . 无论是值传还是址传,都要求实参的数目及类型与形参 要完 ...
offsetof的原型为: size_t offsetof(type, member);   DESCRIPTION        The  macro  offsetof()  returns the offset of the field member from the        start of the structure type.        This macro is useful because the sizes of the  fields  that  compose  a   ...

有关mmap

  近日,一直忙于android的研究。好久没有记录点什么了 今天在分析binder的时候,看到了一个函数,mmap, 这个函数以前看过很多遍,但是没有 一次真正去深入了解它, 今天就开始深入了解一下了。   以下来自于网络: ------------------------- Linux提供了内存映射函数mmap, 它把文件内容映射到一段内存上(准确说是虚拟内存上), 通过对这段内存的读取和修改, 实现对文件的读取和修改, 先来看一下mmap的函数声明: 头文件: <unistd.h> <sys/mman.h> 原 ...
最近正在转向Linux的环境开发。装了一个openSUSE。呵呵,是我最敬仰的Boss热爱的Linux版本。 So我打算在该平台上搭建android源代码开发平台。   研究Linux内核将近半年了,玩linux Os也有1年。但都是陆陆续续的进行。   今天就碰到了一个很基础的问题。在安装gnupg的时候,进入目录!发现里面的文件有各种颜色,如何来区分文件的属性以及是否可执行呢。   调用ls -l属性,如图:   ls命令的-l属性显示文件的详细信息,其中包括权限。 执行ls -l 或 ls -al 命令后显示的结果中,最前面的第2~10个字符是用来表示权限。第一个字 ...
Global site tag (gtag.js) - Google Analytics