linux 下各个头文件的作用

linux 下各个头文件的作用
linux 下各个头文件的作用

linux 下各个头文件的作用

2.6.30.4的头文件的位置和2.6.25.8的不一样,除去内核源码下的include目录外,

在arch/arm/mach-s3c2410/和arch/arm/plat-s3c24xx/目录下都有include目录的。

#include /* printk() *///

#include /* kmalloc() *///

#include /* file_operations、

inode_operations、super_operations结构体*///

#include /* error codes */

#include /* size_t等各种系统typedef的数据类型 *///

#include /* O_ACCMODE *///

#include

/* COPY_TO_USER */#include

/*MODULE_LICENSE("GPL");内核认识的特定许可有,

"GPL"( 适用 GNU 通用公共许可的任何版本 ),

"GPL v2"( 只适用 GPL 版

本 2 ),

"GPL and additional rights",

"Dual BSD/GPL",

"Dual MPL/GPL",

"Proprietary".

除非你的模块明确标识是在内核认识的一个自由许可下,

否则就假定它是私有的,

内核在模块加载时被"弄污浊"了.

象我们在第 1 章"许可条款"中提到的,

内核开发者不会热心帮助在加载了私有模块后遇到问题的用户.

MODULE_AUTHOR ( 声明谁编写了模

块 ),

MODULE_DESCRIPION( 一个人可读的关于模块做什么的声明 ),

MODULE_VERSION ( 一个代码修订版本号; 看 的注释以便知道创建版本字串使用的惯例),

MODULE_ALIAS ( 模块为人所知的另一个名子 ),

MODULE_DEVICE_TABLE ( 来告知用户空间, 模块支持那些设

备 ).*/

#include

/* #define module_init(x) __initcall(x);

driver initialization entry point

#define module_exit(x) __exitcall(x); driver exit entry point

*/

#include

/* extern int misc_register(struct miscdevice * misc); 注册miscdevice结构体成员变量设备

extern int misc_deregister(struct miscdevice *misc); 注销miscdevice结构体成员变量设备

*/

#include

/* void cdev_init(struct cdev *, const struct file_operations *);

struct cdev *cdev_alloc(void);

void cdev_put(struct cdev *p);

int cdev_add(struct cdev *, dev_t, unsigned);

void cdev_del(struct cdev *);

void cd_forget(struct inode *); */

#include /* 和GPIO口操作相关的函数定义的头文件

对应的源文件在/linux-2.6.32.2/arch/arm/plat-s3c24xx/gpio.c

void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function);

unsigned int s3c2410_gpio_getcfg(unsigned int pin);

void s3c2410_gpio_pullup(unsigned int pin, unsigned int to);

int s3c2410_gpio_getpull(unsigned int pin);

void s3c2410_gpio_setpin(unsigned int pin, unsigned int to);

unsigned int s3c2410_gpio_getpin(unsigned int pin);

unsigned int s3c2410_modify_misccr(unsigned int clear, unsigned int c hange);

int s3c2410_gpio_getirq(unsigned int pin);

int s3c2410_gpio_irq2pin(unsigned int irq);*/

#include /* 和GPIO口相关的一些宏定义(在arch/arm/mach-s3c2410/mach) */

#include /* */

#include

/* typedef irqreturn_t (*irq_handler_t)(int, void *);

extern void free_irq(unsigned int, void *);extern void disable_irq(un signed int irq);

extern void enable_irq(unsigned int irq);等和中断相关函数的声明 */

#include /* wake_up_interruptible 唤醒 q 指定的注册在等待队列上的进程。该函数不能直接的立即唤醒进程,而是由调度程序转换上下文,调整为可运行状态。

static DECLARE_WAIT_QUEUE_HEAD(button_waitq);声明等待队列为全局变量

wait_event_interruptible 该函数修改task的状态为TASK_INTERRUPTIBLE,意味着改进程将不会继续运行直到被唤醒,然后被添加到等待队列wq中*/

#include /* poll_wait */

#include /* copy_to_user和

copy_from_user */

#include

/* __raw_readl __raw_writel*/#include

/* struct clk *clk_get(struct device *dev, const char *id);

unsigned long clk_get_rate(struct clk *clk); */

#include /* struct clk;结构体的定义(在arch/arm/plat-s3c/plat/include/clock.arch中,对应的源文件在

/arm/plat-s3c/clock.c)*/

#include //包含了device、class 、

device_driver等结构的定义

#include /* 和bank相关的寄存器的宏定义 */

#include /* Linux内核中64位除法函数do_div */

#include /* struct fb_info 结构体的定

义 */

#include /* struct s3c2410fb_display(在arch/arm/mach-s3c2410/include/mach/fb.h) */

Linux系统目录结构-作用

linux系统目录结构 1./ /目录也称为根目录,位于linux文件系统目录结构的顶层。在很多系统中的唯一分区。如果还有其他分区,必须挂在到/目录下某个位置。整个目录结构呈树型结构,因此也称为目录树。 2.bin bin目录为命令文件目录,也称为二进制目录。包含了供系统管理员及普通用户使用的重要的linux命令和二进制(可执行)文件,包含shell解释器等,该目录不能包含子目录。3.boot boot目录,该目录中存放系统的内核文件和引导装载程序文件。例如:RHEL5的内核文件:vmlinuz-2.6.18-8.el5xen。 4.dev dev目录,也称设备(device)文件目录,存放连接到计算机上的设备(终端、磁盘驱动器、光驱及网卡等)的对应文件,包括字符设备和块设备等。 5.etc etc目录存放系统的大部分配置文件和子目录。X Window系统的文件保存在/etc/X11子目录中,与网络有关的配置文件保存在/etc/sysconfig子目录中。该目录下的文件由系统管理员来使用,普通用户对大部分文件有只读权限。 6.home home目录中包含系统上各个用户的主目录,子目录名称即为各用户名。 7.lib lib目录下存放了各种编程语言库。典型的linux系统包含了C、C++和FORTRAN语言的库文件。用好这些语言开发的应用程序可以是使用这些库文件。这就使软件开发者能够利用那些预先写好并测试过的函数。/lib目录下的库映像文件可以用来启动系统并执行一些命令。目录/lib/modules包含了可加载的内核模块。/lib目录存放了所有重要的库文件,其他的库文件爱你则大部分存放在/usr/lib目录下。 8.lost+found

linux 下各个头文件的作用

linux 下各个头文件的作用 2.6.30.4的头文件的位置和2.6.25.8的不一样,除去内核源码下的include目录外, 在arch/arm/mach-s3c2410/和arch/arm/plat-s3c24xx/目录下都有include目录的。 #include /* printk() */// #include /* kmalloc() */// #include /* file_operations、 inode_operations、super_operations结构体*/// #include /* error codes */ #include /* size_t等各种系统typedef的数据类型 */// #include /* O_ACCMODE */// #include /* COPY_TO_USER */#include /*MODULE_LICENSE("GPL");内核认识的特定许可有, "GPL"( 适用 GNU 通用公共许可的任何版本 ), "GPL v2"( 只适用 GPL 版 本 2 ), "GPL and additional rights", "Dual BSD/GPL", "Dual MPL/GPL", "Proprietary". 除非你的模块明确标识是在内核认识的一个自由许可下, 否则就假定它是私有的, 内核在模块加载时被"弄污浊"了. 象我们在第 1 章"许可条款"中提到的, 内核开发者不会热心帮助在加载了私有模块后遇到问题的用户. MODULE_AUTHOR ( 声明谁编写了模

Linux文件系统各目录功能

/ : 根目录 /bin/ : 执行文件目录存放所有用户必要且可共同使用的执行文件。 /boot/ : 所有有关本地启动的信息和所需文件。 /boot/grub/ : 启动管理程序所需的文件及程序。 /dev/ : 设备文件目录,存放所有系统中device(设备)的相关信息。 /dev/block/ : 块设备 /dev/bus/ : 硬件设备相关文件,所有使用总线访问的存储器,例如USB。 /dev/char/ : 字符设备 /dev/disk/ : 硬件设备相关文件,存放所有连接到这台主机上的硬盘信息,可按不同的分类方式供用户查询。 /dev/input/ : 硬件设备相关文件,存放输入设备,例如鼠标,键盘,手写板等。 /dev/mapper/ : 硬件设备相关文件,存放使用LVM后对系统产生的虚拟磁盘同硬盘的对应表及Device Mapper控制文件。 /dev/net/ : 硬件设备相关文件,存放建立VPN的“tunnel”所使用的交互管道文件。 /dev/pts/ : 硬件设备相关文件,存放和Terminal相关的设备文件。 /dev/shm/ : 硬件设备相关文件,用来分享内存的API。 /dev/.udev/ : 硬件设备相关文件,记录启动时经过udev整理出来后,成功(变为记录之一)或是出现问题的文件。 /etc/ : 系统配置直接相关文件,经常使用及和系统相关度高的文件目录,服务器目录、系统目录、安全性目录、X Window目录及其他软件安装目录。 /etc/BackupPC/ : 专门针对操作系统提供备份服务的软件目录。 /etc/boa/ : 小巧的网页服务器程序boa的目录。 /etc/cups/ : Linux下打印机服务器目录。 /etc/dnsmasq.d/ : “娇小型”DNS服务器dnsmasq的软件目录。 /etc/exim/ : Mail服务器端以MTA为主要服务的其中一种软件,用来协助内部或外部的用户收发Email。 /etc/httpd/ : Linux下最常用到的一个服务器目录,也就是网页服务器(默认为apache)的主要配置所在。 /etc/lighteepd/ : 轻巧型的网页服务器软件配置目录。 /etc/mail/ : 默认Mail Server组件sendmail的主要配置及反垃圾邮件软件SpamAssassin组件配置目录。 /etc/news/ : Linux News Server的主要配置目录。 /etc/ntp/ : Network Time Protocol服务主要的配置目录。 /etc/openldap/ : LDAP(Lightweight Directory Access Protocol)的配置目录。 /etc/postfix/ : Postfix组件所提供的主要配置文件目录。 /etc/pulse/ : PulseAudio的主配置目录。 /etc/samba/ : Linux下文件共享服务samba的主要配置文件。 /etc/smrsh/ : Sendmail为了限制用户可使用的命令设计的程序Sendmail配置目录。 /etc/snmp/ : SNMP(Simple Network Management Protocol)服务的主配置文件。 /etc/squid/ : 代理服务器Squid的配置文件目录。

Linux各目录及每个目录的详细介绍

Linux各目录及每个目录的详细介绍 /bin二进制可执行命令 /dev设备特殊文件 /etc/rc.d启动的配置文件和脚本 /home用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示 /lib标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件 /sbin超级管理命令,这里存放的是系统管理员使用的管理程序 /tmp公共的临时文件存储点 /root系统管理员的主目录 /mnt系统提供这个目录是让用户临时挂载其他的文件系统 /lost+found这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows 下叫什么.chk)就在这里 /proc虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。 /var某些大文件的溢出区,比方说各种服务的日志文件 /usr最庞大的目录,要用到的应用程序和文件几乎都在这个目录,其中包含: /usr/x11R6存放xwindow的目录 /usr/bin众多的应用程序 /usr/sbin超级用户的一些管理程序 /usr/doclinux文档 /usr/includelinux下开发和编译应用程序所需要的头文件 /usr/lib常用的动态链接库和软件包的配置文件 /usr/man帮助文档 /usr/src源代码,linux内核的源代码就放在/usr/src/linux里 /usr/local/bin本地增加的命令 /usr/local/lib本地增加的库根文件系统 通常情况下,根文件系统所占空间一般应该比较小,因为其中的绝大部分文件都不需要经常改动,而且包括严格的文件和一个小的不经常改变的文件系统不容易损坏。

LINUX内核源文件介绍以及头文件介绍

LINUX 内核源文件介绍以及头文件介绍 LINUX 内核源文件介绍以及头文件介绍.txt两人之间的感情就像织毛衣,建立的时候一针一线,小心而漫长,拆除的时候只要轻轻一拉。。。。*******************LINUX 内核(0.11)源文件介绍****************** 1、内核源文件放置目录: | |————boot 系统引导汇编程序目录 | |————fs 文件系统目录 | |————include 头文件目录 | |————init 内核初始化程序目录 | |————kernel 内存进程调度、信号处理、系统调用等程序的目录 | |————lib 内核库函数目录 | |————mm 内存管理程序目录 | |————tools 生成内核Image文件的工具程序目录 | |————Makefile文件 | 2、引导启动程序目录boot 包含3个汇编语言文件,是内核源文件中最先被编译的程序。 功能:当计算机家电时引导内核启动,将内核代码加载到内存中,并完成系统初始化工作。 boot | |————bootsect.s 磁盘引导块程序,编译后会驻留在磁盘的第一个扇区中| |————setup.s 读取机器的硬件配置参数,并把内核模式system移动到适当的内存位置处 |

|————head.s 会被编译连接在system模块的最前部分,主要进行硬件设备的探测配置和内存管理页面的配置工作 | 3、文件系统目录fs 包含17个C语言程序 fs | |——buffer.c 管理高速缓冲区 | |——file_table.c 在0.11仅定义了一个文件句柄(描述符)结构数组 | |——ioctl.c 将引用kernel/chr_dev/tty.c中的函数,实现字符设备的IO 控制功能 | |——exec.c 主要包含一个执行程序函数do_execve() | |——fcntl.c 实现文件I/O控制的系统调用函数 | |——read_write.c 实现文件读/写和定位的三个系统调用函数 | |——stat.c 实现了两个获取文件状态的系统调用函数 | |——open.c 主要包含实现修改文件属性和创建与关闭文件的系统调用函数 | |——char_dev.c 主要包含字符设备读写函数rw_char() | |——pipe.c 包含管道读写函数和创建管道的系统调用函数 | |——file_dev.c 包含基于i节点和描述符结构的文件读写函数。 | |——namei.c 主要包括文件系统中目录名和文件名的操作函数和系统调用函数 | |——block_dev.c 包含块数据读和写函数 | |——inode.c 包含针对文件系统i节点操作的函数 | |——truncate.c 用于在删除文件时释放文件所占用的设备数据空间 | |——bitmap.c 用于处理文件系统中i节点和逻辑数据块的位图 |

linux下各目录作用和功能

/bin:是binary的缩写,这个目录是对Unix系统习惯的沿袭,存放着使用者最经常使用的命令。如:ls,cp,cat等。 /boot:这里存放的是启动Linux时使用的一些核心文档。 /dev:是device的缩写.这个目录下是任何Linux的外部设备,其功能类似Dos下的.sys 和Win下的.vxd。在Linux中设备和文档是用同种方法访问的。例如:/dev/hda代表第一个物理IDE硬盘。 /etc:这个目录用来存放任何的系统管理所需要的配置文档和子目录。 /home:用户主目录,比如说有个用户叫sina,那他的主目录就是/home/sina,说到这里打个岔.您现在应该明白,在我们访问一些个人网页。如:https://www.360docs.net/doc/053056374.html,/sina的时候,sina就是表示访问 https://www.360docs.net/doc/053056374.html, 站点中的用户sina的用户主目录.假如这个网站的操作系统是Linux,那就是表示/home/sina。 /lib:这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的.dll文档。几乎任何的应用程式都需要用到这些共享库。 /lost+found:这个目录平时是空的,当系统不正常关机后,这里就成了一些无家可归的文档的避难所。对了,有点类似于Dos下的.chk文档。 /mnt:这个目录是空的,系统提供这个目录是让用户临时挂载别的文档系统。 /proc:这个目录是个虚拟的目录,他是系统内存的映射,我们能够通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里啊。 /root:系统管理员,也叫终极权限者的用户主目录。当然系统的拥有者,总要有些特权啊。/sbin:s就是Super User的意思,也就是说这里存放的是一些系统管理员使用的系统管理程式。 /tmp:这个目录不用说,一定是用来存放一些临时文档的地方了。 /usr:这是个最庞大的目录,我们要用到的很多应用程式和文档几乎都存放在这个目录了。具体来说: /usr/X11R6:存放X-Windows的目录。 /usr/bin:存放着许多应用程式. /usr/sbin:给终极用户使用的一些管理程式就放在这. /usr/doc:这就是Linux文档的大本营. /usr/include:Linux下研发和编译应用程式需要的头文档在这里找. /usr/lib:存放一些常用的动态链接共享库和静态档案库. /usr/local:这是提供给一般用户的/usr目录,在这安装软件最适合. /usr/man:是帮助文档目录. /usr/src:Linux开放的源代码,就存在这个目录,爱好者们别放过哦! /var:这个目录中存放着那些不断在扩充着的东西,为了保持/usr的相对稳定,那些经常被修改的目录能够放在这个目录下,实际上许多系统管理员都是这样干的.顺便说一下,系统的日志文档就在/var/log目录中. /usr/local/bin 本地增加的命令 /usr/local/lib 本地增加的库根文件系统 通常情况下,根文件系统所占空间一般应该比较小,因为其中的绝大部分文件都不需要, 经常改动,而且包括严格的文件和一个小的不经常改变的文件系统不容易损坏。 除了可能的一个叫/ v m l i n u z标准的系统引导映像之外,根目录一般不含任何文件。所有其他文件在根文件系统的子目录中。

linux下C编程详解

1)Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助 ---------------------------------------------------------------------------- ---- 1.源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们以一个实例来说明如何使用gcc编译器. 假设我们有下面一个非常简单的源程序(hello.c): int main(int argc,char **argv) { printf("Hello Linux "); } 要编译这个程序,我们只要在命令行下执行: gcc -o hello hello.c gcc 编译器就会为我们生成一个hello的可执行文件.执行./hello就可以看到程序的输出结果了.命令行中gcc表示我们是用gcc来编译我们的源程序,-o 选项表示我们要求编译器给我们输出的可执行文件名为hello 而hello.c是我们的源程序文件. gcc编译器有许多选项,一般来说我们只要知道其中的几个就够了. -o选项我们已经知道了,表示我们要求输出的可执行文件名. -c选项表示我们只要求编译器输出目标代码,而不必要输出可执行文件. -g选项表示我们要求编译器在编译的时候提供我们以后对程序进行调试的信息. 知道了这三个选项,我们就可以编译我们自己所写的简单的源程序了,如果你想要知道更多的选项,可以查看gcc的帮助文档,那里有着许多对其它选项的详细说明. 2.Makefile的编写 假设我们有下面这样的一个程序,源代码如下: /* main.c */ #include "mytool1.h" #include "mytool2.h" int main(int argc,char **argv) { mytool1_print("hello"); mytool2_print("hello"); } /* mytool1.h */ #ifndef _MYTOOL_1_H #define _MYTOOL_1_H

linux根目录下各文件名的含义

Linux根目录”/“下各个系统文件夹的含义和用途 /boot 该目录默认下存放的是Linux的启动文件和内核。 /initrd 它的英文含义是boot loader initialized RAM disk,就是由boot loader初始化的内存盘。在linux 内核启动前,boot loader会将存储介质(一般是硬盘)中的initrd文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的initrd文件系统。 /bin 该目录中存放Linux的常用命令。 /sbin 该目录用来存放系统管理员使用的管理程序。 /var 该目录存放那些经常被修改的文件,包括各种日志、数据文件。 /etc 该目录存放系统管理时要用到的各种配置文件和子目录,例如网络配置文件、文件系统、X系统配置文件、设备配置信息、设置用户信息等。 /dev 该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,访问这些外部设备与访问一个文件或一个目录没有区别。 /mnt 临时将别的文件系统挂在该目录下。 /root 如果你是以超级用户的身份登录的,这个就是超级用户的主目录。 /home 如果建立一个名为“xx”的用户,那么在/home目录下就有一个对应的“/home/xx”路径,用来存放该用户的主目录。 /usr 用户的应用程序和文件几乎都存放在该目录下。 /lib 该目录用来存放系统动态链接共享库,几乎所有的应用程序都会用到该目录下的共享库。 /opt 第三方软件在安装时默认会找这个目录,所以你没有安装此类软件时它是空的,但如果你一旦把它删除了,以后在安装此类软件时就有可能碰到麻烦。

linux下socket编程常用头文件

linux下socket编程常用头文件 sys/types.h:数据类型定义 sys/socket.h:提供socket函数及数据结构 netinet/in.h:定义数据结构sockaddr_in arpa/inet.h:提供IP地址转换函数 netdb.h:提供设置及获取域名的函数 sys/ioctl.h:提供对I/O控制的函数 sys/poll.h:提供socket等待测试机制的函数 其他在网络程序中常见的头文件 unistd.h:提供通用的文件、目录、程序及进程操作的函数 errno.h:提供错误号errno的定义,用于错误处理 fcntl.h:提供对文件控制的函数 time.h:提供有关时间的函数 crypt.h:提供使用DES加密算法的加密函数 pwd.h:提供对/etc/passwd文件访问的函数 shadow.h:提供对/etc/shadow文件访问的函数 pthread.h:提供多线程操作的函数 signal.h:提供对信号操作的函数 sys/wait.h、sys/ipc.h、sys/shm.h:提供进程等待、进程间通讯(IPC)及共享内存的函数 建议:在编写网络程序时,可以直接使用下面这段头文件代码 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include

Linux环境常用库简介

Linux环境常用库简介 一个程序的开发离不开许多库函数的支持,可是库如此之多,有开源免费的也有收费的。很希望熟悉编程的前辈把自己的经验整理下,常用的库都包含哪些功能。下文是在网上找的一个类似的资料。期待更多更全的内容。 --------------------------------------------------------------------------------------------------- 看到有时候大家在写代码的时候不知道应该加入何种库,所以特地总结了一下.供大家参考. 库头文件描述 libGL.so 实现到OpenGL API的接口 libGLU.so 实现到OpenGL API的接口 libImlib.so 实现一套图像处理例程 libc.so 实现标准C库(不需要头文件) libcom_err.so 实现出错处理例程的集合 libcrypt.so 实现加密函数的集合 libcurses.so 光标字符模式的屏幕操作库 libdb.so 创建和操作数据库的库 libdl.so 让程序在运行时加载和使用库代码而无须在编译时链接库 libform.so 实现字符模式应用程序的窗体处理能力 libglib.so Glib库,提供了大多数程序需要的大量基本工具函数,比如散列表等 libgthread.so 实现对Glib的线程支持 libgtk.so GIMP下的X库 libhistory.so 实现GNU readline(libreadline)包中的命令行历史机制 libjpeg.so 定义到JPEG库的接口,赋予应用程序使用JPEG图像文件的能力 libm.so 实现标准C数学库 libmenu.so 提供在字符模式屏幕上创建和使用菜单的例程 libncurses.so 使用ncurses文本模式屏幕控制系统的应用程序的基础库 libnss.so 用于名字服务切换工具的功能,提供了名字数据库比如DNS接口

linux文件系统和各个文件夹的作用

Linux 文件系统 Linux 最早的文件系统是Minix,但是专门为Linux 设计的文件系统——扩展文件系统第二版或EXT2被设计出来并添加到Linux中,这对Linux产生了重大影响。EXT2文件系统功能强大、易扩充、性能上进行了全面优化,也是现在所有Linux发布和安装的标准文件系统类型。 磁盘组织 ext2系统中,所有元数据结构的大小均基于“块”,而不是“扇区”。块的大小随文件系统的大小而有所不同。而一定数量的块又组成一个块组,每个块组的起始部分有多种多样的描述该块组各种属性的元数据结构。ext2系统中对各个结构的定义都包含在原始码的include/linux/ext2_fs.h文件中。 1、超级块 每个ext2文件系统都必须包含一个超级块,其中存储了该文件系统的大量基本信息,包括块的大小、每块组中包含的块数等。同时,系统会对超级块进行备份,备份被存放在块组的第一个块中。超级块的起始位置为其所在分区的第1024个字节,占用1KB的空间。2、块组描述符 一个块组描述符用以描述一个块组的属性。块组描述符组由若干块组描述符组成,描述了文件系统中所有块组的属性,存放于超级块所在块的下一个块中。 3、块位图和inode位图 块位图和inode位图的每一位分别指出块组中对应的那个块或inode是否被使用。 4、inode表 inode表用于跟踪定位每个文件,包括位置、大小等(但不包括文件名),一个块组只有一个inode表。 5、数据块 数据块中存放文件的内容,包括目录表、扩展属性、符号链接等。 目录结构 在ext2文件系统中,目录是作为文件存储的。根目录总是在inode表的第二项,而其子目录则在根目录文件的内容中定义。目录项在include/linux/ext2_fs.h文件中定义 文件扩展属性 文件的属性大多数是位于该文件的inode结构中的标准属性,也还包含其他一些扩展属性(于系统中所有的inode相关,通常用于增加额外的功能),在fs/ext2/xattr.h文件中定义。

Linux中常用头文件的作用

Linux中常用头文件的作用 1、Linux中一些头文件的作用: :ANSI C。提供断言,assert(表达式) :GCC。GTK,GNOME的基础库,提供很多有用的函数,如有数据结构操作函数。使用glib只需要包含 :GCC。文件夹操作函数。struct dirent,struct DIR,opendir(),closedir(),readdir(),readdir64()等 :ANSI C。字符测试函数。isdigit(),islower()等 :ANSI C。查看错误代码errno是调试程序的一个重要方法。当linuc C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决了不少原本看来莫名其妙的问题。比较麻烦的是每次都要去linux源代码里面查找错误代码的含义,现在把它贴出来,以后需要查时就来这里看了。来自linux 2.4.20-18的内核代码中的/usr/include/asm/errno.h :处理命令行参数。getopt() 2、 ------------------------- linux常用头文件如下: POSIX标准定义的头文件 目录项 文件控制 文件名匹配类型 路径名模式匹配类型 组文件 网络数据库操作 口令文件 正则表达式 TAR归档值 终端I/O 符号常量 文件时间 字符扩展类型 ------------------------- INTERNET定义 套接字本地接口 INTERNET地址族 传输控制协议定义 ------------------------- 内存管理声明 Select函数 套接字借口 文件状态 进程时间

Linux文件夹的作用介绍+ROS系统介绍

一 Linux文件夹的作用介绍

/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:/usr/x11r6 存放x window的目录 /usr/bin 众多的应用程序,集中了几乎所有用户命令,是系统的软件库。另有些命令在/bin 或/usr/local/bin 中。 /usr/sbin 超级用户的一些管理程序 /usr/doc linux文档 /usr/include linux下开发和编译应用程序所需要的头文件 /usr/lib 常用的动态链接库和软件包的配置文件,包含了程序或子系统的不变的数据文件,包括一些s i t e - w i d e配置文件。名字l i b来源于库(library); 编程的原始库也存在/usr/lib 里。当编译程序时,程序便会和其中的库进行连接。也有许多程序把配置文件存入其中。 /usr/man 帮助文档 /usr/src 源代码,linux内核的源代码就放在/usr/src/linux里 /usr/local 本地安装的软件和其他文件放在这里。 /usr/local/bin 本地增加的命令 /usr/local/lib 本地增加的库根文件系统通常情况下,根文件系统所占空间一般应该比较小,因为其中的绝大部分文件都不需要经常改动,而且包括严格的文件和一个小的不经常改变的文件系统不容易损坏。 除了可能的一个叫/ v m l i n u z标准的系统引导映像之外,根目录一般不含任何文件。所有其他文件在根文件系统的子目录中。

二 ROS介绍 一、历史 随着机器人领域的快速发展和复杂化,代码的复用性和模块化的需求原来越强烈,而已有的开源机器人系统又不能很好的适应需求。2010年Willow Garage 公司发布了开源机器人操作系统ROS(robot operating system),很快在机器人研究领域展开了学习和使用ROS的热潮。 ROS系统是起源于2007年斯坦福大学人工智能实验室的项目与机器人技术公司Willow Garage的个人机器人项目(Personal Robots Program)之间的合作,2008年之后就由Willow Garage来进行推动。已经有四年多的时间了。随着PR2那些不可思议的表现,譬如叠衣服,插插座,做早饭,ROS也得到越来越多的关注。Willow Garage公司也表示希望借助开源的力量使PR2变成“全能”机器人。 PR2价格高昂,2011年零售价高达40万美元。PR2现主要用于研究。PR2有两条手臂,每条手臂七个关节,手臂末端是一个可以张合的钳子。PR2依靠底部的四个轮子移动。在PR2的头部,胸部,肘部,钳子上安装有高分辨率摄像头,激光测距仪,惯性测量单元,触觉传感器等丰富的传感设备。在PR2的底部有两台8核的电脑作为机器人各硬件的控制和通讯中枢。两台电脑安装有Ubuntu和ROS。 二、设计目标 ROS为Robot Operating System(机器人操作系统)的简写,是一个面向机器人的开源元操作系统(open-source,meta-operating system)。它能够提供类似传统操作系统的诸多功能,如硬件抽象、底层设备控制、进程间消息传递和程序包管理等。此外,它还提供相关工具和库,用于获取、编译、编辑代码以

linux下各文件夹的结构说明及用途详细介绍解析

linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令。 /dev:设备特殊文件。 /etc:系统管理和配置文件。 /etc/rc.d:启动的配置文件和脚本。 /home:用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user 表示。 /lib:标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件。 /sbin:系统管理命令,这里存放的是系统管理员使用的管理程序。 /tmp:公用的临时文件存储点。 /root:系统管理员的主目录。 /mnt:系统提供这个目录是让用户临时挂载其他的文件系统。 /lost+found:这个目录平时是空的,系统非正常关机而留下“无家可归”的文件就在这里。 /proc:虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。 /var:某些大文件的溢出区,比方说各种服务的日志文件。 /usr:最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含: /usr/x11r6:存放x window的目录。 /usr/bin:众多的应用程序。

/usr/sbin:超级用户的一些管理程序。 /usr/doc:linux文档。 /usr/include:linux下开发和编译应用程序所需要的头文件。 /usr/lib:常用的动态链接库和软件包的配置文件。 /usr/man:帮助文档。 /usr/src:源代码,linux内核的源代码就放在/usr/src/linux 里。 /usr/local/bin:本地增加的命令。 /usr/local/lib:本地增加的库根文件系统。 通常情况下,根文件系统所占空间一般应该比较小,因为其中的绝大部分文件都不需要经常改动,而且包括严格的文件和一个小的不经常改变的文件系统不容易损坏。除了可能的一个叫/vmlinuz标准的系统引导映像之外,根目录一般不含任何文件。所有其他文件在根文件系统的子目录中。 1. /bin目录 /bin目录包含了引导启动所需的命令或普通用户可能用的命令(可能在引导启动后。这些命令都是二进制文件的可执行程序(bin是binary的简称,多是系统中重要的系统文件。 2. /sbin目录 /sbin目录类似/bin,也用于存储二进制文件。因为其中的大部分文件多是系统管理员使用的基本的系统程序,所以虽然普通用户必要且允许时可以使用,但一般不给普通用户使用。 3. /etc目录

linux驱动程序相关头文件简单介绍

LED驱动程序相关头文件简单介绍 分类:linux驱动开发2011-10-25 21:53 3455人阅读评论(1) 收藏举报cstructoutputmoduletypesfile [cpp]view plaincopy 在解读OK6410官方提供的LED驱动程序源码的过程中,发现很多没见过的宏和函数。例如S3C64XX_GPM(0)、 S3C64XX_GPM_OUTPUT(0)、__raw_writel(tmp,S3C64XX_GPMPUD)、__raw_writel(tmp,S3C64XX_GPMCON)等。而这些都包含在一些头文件里面。另一方面,我们自己动手编写LED的驱动程序也必须知道相关的头文件有哪些,对我们有哪些用。因此,我觉得在自己动手编写LED驱动程序之前对相关头文件进行简单的分析是非常有必要的。以下是我自己结合源码分析得出的一些结论,如有不正确的地方,希望能够得到指正。 OK6410官方提供的LED驱动程序源码: [cpp]view plaincopy

一、模块相关头文件: 1、#include :在编写任何模块都需要包含此头文件。该头文件自动包含了头文件,该头文件包含了宏MODULE_LICENSE("GPL")的定义。 2、#include :此头文件也是必须的,module_init()与module_exit()宏就是定义在它里面的。而且正是这个头文件定义了初始化函数加__init和推出函数加__exit的作用(static int __init s3c6410_leds_init(void)和static void __exit s3c6410_leds_exit(void)) 3、#include :此头文件也是常用头文件,如果需要使用printk函数,则必须包含此头文件。另外该头文件还包含了头文件,而这个头文件定义许多常用的数据类型,其中就包括设备号类型dev_t。如下: [cpp]view plaincopy

Linux下C和C++常用头文件

Linux下C和C++常用头文件 linux下编程常用头文件一览 ========================================= 验证程序断言 cpio归档值 字符类型 目录项 出错码 文件控制 浮点常数 信号 可变参数表 标准定义 标准I/O库 公用函数 字符串操作 tar归档值 终端I/O 时间和日期 用户限制 符号常数 文件时间 IPC 消息队列 信号量 共享存储 文件状态 进程时间 原系统数据类型 进程控制 C/C++头文件一览 ========================================= ========================================= =========== C、传统C++ #include //设定插入点 #include //字符处理 #include //定义错误码 #include //浮点数处理 #include //文件输入/输出 #include //参数化输入/输出#include //数据流输入/输出#include //定义各种数据类型最值常量#include //定义本地化函数 #include //定义数学函数 #include //定义输入/输出函数#include //定义杂项函数及内存分配函数 #include //字符串处理 #include //基于数组的输入/输出#include //定义关于时间的函数#include //宽字符处理及输入/输出#include //宽字符分类 ========================================= 标准C++(同上的不再注释) #include //STL 通用算法 #include //STL 位集容器 #include //字符处理 #include //定义错误码 #include //定义本地化函数 #include //定义数学函数 #include //复数类 #include //标准I/O库 #include //定义杂项函数及内存分配函数 #include //字符串处理 #include //定义关于时间的函数#include //STL 双端队列容器#include //异常处理类 #include //文件输入/输出 #include //STL 定义运算函数(代替运算符) #include #include //STL 线性列表容器#include //STL 映射容器 #include #include //基本输入/输出支持#include //输入/输出系统使用的前置声明 #include //数据流输入/输出#include //基本输入流 #include //基本输出流 #include //STL 队列容器 #include //STL 集合容器 #include //基于字符串的流#include //STL 堆栈容器 #include //标准异常类 #include //底层输入/输出支持#include //字符串类 #include //STL 通用模板类 #include //STL 动态数组容器

Linux内核头文件(linux headers)

更新 Linux 内核头文件(linux headers)
三 8th, 2013 2,474 views | 发表评论 | Trackback 一般来说,如果不是自己编译 kernel,那么更新头文件是比较容易的事情,在 Ubuntu/Fedora 等操作系 统上,可以直接安装相应的 linux-headers 软件包,下面就演示了在 Ubuntu 上安装内核头文件的过程。
View Code BASH
1 2 3 4 5 6 7 8 9 master@jay-intel:~/workspace/c-study$ uname -r 3.2.0-33-generic master@jay-intel:~/workspace/c-study$ apt-get install linux-headers-$(uname -r) Reading package lists... Done Building dependency tree Reading state information... Done linux-headers-3.2.0-33-generic is already the newest version. linux-headers-3.2.0-33-generic set to manually installed. 0 upgraded, 0 newly installed, 0 to remove and 331 not upgraded.
然而,如果自己编译 Linux kernel 并用它启动了系统,然后为了让本地程序基于当前 kernel 的 headers 来编译,就需要自己手动更新内核的头文件了。手动更新 linux headers 的步骤如下: 1. 在 Linux kernel 目录中,执行“make headers_install”命令,将 headers 安装到当前目录的 usr/include/下面。 2. 将以前的 headers 备份:包括/usr/include/目录下的 asm,asm-generic,linux 等目录。 3. 将刚才生成的当前编译内核目录下的 usr/include/中的 asm,asm-generic,linux 等目录复制到 /usr/include/目录下即可。 (当然如果还需要更新其他的目录的头文件,也都可以一起复制过去。) 操作演示如下:
View Code BASH
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [root@jay-linux kvm.git]# make headers_install CHK WRAP include/generated/uapi/linux/version.h arch/x86/include/generated/asm/clkdev.h
SYSHDR arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h SYSHDR arch/x86/syscalls/../include/generated/uapi/asm/unistd_64.h SYSHDR arch/x86/syscalls/../include/generated/uapi/asm/unistd_x32.h SYSTBL arch/x86/syscalls/../include/generated/asm/syscalls_32.h SYSHDR arch/x86/syscalls/../include/generated/asm/unistd_32_ia32.h SYSHDR arch/x86/syscalls/../include/generated/asm/unistd_64_x32.h SYSTBL arch/x86/syscalls/../include/generated/asm/syscalls_64.h HOSTCC arch/x86/tools/relocs HOSTCC scripts/unifdef INSTALL include/asm-generic (35 files) INSTALL include/drm (15 files) INSTALL include/linux/byteorder (2 files) INSTALL include/linux/caif (2 files) INSTALL include/linux/can (5 files)

相关文档
最新文档