当前位置: 代码迷 >> Android >> Android内核源码bionic目录下的子目录arch-arm源码分析札记
  详细解决方案

Android内核源码bionic目录下的子目录arch-arm源码分析札记

热度:16   发布时间:2016-04-28 02:52:31.0
Android内核源码bionic目录下的子目录arch-arm源码分析笔记

依旧是好记性不如烂笔头,今天需要学习的是arch-arm目录下的代码。

首先我们先看一下inclue目录下的endian这个头文件我们主要是需要知道下面的几点知识。

1、先看一下下面的代码的片段

#if !defined __ARM_ARCH_5__ && !defined __ARM_ARCH_5T__ && \    !defined __ARM_ARCH_5TE__ && !defined __ARM_ARCH_5TEJ__ && \    !defined __ARM_ARCH_4T__ && !defined __ARM_ARCH_4__

正如google上面的注释文本所说:

REV与REV16在ARM5与ARM4上面是不可用的。同时说明了没有包含<machine/cpu-features.h>这个头文件的原因是因为它会使用类似如PLD的符号串处理语言来污染命名空间。

接下来我们看到的是marchine目录下的一些头文件的定义。

在_types这个头文件中,我们看以下的代码的片段:

#define _SIZE_T#define _SSIZE_T#define _PTRDIFF_Ttypedef unsigned long  size_t;typedef long           ssize_t;typedef long           ptrdiff_t;#endif

正如Google所注释的那样:

内核定义size_t作为无符号的整型数据,但是g++却希望它的类型是无符号long类型的数据。


接下来主要是仔细的来看一下cpu-features这个头文件的定义:

1、正如注释所说的那样,这个头文件定义的目的是定义若干符号串语言来积极响应CPU的特色。同时这些CPU的特色在目标的CPU上面再编译时刻也许是不能够使用的。

2、这样做的目的是使我们从各种不同的Arm的体系结构中抽象出来。

3、ieee这个头文件的作用是定义依赖机器的浮点型数据的结构。


接下来查看一下kernel这个头文件的定义:

在这个文件中主要是定义内核特定的定义,优化了内核的头文件。



  相关解决方案