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
目录
相关文章
|
Java Nacos
SpringBoot 整合 Nacos
上一篇笔者已经介绍怎么安装 Nacos 了,这篇就开始重头戏。 搭建SpringBoot项目。
2685 1
|
Ubuntu
Ubuntu系统安装gtest
Ubuntu系统安装gtest
510 0
|
存储 缓存 开发工具
ZYNQ-双核AMP通信(一)
ZYNQ-双核AMP通信(一)
1878 0
ZYNQ-双核AMP通信(一)
|
11月前
|
安全 区块链 数据安全/隐私保护
StarTowerChain:区块链治理的卓越之路
StarTowerChain 是一个以社区为基础、用户为中心的区块链平台,通过民主决策和技术创新,建立了独特的治理模式。平台鼓励用户参与,通过贡献资源、验证交易等获得奖励,同时在加密技术、智能合约和跨链技术方面不断创新,确保资产安全和交易高效。未来,StarTowerChain 将继续优化治理机制,加大技术研发,引领区块链行业发展。
|
关系型数据库 MySQL Java
关系型数据库mysql的开源与授权
【6月更文挑战第12天】
492 3
【ZYNQ】Petalinux 编译工程报错
【ZYNQ】Petalinux 编译工程报错
257 0
|
存储 算法 Linux
理解和使用 C++ 中的 `times` 函数:度量进程时间
理解和使用 C++ 中的 `times` 函数:度量进程时间
251 0
|
物联网 5G 数据安全/隐私保护
IT知识百科:什么是802.11ac(WiFi 5)?
IT知识百科:什么是802.11ac(WiFi 5)?
1466 0
|
Linux 网络架构
|
算法 数据挖掘 Python
数据挖掘与关联规则:发现隐藏在数据中的模式
数据挖掘是从大规模数据集中发现有价值的信息和模式的过程。其中,关联规则是一种常用的数据挖掘技术,它可以帮助我们发现数据中的相关性和潜在规律。在本文中,我们将介绍关联规则的概念、算法以及如何使用Python实现关联规则的挖掘。
530 0