linux中常用的头文件

#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

 

头文件目录中总共有32个.h头文件。其中主目录下有13个,asm子目录中有4个,linux子目录中有10个,sys子目录中有5个。这些头文件各自的功能如下,具体的作用和所包含的信息请参见第14章。

 

<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()原型。

 

(1)体系结构相关头文件子目录include/asm

 

这些头文件主要定义了一些与CPU体系结构密切相关的数据结构、宏函数和变量。共4个文件。

 

<asm/io.h>:I/O头文件,以宏的嵌入汇编程序形式定义对I/O端口操作的函数。

<asm/memory.h>:内存拷贝头文件,含有memcpy()嵌入式汇编宏函数。

<asm/segment.h>:段操作头文件,定义了有关段寄存器操作的嵌入式汇编函数。

<asm/system.h>:系统头文件,定义了设置或修改描述符/中断门等的嵌入式汇编宏。

 

(2)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,串行通信方面的参数、常数。

 

(3)系统专用数据结构子目录include/sys

 

<sys/stat.h>: 文件状态头文件,含有文件或文件系统状态结构stat{}和常量。

<sys/times.h>:定义了进程中运行时间结构tms以及times()函数原型。

<sys/types.h>:类型头文件,定义了基本的系统数据类型。

<sys/utsname.h>:系统名称结构头文件。

<sys/wait.h>:等待调用头文件,定义系统调用wait()和waitpid()及相关常数符号。

转载于:https://www.cnblogs.com/yunlong3727/archive/2013/05/13/3076032.html

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

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

相关文章

java的文本框如何回车键触发按钮_java回车触发按钮的代码

使用的时候&#xff0c;只要将SwingUtils .enterPressesWhenFocused(JButton)这样就可以实现回车时候&#xff0c;触发按钮。另外文本输入框回车触发事件则是&#xff1a;SwingUtils .enterPressesWhenFocused(JTextField textField,ActionListener actionListener) 。其中acti…

Typescript Interface 覆盖继承的接口定义

type Merge<M, N> Omit<M, Extract<keyof M, keyof N>> & N;使用方式 interface A {name: string;color?: string; } type B Merge<A, {name: string | number;favorite?: boolean; }>;参考地址

JBoss Fuse –一些鲜为人知的技巧

TL; DR 将Java静态调用公开为Karaf Shell本机命令 在部署时覆盖OSGi标头 在使用OSGi片段部署时间后覆盖OSGi标头 将Java静态调用公开为Karaf Shell本机命令 作为必须与支持人员和客户进行协作的软件工程师的一部分&#xff0c;我经常发现自己需要从无法访问的系统中提取其他…

cocos2d-x学习笔记之图片分辨率适配

从wiki里面看到&#xff0c;新的版本是去掉了enabelRetinaDisplay&#xff0c;因为要兼容iosandroid&#xff0c;其他平台是否也是如此&#xff0c;未知&#xff5e; 测试代码 std::vector<std::string> resDirOrders; resDirOrders.push_back("testImage2"…

vue 外部方法调用内部_vue函数内部调用外部函数,报错外部函数不是函数

zeroFill (num,len,radix) {let str num.toString(radix || 10);while (str.length < len) {str 0 str;}return str;},initMap() {console.log(this.zeroFill(50, 8, 16))//底图图层数据源var googleDXSource new XYZ({tileUrlFunction: function (coor) {console.log(c…

electron+react 用户自定义安装路径

使用electron-builder打包electron项目&#xff0c;其中Windows提供了NSIS来自定义安装程序。 在主进程的package.json文件中添加一些配置 "scripts":{},"build": {"directories": {"output": "release"},"nsis":…

模型微调入门介绍一

备注&#xff1a;模型微调系列的博客部分内容来源于极客时间大模型微调训练营素材&#xff0c;撰写模型微调一系列博客&#xff0c;主要是期望把训练营的内容内化成自己的知识&#xff0c;我自己写的这一系列博客除了采纳部分训练营的内容外&#xff0c;还会扩展细化某些具体细…

JMH:如何设置和运行JMH基准

健康警告&#xff01; 这篇文章描述了如何设置和运行简单的JMH基准测试。 众所周知&#xff0c;微基准测试很难正确设置&#xff0c;即使您确实正确设置了&#xff08;通过使用JMH之类的工具&#xff09;&#xff0c;它们仍然会产生误导。 仅仅因为您的代码在极端孤立的人为情况…

npp夜光数据介绍 viirs_科研成果快报第177期:中国地区长时序AVHRR气溶胶数据的主要问题: 气溶胶反演频次与重污染天气...

中国地区长时序AVHRR气溶胶数据的主要问题&#xff1a;气溶胶反演频次与重污染天气A critical view of long-term AVHRR aerosol data record in China: Retrieval frequency and heavy pollution成果信息Minghui Tao, Rong Li, Lili Wang et al. (2020)A critical view of lon…

使用Eclipse创建一个Android程序方法

要编写Android程序&#xff0c;需要安装JDK、Eclipse和Android SDK。 Android SDK的安装路径不要在program file或program file(x86)下&#xff0c;否则在debug时会碰很奇怪的问题。最好直接放在C:\Android下。&#xff08;如果非要放在Program files下也可以&#xff0c;在ecl…

ahooks useVirtualList 滚动条抖动或者数据抖动

原因 页面内容高度发生变化引起滚动条跳动的问题。浏览器会自动触发onscroll事件&#xff0c;调整滚动条的位置&#xff0c;让滚动条不乱跳动 ; 懒加载的时候由于不断更新列表项内部的高度&#xff0c;因此就会使浏览器自动触发滚动事件&#xff0c;而滚动事件又触发懒加载的更…

如何使用Hibernate批处理DELETE语句

介绍 在我以前的文章中 &#xff0c;我解释了批处理INSERT和UPDATE语句所需的Hibernate配置。 这篇文章将继续本主题的DELETE语句批处理。 领域模型实体 我们将从以下实体模型开始&#xff1a; Post实体与Comment具有一对多关联&#xff0c;并且与PostDetails实体具有一对一…

蓝点linux_新闻速读 gt; Windows 10 的 Linux 内核将像驱动程序一样由微软更新服务进行更新 | Linux 中国...

本文字数&#xff1a;3252&#xff0c;阅读时长大约&#xff1a;4 分钟导读&#xff1a;• Ubuntu 发行商 Canonical 将参加微软欧洲虚拟开源峰会 • 树莓派支持 Vulkan 最新进展&#xff1a;通过 70000 项测试 • 谷歌浏览器开始隐藏 URL 详细路径&#xff0c;未来地址栏将只显…

struts2-通配符和动态方法调用

通配符举例--BookAction 1 public class BookAction extends ActionSupport {2 3 public String execute() throws Exception {4 System.out.println("BookAction ********** execute()");5 return null;6 }7 /*8 * 显示图书添加页…

JavaFX技巧18:路径剪切

我最近注意到&#xff0c;我致力于ControlsFX项目的PopOver控件无法正确剪切其内容。 当我为FlexCalendarFX框架开发手风琴弹出窗口时&#xff0c;这一点变得显而易见。 每当最后一个标题窗格扩展时&#xff0c;其底角不再是圆角而是正方形。 在将红色矩形作为内容放置到标题窗…

electron 微信扫码登录 ERR_PROXY_CONNECTION_FAILED

electron: Failed to load URL with error: ERR_PROXY_CONNECTION_FAILED 解决 电脑代理问题;电脑设置里面找到代理,关闭就好了

关于erlang的套接字编程

套接字编程即熟悉的Socket编程&#xff0c;根据传输层协议&#xff0c;可分为&#xff1a;UDP协议和TCP协议.下面写一个简单的例子&#xff0c;再重新认识下它&#xff1a; 1.在同一主机节点下启动两个Erlang节点. a).在第一个Erlang节点下&#xff0c;打开端口为1234的UDP套接…

kotlin 添加第一个 集合_Flutter开发必学Dart语法篇之集合操作符函数与源码分析...

简述:在上一篇文章中&#xff0c;我们全面地分析了常用集合的使用以及集合部分源码的分析。那么这一节讲点更实用的内容&#xff0c;绝对可以提高你的Flutter开发效率的函数&#xff0c;那就是集合中常用的操作符函数。这次说的内容的比较简单就是怎么用&#xff0c;以及源码内…

在Java中确定文件类型

以编程方式确定文件的类型可能非常棘手&#xff0c;并且已经提出并实现了许多基于内容的文件标识方法。 Java中有几种可用于检测文件类型的实现&#xff0c;其中大多数很大程度上或完全基于文件的扩展名。 这篇文章介绍了Java中最常见的文件类型检测实现。 本文介绍了几种在Ja…

滚动条样式设置

{scrollbar-arrow-color: red; /*上下按钮上三角箭头的颜色*/scrollbar-face-color: #CBCBCB; /*滚动条凸出部分的颜色*/scrollbar-3dlight-color: blue; /*滚动条亮边的颜色*/scrollbar-highlight-color: #333; /*滚动条空白部分的颜色*/scrollbar-shadow-color: yellow; /*滚…