types.h头文件学习

简介: 版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/45117739 types.h头文件纵观,就可以看出是对一些数据类型的重命名或者是定义,以及对DMA通用地址的定义以及其64为的特性。
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/45117739

types.h头文件纵观,就可以看出是对一些数据类型的重命名或者是定义,以及对DMA通用地址的定义以及其64为的特性。下面是types.h头文件的源代码,主要的学习内容都在注释当中。

#ifndef _I386_TYPES_H
#define _I386_TYPES_H

#ifndef __ASSEMBLY__

/**
 * 纵观这个头文件,发现该头文件主要是用来给
 * 定义类型以及给类型重新命名的
 */

//将unsigned short 重命名为 umode_t
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
 *
 * __xx也是可以的。他不会影响POSIX命名空间。在导出到用户空间的头文件中
 * 使用这些名称.
 * 
 */

//重命名有符号的char和无符号的char
//可以这样去理解,由于一个char占用一个字节的长度,
//也就是8位,所以才会这样去命名
typedef __signed__ char __s8;
typedef unsigned char __u8;

//重新命名有符号的short和无符号的short
//short类型占有2个字节的长度,也就是16位
typedef __signed__ short __s16;
typedef unsigned short __u16;

//重命名有符号的int和无符号的int
//int类型占有四个字节的长度,即32位
typedef __signed_ /* __KERNEL__ */_ int __s32;
typedef unsigned int __u32;

//在定一个__GNUC__和没有定义__STRICT_ANSI__下
//来重命名long
//long占有8个字节的长度,64位
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
typedef __signed__ long long __s64;
typedef unsigned long long __u64;
#endif

#endif /* __ASSEMBLY__ */

/*
 * These aren't exported outside the kernel to avoid name space clashes
 *
 * 为了避免命名空间冲突,这些将不会导出到内核外面
 */
#ifdef __KERNEL__

//一个宏定义,定义BITS_PER_LONG
//为32
#define BITS_PER_LONG 32

//在没有定义__ASSEMBLY__的情况下
#ifndef __ASSEMBLY__

//同上
typedef signed char s8;
typedef unsigned char u8;

typedef signed short s16;
typedef unsigned short u16;

typedef signed int s32;
typedef unsigned int u32;

typedef signed long long s64;
typedef unsigned long long u64;

/* DMA addresses come in generic and 64-bit flavours.  */
//定义DMA通用地址和64位特性

#ifdef CONFIG_HIGHMEM64G
typedef u64 dma_addr_t;
#else
typedef u32 dma_addr_t;
#endif
typedef u64 dma64_addr_t;

#ifdef CONFIG_LBD
typedef u64 sector_t;
#define HAVE_SECTOR_T
#endif

#ifdef CONFIG_LSF
typedef u64 blkcnt_t;
#define HAVE_BLKCNT_T
#endif

#endif /* __ASSEMBLY__ */

#endif /* __KERNEL__ */

#endif
目录
相关文章
|
编译器 程序员 C++
C头文件
C头文件。
35 0
|
1月前
|
编译器 C++
#include<> 与#include ""的区别
在C++中,`#include &lt;&gt;` 和 `#include &quot;&quot;` 都用于包含头文件,但使用场景不同。`#include &lt;&gt;` 用于包含系统标准库头文件,编译器会在标准库路径中查找;而 `#include &quot;&quot;` 用于包含用户自定义的头文件,编译器会优先在当前项目目录中查找。
|
5月前
|
编译器 C语言 C++
C++中.h和.hpp文件有什么区别?
C++中.h和.hpp文件有什么区别?
|
6月前
|
编译器 C语言
c头文件
c头文件
48 0
|
编译器 程序员 C++
C 头文件
C 头文件。
28 0
|
6月前
|
编译器 程序员 C++
头文件
头文件。
37 2
|
6月前
|
存储
include函数
【2月更文挑战第15天】include函数。
66 2
|
6月前
|
编译器
头文件ifndef用法及意义#pragma once
头文件ifndef用法及意义#pragma once
58 0
|
C++
万能头文件#include<bits/stdc++.h>
#include<bits/stdc++.h>这个头文件的含义
366 1