Linux驱动开发常用头文件

头文件目录中总共有32个.h头文件。其中主目录下有13个,asm子目录中有4个,linux子目录中有10个,sys子目录中有5个。这些头文件各自的功能如下:

1、主目录

<a.out.h>:a.out头文件,定义了a.out执行文件格式和一些宏。
<const.h>:常数符号头文件,目前仅定义了i节点中i_mode字段的各标志位。
<ctype.h>:字符类型头文件,定义了一些有关字符类型判断和转换的宏。
<errno.h>:错误号头文件,包含系统中各种出错号。(Linus从minix中引进的)。
<fcntl.h>:文件控制头文件,用于文件及其描述符的操作控制常数符号的定义。
<signal.h>:信号头文件,定义信号符号常量,信号结构以及信号操作函数原型。
<stdarg.h>:标准参数头文件,以宏的形式定义变量参数列表。主要说明了一个类型(va_list)和3个宏(va_start, va_arg和va_end),用于vsprintf、vprintf、vfprintf函数。
<stddef.h>:标准定义头文件,定义了NULL, offsetof(TYPE, MEMBER)。
<string.h>:字符串头文件,主要定义了一些有关字符串操作的嵌入函数。
<termios.h>:终端输入输出函数头文件,主要定义控制异步通信口的终端接口。
<time.h>:时间类型头文件,主要定义了tm结构和一些有关时间的函数原形。
<unistd.h>:Linux标准头文件,定义了各种符号常数和类型,并声明了各种函数。如,定义了__LIBRARY__,则还包括系统调用号和内嵌汇编_syscall0()等。
<utime.h>:用户时间头文件,定义了访问和修改时间结构以及utime()原型。

2、体系结构相关头文件子目录include/asm

这些头文件主要定义了一些与CPU体系结构密切相关的数据结构、宏函数和变量。共4个文件。
<asm/io.h>:I/O头文件,以宏的嵌入汇编程序形式定义对I/O端口操作的函数。
<asm/memory.h>:内存拷贝头文件,含有memcpy()嵌入式汇编宏函数。
<asm/segment.h>:段操作头文件,定义了有关段寄存器操作的嵌入式汇编函数。
<asm/system.h>:系统头文件,定义了设置或修改描述符/中断门等的嵌入式汇编宏。

3、Linux内核专用头文件子目录include/linux

<linux/config.h>:内核配置头文件,定义键盘语言和硬盘类型(HD_TYPE)可选项。
<linux/fdreg.h>:软驱头文件,含有软盘控制器参数的一些定义。
<linux/fs.h>:文件系统头文件,定义文件表结构(file,buffer_head,m_inode等)。
<linux/hdreg.h>:硬盘参数头文件,定义访问硬盘寄存器端口、状态码和分区表等信息。
<linux/head.h>:head头文件,定义了段描述符的简单结构,和几个选择符常量。
<linux/kernel.h>:内核头文件,含有一些内核常用函数的原形定义。
<linux/mm.h>:内存管理头文件,含有页面大小定义和一些页面释放函数原型。
<linux/sched.h>: 调度程序头文件,定义了任务结构task_struct、初始任务0的数据,以及一些有关描述符参数设置和获取的嵌入式汇编函数宏语句。
<linux/sys.h>:系统调用头文件,含有72个系统调用C函数处理程序,以"sys_"开头。
<linux/tty.h>:tty头文件,定义了有关tty_io,串行通信方面的参数、常数。

4、系统专用数据结构子目录include/sys

<sys/stat.h>: 文件状态头文件,含有文件或文件系统状态结构stat{}和常量。
<sys/times.h>:定义了进程中运行时间结构tms以及times()函数原型。
<sys/types.h>:类型头文件,定义了基本的系统数据类型。
<sys/utsname.h>:系统名称结构头文件。
<sys/wait.h>:等待调用头文件,定义系统调用wait()和waitpid()及相关常数符号。

 

#include <Linux/***.h>                     //是在linux-2.6.29/include/linux下面寻找源文件。
#include <asm/***.h>                     //是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。
#include <mach/***.h>                   //是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面寻找源文件。
#include <plat/regs-adc.h>           //在linux-2.6.31_TX2440A20100510\linux-2.6.31_TX2440A\arch\arm\plat-s3c\include\plat
#include <linux/module.h>            //最基本的文件,支持动态添加和卸载模块。Hello World驱动要这一个文件就可以了
#include <linux/fs.h>                       //包含了文件操作相关struct的定义,例如大名鼎鼎的struct file_operations,包含了struct inode 的定义,MINOR、MAJOR的头文件。
#include <linux/errno.h>                 //包含了对返回值的宏定义,这样用户程序可以用perror输出错误信息。
#include <linux/types.h>                 //对一些特殊类型的定义,例如dev_t, off_t, pid_t.其实这些类型大部分都是unsigned int型通过一连串的typedef变过来的,只是为了方便阅读。
#include <linux/cdev.h>                  //对字符设备结构cdev以及一系列的操作函数的定义。//包含了cdev 结构及相关函数的定义。
#include <linux/wait.h>                   //等代队列相关头文件//内核等待队列,它包含了自旋锁的头文件
#include <linux/init.h>                     //初始化头文件
#include <linux/kernel.h>               //驱动要写入内核,与内核相关的头文件
#include <linux/slab.h>                   //包含了kcalloc、kzalloc内存分配函数的定义。
#include <linux/uaccess.h>           //包含了copy_to_user、copy_from_user等内核访问用户进程内存地址的函数定义。
#include <linux/device.h>               //包含了device、class 等结构的定义
#include <linux/io.h>                       //包含了ioremap、iowrite等内核访问IO内存等函数的定义。
#include <linux/miscdevice.h>      //包含了miscdevice结构的定义及相关的操作函数。
#include <linux/interrupt.h>            //使用中断必须的头文件
#include <mach/irqs.h>                  //使用中断必须的头文件
#include <asm/bitops.h>                //包含set_bit等位操作函数,实现Input子系统时可用。
#include <linux/semaphore.h>      //使用信号量必须的头文件
#include <linux/spinlock.h>            //自旋锁
#include <linux/sched.h>                //内核等待队列中要使用的TASK_NORMAL、TASK_INTERRUPTIBLE包含在这个头文件
#include <linux/kfifo.h>                    //fifo环形队列
#include <linux/timer.h>                  //内核定时器
#include<linux/input.h>                   //中断处理 
#include <linux/delay.h>                  //延时头文件
#include <asm/irq.h>                       //与处理器相关的中断
#include<linux/interrupt.h>              //操作系统中断
#include <asm/uaccess.h>            //与处理器相关的入口
#include<asm/arch/regs-gpio.h>  //与处理器相关的IO口操作
#include<mach/regs-gpio.h>         //同上
#include<asm/hardware.h>           //与处理器相关的硬件
#include<mach/hardware.h>          //同上
#include <linux/poll.h>                      //轮询文件
#include <linux/gpio.h>                     //操作系统相关的IO口文件
#include <stdio.h>                             //标准输入输出
#include <stdlib.h>                            //标准库
#include <unistd.h>                           //Unix标准
#include <sys/ioctl.h>                       //IO控制

转载于:https://www.cnblogs.com/chen-farsight/p/6146168.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring线程池服务

线程池对于执行同步和异步过程非常重要。 本文介绍如何使用Spring开发和监视线程池服务。 创建线程池已通过两种替代方法进行了说明。 二手技术 &#xff1a; JDK 1.6.0_21 Spring3.0.5 Maven的3.0.2 步骤1&#xff1a;建立已完成的专案 创建一个Maven项目&#xff0c;如下…

我的世界java村民繁殖_我的世界:Java19w08a更新,村民加强守卫,小狐狸背叛

虽然这句话很绕口&#xff0c;其实意思很简单&#xff0c;那就是之前的隐身药水没有什么用&#xff0c;该被打还是被打。因为这个可是害惨了流浪商人&#xff0c;不过这次好了&#xff0c;流浪商人在喝了隐身药水之后就能安全度过晚上了。NO.3 皮革马铠马铠是属于马的盔甲&…

欧莱雅眉笔banner个人设计

眉笔名称&#xff1a;眉笔大师三头塑形眉笔 &#xff0c;之所以没用吧这个商品名称放大&#xff0c;是我觉得它是一个名称&#xff0c;而我把自己想的广告词“出彩只需一笔” 放大不仅能凸显出这只笔的强大&#xff0c;还表示了一种有了我这支眉笔你会更出彩更漂亮&#xff0c…

使用带有注释和JQuery的Spring MVC 3的Ajax

与Ajax一起工作对我来说一直很有趣&#xff01; 是不是 &#xff1f; 我将使您轻松将Ajax与Spring MVC 3和JQuery结合使用。 这篇文章将向您说明如何在工业编码的现实生活中使用Ajax。 和往常一样&#xff0c;我们将在Spring MVC 3框架中以Ajax的实际示例为例&#xff0c;并将其…

ThinkPHP 3 的输出

一、ThinkPHP 3 的输出 &#xff08;重点&#xff09;a、通过 echo 等PHP原生的输出方式在页面中输出b、通过display方法输出想分配变量可以使用assign方法c、修改左右定界符休要修改配置文件中的配置项TMPL_L_DELIM><{, //修改左定界符TMPL_R_DELIM>}>, //修…

java百度云文件上传_关于如何在自己项目集成百度云BCE文件上传STS方案

1、 项目背景由于本人项目需要&#xff0c;需要在视频点播服务之中需要加载字幕文件(通用格式srt)&#xff0c;经过比较好几家的公有云服务&#xff0c;最后选择只有百度云提供字幕服务。字幕&#xff1a;我们通常在观看外语电影的是&#xff0c;没有国语版时候只能通过下载字幕…

Java 7 – NIO文件革命

Java 7&#xff08;“项目代币”&#xff09;已于去年7月问世。 此版本中的新增功能很有用&#xff0c;例如&#xff0c;尝试使用资源–从try块自动处理可关闭的资源&#xff0c;switch语句中的字符串&#xff0c;用于异常的multicatch以及用于使用泛型的<>运算符。 每个…

hdu 3507 Print Article(斜率优化DP)

题目链接&#xff1a;hdu 3507 Print Article 题意&#xff1a; 每个字有一个值&#xff0c;现在让你分成k段打印&#xff0c;每段打印需要消耗的值用那个公式计算&#xff0c;现在让你求最小值 题解&#xff1a; 设dp[i]表示前i个字符需要消耗的最小值&#xff0c;那么有dp[i]…

第三章 consul服务注册与服务查询

1、定义一个服务 https://www.consul.io/docs/agent/services.html 该方法是服务注册中提供服务的最常用的方法。 关于服务的定义&#xff1a;服务的属性我们会在后边每出现一个总结一个&#xff0c;最后再做总结。 2、服务注册 2.1、创建服务文件所存放的文件夹 说明&#xff…

coreos 安装mysql_CoreOS 在 PC 上快速安装方法指南

意义能够以最快的速度安装部署Linux操作系统。安装快速简单&#xff0c;几乎不花时间就可以开始运行Docker。运行速度非常快。使用内存硬盘。我的情况win8 笔记本偶尔玩游戏&#xff0c;但是装Linux双系统可能需要我一天的时间来完成。我的所有业务都只需要在Docker中跑就可以了…

使用ycsb测试cassandra

参考 https://github.com/cloudius-systems/osv/wiki/Benchmarking-Cassandra-and-other-NoSQL-databases-with-YCSB https://github.com/brianfrankcooper/YCSB/tree/master/cassandra 创建 表头 https://gist.github.com/pbailis/3978273  设置field参数 长度和个数 启动和…

Session 的配置和特性

session的配置 对于session的配置是php.ini中配置 session数据都是保存在文本文件中 设置session文件的保存位置 说明&#xff1a; 默认是保存在windows/temp目录 设置session保存作为客户端标识的数据使用cookie 设置session保存客户端标识的数据&#xff0c;只使用cookie 说明…

OAuth与Spring Security

摘自Wikipedia&#xff1a; OAuth &#xff08; 开放式身份验证 &#xff09;是一种开放式身份验证标准。 它允许用户与其他站点共享存储在一个站点上的私有资源&#xff08;例如照片&#xff0c;视频&#xff0c;联系人列表&#xff09;&#xff0c;而不必发出其凭据&#xff…

flex java 开发环境搭建_Flex+JAVA+BlazeDS开发环境配置(Java工程和Flex工程独立)

FlexJAVABlazeDS开发环境配置(Java工程和Flex工程独立)2019年12月07日阅读数&#xff1a;7这篇文章主要向大家介绍FlexJAVABlazeDS开发环境配置(Java工程和Flex工程独立),主要内容包括基础应用、实用技巧、原理机制等方面&#xff0c;希望对大家有所帮助。[url]http://blog.csd…

1251 括号(递归小练)

1251 括号 时间限制: 1 s空间限制: 128000 KB题目等级 : 黄金 Gold题目描述 Description计算乘法时&#xff0c;我们可以添加括号&#xff0c;来改变相乘的顺序&#xff0c;比如计算              X1, X2, X3, X4, …, XN的积&#xff0c;可以 (X1(X2(X3(X4(...(XN-1…

zabbix_agentd.conf配置文件详解

Aliaskey的别名&#xff0c;例如 Aliasttlsa.userid:vfs.file.regexp[/etc/passwd,^ttlsa:.:([0-9]),,,,\1]&#xff0c; 或者ttlsa的用户ID。你可以使用key&#xff1a;vfs.file.regexp[/etc/passwd,^ttlsa:.: ([0-9]),,,,\1]&#xff0c;也可以使用ttlsa.userid。备注: 别名不…

在运行时修补Java

本文将重点介绍如何解决与第三方库相关的问题 不能被规避 难以排除/绕过/替换 只需不提供错误修正 在这种情况下&#xff0c;解决问题仍然是一项艰巨的任务。 作为这种情况的诱因&#xff0c;请考虑对“哈希索引”数据结构的攻击&#xff0c;例如java.util.Hashtable和java…

php return直接输出,PHP中return用法详细解读

原标题&#xff1a;PHP中return用法详细解读在大部分编程语言中&#xff0c;return关键字可以将函数的执行结果返回&#xff0c;PHP中return的用法也大同小异&#xff0c;对初学者来说&#xff0c;掌握PHP中return的用法也是学习PHP的一个开始。首先&#xff0c;它的意思就是返…

并行执行,没用到过,写到这里免得搞忘

/// <summary>/// /// </summary>class Program{static void Main(string[] args){simultaneous();Console.ReadKey();}static void simultaneous(){//尽可能并行执行提供的每个操作Parallel.Invoke(() > ComplexMethod("1"),() > ComplexMethod(&…

UIViewController生命周期

UIViewController生命周期 UIViewController生命周期 posted on 2016-04-07 20:15 相而勿绝 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/fmdxiangdui/p/5365249.html