linux内核基本数据类型总结
linux内核基本数据类型总结
对linux内核的数据类型做一下总结。
下面部分内容参考了:http://book.csdn.net/bookfiles/12/100126.shtml
当
Linux
内核在体系结构差异较大的平台之间移植时,会产生与数据类型相关的问题。在编译内核时使用
-Wall -Wstrict-prototypes
选项,可以避免很多错误的发生。
内核使用的基本数据类型主要有:
Ø
Ø
int
标准
C
语言整数类型;
Ø
Ø
u32
32
位整数类型;
Ø
Ø
pid_t
特定内核对象
pid
的类型。
在不同的
CPU
体系结构上,
C
语言的数据类型所占空间不一样。下面是在
x86
下数据类型所占的字节数:
arch
char
short
int
long
ptr
long-long
u8
u16
u32
u64
i686
1
2
4
4
4
8
1
2
4
8
下面是在其他平台上的数据类型所占的字节数:
arch
char
short
int
long
ptr
long-long
u8
u16
u32
u64
i386
1
2
4
4
4
8
1
2
4
8
alpha
1
2
4
8
8
8
1
2
4
8
armv4l
1
2
4
4
4
8
1
2
4
8
ia64
1
2
4
8
8
8
1
2
4
8
m68k
1
2
4
4
4
8
1
2
4
8
mips
1
2
4
4
4
8
1
2
4
8
ppc
1
2
4
4
4
8
1
2
4
8
sparc
1
2
4
4
4
8
1
2
4
8
sparc64
1
2
4
4
4
8
1
2
4
8
其中基于
sparc64
平台的
Linux
用户空间可以运行
32
位代码,用户空间指针是
32
位宽的,但内核空间是
64
位的。
内核中的地址是
unsigned long
类型,指针大小和
long
类型相同。
内核提供下列数据类型。所有类型在头文件
<include/asm/types.h>
中声明,这个文件又被头文件
<Linux/types.h>
所包含。下面是
include/asm/types.h
文件。
这是对ARM体系结构中 /asm/types.h文件中的一些定义:
因为我是对arm体系结构进行了配置
#
ifndef
__ASM_ARM_TYPES_H
#
define
__ASM_ARM_TYPES_H
#
ifndef
__ASSEMBLY__
typedef
unsigned
short
umode_t;
/*
* __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
* header files exported to user space
*/
typedef
__signed__
相关文档:
明天就回家了。今晚去火车站买了明早的车票,感觉蛮匆忙的。这两天,除了整电脑,啥事都没干。我那可怜的电脑,隔三差五的就被我整一次。开始只是应用软件层面上的,接着是系统,再接着就是接近硬件。
花了这么多时间 ......
1.check ntp is installed or not
[root@myvm1 server-tar]# whereis npt
npt:
#:(..not install
2.get ntp from official website(http://psp2.ntp.org/bin/view/Main/SoftwareDownloads) and install.
[root@myvm1 server-tar]# wget http://archive.ntp.org/ntp4/ntp-4.2/ntp-4.2.6.tar.gz
[root@myvm1 server-tar ......
1. cd命令 改变当前目录
cd netseek //进入netseek这个目录。
cd //退出当前目录。
2 .
pwd命令 查看当前所在目录完整路径
eg: pwd //查看当前所在目录路径。
3. ls命令 查看目录或者文件的属性,列举出任一目录下面的文件
eg: ls /usr/man
4. rm命令
删除文件和目录
rm -rf 目录名字/ ......
问题:
gcc -c main.c -L ./include libmmgr.a
的时候,总是报错,
正确的做法是
gcc -c main.c -L ./include -lmmgr
有一个误区是,
gcc -c main.c -L. libmmgr.a
有时候也是对的,但这是特例,是main.c和libmmgr.a在同一个路径下,这时的-L.不起作用,即使删除也可以。 ......