linux驱动学习笔记(linux驱动头文件说明) include asm等目录下头文件功能_在linux中文件中的include表示什么(1)

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

#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>

#include <sys/ioctl.h>//IO控制

头文件主目录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>:段操作头文件,定义了有关段寄存器操作的嵌入式汇编函数。

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

db如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值