Linux
文章平均质量分 92
90阿呆
这个作者很懒,什么都没留下…
展开
-
sk_buff的操作函数
转自:http://blog.csdn.net/geekcome/article/details/7972647 本文分析基于Linux Kernel 3.2.1原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7972647更多请查看网络栈分析专栏http://blog.csdn.net/column/details转载 2015-02-05 20:22:53 · 502 阅读 · 0 评论 -
Linux中断(interrupt)子系统之五:软件中断(softIRQ)
转自:http://blog.csdn.net/droidphone/article/details/7518428软件中断(softIRQ)是内核提供的一种延迟执行机制,它完全由软件触发,虽然说是延迟机制,实际上,在大多数情况下,它与普通进程相比,能得到更快的响应时间。软中断也是其他一些内核机制的基础,比如tasklet,高分辨率timer等。/***************转载 2014-06-16 10:21:27 · 418 阅读 · 0 评论 -
总线设备驱动框架程序 及 struct device中消失的bus_id的取代方法
转自:http://blog.csdn.net/sjwangjinbao/article/details/6077225编写总线设备驱动程序的时候,发现2.6.33.2内核中的struct device已经没有bus_id的成员了,发现了const char *init_name成员。但是,这个成员是不能直接用来设置和读取设备名的。 对内核操作的方法为dev_name和de转载 2014-05-29 16:03:08 · 743 阅读 · 0 评论 -
Linux内核驱动之Sysfs文件系统
Linux2.6内核引入了sysfs 文件系统。sysfs 被看成是与proc同类别的文件系统。sysfs 把连接在系统上的设备和总线组织成分级的文件,使其从用户空间可以访问到。sysfs的挂载过程,她是这样被挂载的。mount -t sysfs sysfs /sys Sysfs 被加载在/sys/ 目录下,它的子目录包括:• Block:在系统中发现的每个块设备在该目录下对应转载 2014-05-29 16:00:18 · 925 阅读 · 0 评论 -
arm-linux-ld命令
我们对每个c或者汇编文件进行单独编译,但是不去连接,生成很多.o 的文件,这些.o文件首先是分散的,我们首先要考虑的如何组合起来;其次,这些.o文件存在相互调用的关系;再者,我们最后生成的bin文件是要在硬件中运行的,每一部分放在什么地址都要有仔细的说明。我觉得在写makefile的时候,最为重要的就是ld的理解,下面说说我的经验: 首先,要确定我们的程序用没有用到标准的c库,或者一些系统转载 2014-05-28 20:41:00 · 588 阅读 · 0 评论 -
2.6.32关于bus_id的问题
实验环境:linux2.6.32.2 在做bus驱动实验的时候,出现了一个问题:提示bus_id找不到。于是到内核源代码找了一番,果然没有看见。直接到device结构体中看,找到的最像的也就const char *init_name; /* initial name of the device */想到这个也可以作为标识,并且BUS_ID_SIZE也找不到,于是将strn转载 2014-05-28 18:17:56 · 664 阅读 · 0 评论 -
什么是sys文件系统
转自:1. 什么是sysfssysfs是Linux 内核中设计较新的一种虚拟的基于内存的文件系统,它的作用与 proc 有些类似,但除了与 proc 相同的具有查看和设定内核参数功能之外,还有为 Linux 统一设备模型作为管理之用。相比于 proc 文件系统,使用 sysfs 导出内核数据的方式更为统一,并且组织的方式更好,它的设计从 proc 中吸取了很多教训。2. sysfs 与转载 2014-05-27 09:12:32 · 1164 阅读 · 0 评论 -
ARM linux的启动部分源代码简略分析(精)
ARM linux的启动部分源代码简略分析 以友善之臂的mini2440开发板为平台,以较新的内核linux-2.6.32.7版本为例,仅作说明之用。 当内核映像被加载到RAM之后,Bootloader的控制权被释放。内核映像并不是可直接运行的目标代码,而是一个压缩过的zImage(小内核)。但是,也并非是zImage映像中的一切均被压缩了,映像中包含未被压缩的部分,这部分中包含解压缩转载 2014-05-26 20:21:54 · 761 阅读 · 0 评论 -
Linux 常用头文件
Linux 下个头文件作用转载 2014-05-26 16:21:32 · 483 阅读 · 0 评论 -
linux内核的一些预定义(非常易懂)
所有的内核代码,基本都包含了linux\compile.h这个文件,所以它是基础,打算先分析这个文件里的代码看看,有空再分析分析其它的代码。首先印入眼帘的是对__ASSEMBLY__这个宏的判断,这个变量实际是在编译汇编代码的时候,由编译器使用-D这样的参数加进去 的,AFLAGS这个变量也定义了这个变量,gcc会把这个宏定义为1。用在这里,是因为汇编代码里,不会用到类似于__user这样的属转载 2014-05-26 16:51:51 · 376 阅读 · 0 评论 -
linux软件中断——tasklet机制
转自:http://liu1227787871.blog.163.com/blog/static/20536319720129210112658/转载 2014-06-16 10:26:10 · 655 阅读 · 0 评论 -
linux中断处理浅析
转自:http://www.embeddedlinux.org.cn/html/yingjianqudong/201304/19-2554.html最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着"重要的事马上做, 不重要的事推后做"的异步处理思想. 于是整理一下。 第一阶段--获取中断号每个CPU都有响应中断的能力, 每个C转载 2014-06-16 10:31:26 · 466 阅读 · 0 评论 -
Linux网络协议栈之套接字缓冲区(1)
作者:bullbat Linux网络协议栈是内核中最大的组件之一,由于网络部分应用的范围很广,也相对较热,该部分现有的资料很多,学起来也比较容易。首先,我们看看贯穿网络协议栈各层的一个最关键数据结构——套接字缓冲区(sk_buff结构)。 一个封包就存储在这个数据结构中。所有网络分层都会使用这个结构来存储其报头、有关数据的信息,以及用来协调工作的其他内部转载 2015-02-06 11:11:36 · 633 阅读 · 0 评论 -
sk_buff详解
一. SKB_BUFF的基本概念1. 一个完整的skb buff组成(1) struct sk_buff--用于维护socket buffer状态和描述信息(2) header data--独立于sk_buff结构体的数据缓冲区,用来存放报文分组,使各层协议的header存储在连续的空间中,以方便协议栈对其操作(3) struct skb_shared_info --作为heade转载 2015-02-05 20:12:50 · 1417 阅读 · 0 评论 -
Linux网络协议栈之套接字缓冲区(2)
转自:http://blog.csdn.net/bullbat/article/details/7635314数据定位与操作 head,end,data,tail四个字段用来指向线性数据缓存区及数据部分的边界。Head和end分别指向缓存区的头与尾;而data和tail则分别指向数据的头与尾。在发送时,每一层协议会在head与data之间填充协议首部,还可能在tail转载 2015-02-06 11:14:32 · 484 阅读 · 0 评论 -
Nand ECC校验和纠错原理及2.6.27内核ECC代码分析
转自:http://bbs.chinaunix.net/thread-1975983-1-1.htmlECC的全称是Error Checking and Correction,是一种用于Nand的差错检测和修正算法。如果操作时序和电路稳定性不存在问题的话,NAND Flash出错的时候一般不会造成整个Block或是Page不能读取或是全部出错,而是整个Page(例如512Bytes)中转载 2014-12-08 15:59:14 · 795 阅读 · 0 评论 -
Ubuntu 14.04 安装TFTP server
转自:http://blog.csdn.net/rudyn/article/details/38638759 其实发行版本无关,只是我是在14.04中安装的,从网友中找到方法,很简单明了,收藏了,安装完后就可以在linux下用tftp传输文件了,试过用minicom,但是还是不怎么方便。1. sudo apt-get install tftpd tftp o转载 2014-12-22 11:35:13 · 586 阅读 · 0 评论 -
vim查看二进制文件
Vim 来编辑二进制文件。Vim 本非为此而设计的,因而有若干局限。但你能读取一个文件,改动一个字符,然后把它存盘。结果是你的文件就只有那一个字符给改了,其它的就跟原来那个一模一样。 要保证 Vim 别把它那些聪明的窍门用错地方,启动 Vim 时加上 "-b" 参数: vim -b datafile这个参数设定了 'binary' 选项。其作用是排除所有的意外转载 2014-09-03 08:27:02 · 864 阅读 · 0 评论 -
Linux共享内存机制
共享内存区域是被多个进程共享的一部分物理内存。如果多个进程都把该内存区域映射到自己的虚拟地址空间,则这些进程就都可以直接访问该共享内存区域,从而可以通过该区域进行通信。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。这块共享虚拟内存的页面,出现在每一个共享该页面的进程的页表中。但是它不需要在所有进程的虚拟内存中都有相同转载 2014-09-02 16:05:19 · 2861 阅读 · 0 评论 -
linux arm mmu基础
ARM MMU页表框架先上一张arm mmu的页表结构的通用框图(以下的论述都由该图来逐渐展开):以上是arm的页表框图的典型结构:即是二级页表结构:其中第一级页表(L1)是由虚拟地址的高12bit(bits[31:20])组成,所以第一级页表有4096个item,每个item占4个字节,所以一级页表的大小为16KB,而在第一级页表中的每个entry的最低2bi转载 2014-09-01 20:50:52 · 563 阅读 · 0 评论 -
linux c ---关于EOF
EOF是 End Of File 的缩写。在C语言中,它是在标准库中定义的一个宏。(1) 判断文件结束多数人认为文件中有一个EOF,用于表示文件的结尾. 但这个观点实际上是错误的,在文件所包含的数据中,并没有什么文件结束符. 对getc 而言, 如果不能从文件中读取,则返回一个整数 -1,这就是所谓的EOF. 返回 EOF 无非是出现了两种情况,一是文件已经读完; 二是文件读取转载 2014-07-28 18:00:14 · 697 阅读 · 0 评论 -
内核request_mem_region 和 ioremap的理解
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令转载 2014-05-26 12:13:47 · 435 阅读 · 0 评论 -
device_create 函数详细分析
我们在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。 内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了cl转载 2014-05-24 15:45:58 · 697 阅读 · 0 评论 -
用uboot 烧写uboot linux内核 文件系统到nandflash的 过程以及bootm go命令启动与区别
文章结构结构顺序有变化-1:烧写uboot0: bootargs bootcmd 命令参数的设置1:制作yaffs2的过程2:烧写yaffs2的过程3:制作uimage 的过程4: 烧写uiamge的过程5:uimage zimage vmlinux 的区别6: uboot传递给内核的参数结构 tag7:bootm go 的 启动过程 以及区别8:加载地转载 2014-05-17 21:38:21 · 1326 阅读 · 0 评论 -
用busybox构建根文件系统及出错总结
总结下这几天来用busybox构建根文件系统出现的一些问题,总的来说比较重要的就是配置busybox的过程,必须要知道哪些是需要的,是必须加载的,否则当内核启动后加载文件系统会出现非人类所能理解的问题。所以只要我们知道哪些基本的配置项是必须的,保证我们的文件系统能正常加载后,其它的一些命令可以根据 自己的实际情况自己添加就行了。废话少说,下面开始进行配置busybox吧,本人使用的是最新的busy转载 2014-05-17 21:36:14 · 456 阅读 · 0 评论 -
u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统
三、根文件系统的制作我们利用busybox来制作根文件系统1.在下列网站下载busybox-1.15.0.tar.bz2http://www.linuxidc.com/linux/2011-08/40704.htm在当前目录下解压busyboxtar -jxvf busybox-1.15.0.tar.bz22.配置编译busybox使用men转载 2014-05-17 21:53:42 · 716 阅读 · 0 评论 -
vm_area_struct
原文:http://blog.csdn.net/ywf861029/article/details/6114794Linux内核中,关于虚存管理的最基本的管理单元应该是struct vm_area_struct了,它描述的是一段连续的、具有相同访问属性的虚存空间,该虚存空间的大小为物理内存页面的整数倍。 下面是struct vm_area_struct结构体的定义:/*转载 2014-05-16 15:14:45 · 424 阅读 · 0 评论 -
linux2.6内核Makefile简单语法与应用
2.6的Makefile的写法和应用相对于2.4有了一些变化,可能对于很多人来说,因为找不到相关的文档,都是模仿内核中已有的文件来写自己的Makefile。其实,在内核的Documentation / kbuild目录下面,还是有对内核Makefile语法的详细说明的。在这里就2.6内核中Makefile最常见的简单应用情况做一个翻译和归纳介绍。2.6内核的Makefile分为5个组成部分转载 2014-04-19 22:50:23 · 398 阅读 · 0 评论 -
Linux下程序的加载、运行和终止流程 .
简介用户在编写程序时都要定义一个main()函数作为程序运行的入口。程序开始执行时就从这个函数开始。当这个函数返回时就表明程序运行结束了。可是用户编写的程序要能正确运行远不是这么简单。比如,我们不禁要问main()是由谁调用的呢?当从main()返回后又运行到哪里去了呢?C++程序中定义的全局对象是如何构造的呢?又是如何析构的呢?如果程序是动态链接的,它所依赖的共享库是如何加载进内存的?更复杂转载 2014-04-18 15:40:39 · 774 阅读 · 0 评论 -
静态库 共享库 静态链接 动态链接
库,是一种封装机制,简单说是把所有的源代码编译成目标代码后打成的包.库的开发者除了提供库的目标代码外,还提供一系列的头文件,头文件中就包含了库的接口,库分为静态库(static library)和共享库(share library)。在Linux中静态库以一种存档(archive)的特殊文件格式存放在磁盘中,由后缀.a标识;共享库通常用.so后缀来表示。win下分别是.lib和.dll L转载 2014-04-18 15:42:49 · 673 阅读 · 0 评论 -
小白学Linux之内核模块编程 .
Linux内核模块编程Linux内核模块编程是一个很重要的知识点。尤其是编写底层驱动程序时,一定会涉及到它。内核模块编程也是Tiger哥学习Linux时第一节课所接触的知识。由此可以看出它的important,也可以看出其实它很easy。一前言:1.什么是内核模块1>内核模块是具有独立功能的程序。它可以转载 2014-04-19 12:29:35 · 463 阅读 · 0 评论 -
ELF文件结构
ELF文件 ELF文件格式是一个开放标准,各种UNIX系统的可执行文件都采用ELF格式,它有三种不同的类型: • 可重定位的目标文件(Relocatable,或者Object File) • 可执行文件(Executable) • 共享库(Shared Object,或者Shared Library) 共享库留到第 4 节 “共享库”再详细介绍,本节我们以例 18.2 “求转载 2014-04-18 16:28:56 · 465 阅读 · 0 评论 -
学习 Linux内核的意义及内核 head_list分析
1.分析linux内核的重要性 操作系统作为最核心的软件,关系到国家的战略安全,在现代的信息化战争中,操作系统的安全对于制信息权起着非常重要的作用。而制信息权是制空权,制海权的基础。没有制信息权作为保障,制空制海权也就无从谈起。 在信息安全中,操作系统起着及其重要的作用。许多安全产品如防火墙,入侵检测系统,入侵防护系统,防毒杀毒软件都构建在操作系统之上。如果操作系统转载 2014-05-17 21:45:59 · 1017 阅读 · 0 评论 -
Linux根文件系统的挂载过程分析
前言:本篇文章以S3C6410公版的Linux BSP和U-Boot来进行分析,文中所有提及的名词和数据都是以该环境为例,所有的代码流程也是以该环境为例来进行分析。哈哈。如果有不正确或者不完善的地方,欢迎前来拍砖留言或者发邮件到guopeixin@126.com进行讨论,先行谢过。简单的来说,根文件系统包括虚拟根文件系统和真实根文件系统。在Kernel启动的初始阶段,首先去创建虚拟转载 2014-05-17 21:51:21 · 486 阅读 · 0 评论 -
arm-linux-gdb(宿主机)+gdbserver(目标机)远程调试
引用:http://www.xxlinux.com/linux/article/accidence/install/20070531/8639.html我的环境:Fedora 14 虚拟机编译器:arm-linux-gcc-4.3.2开发板:TQ2440嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端使用ar转载 2014-05-21 12:57:07 · 1395 阅读 · 0 评论 -
ARM-Linux存储机制详解
转自:http://blog.csdn.net/zzsfqiuyigui/article/details/7430591ARM-Linux存储机制详解1.内存管理和MMU当ARM 要访问存储器时,MMU 先查找TLB(Translation Lookaside Buffer,旁路转换缓冲)中的虚拟地址表。如果TLB 中没有虚拟地址的入口,则转换表遍历硬件会从存放在内存的转换表中转载 2014-05-21 13:01:48 · 579 阅读 · 0 评论 -
linux 文件描述符表 打开文件表 inode vnode
在Linux中,进程是通过文件描述符(file descriptors,简称fd)而不是文件名来访问文件的,文件描述符实际上是一个整数。Linux中规定每个进程能最多能同时使用NR_OPEN个文件描述符,这个值在fs.h中定义,为1024*1024(2.0版中仅定义为256)。每个文件都有一个32位的数字来表示下一个读写的字节位置,这个数字叫做文件位置。每次打开一个文件,除非明确要求,否则转载 2014-04-01 10:32:55 · 555 阅读 · 0 评论 -
fork产生子进程利用pipe管道通信
进程间通信 fork pipe pie_t 等用法(管道机制 通信)每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲 区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)。如下图所示。图转载 2014-04-01 10:34:23 · 1876 阅读 · 1 评论 -
Linux 内核中的 GCC 特性
GCC 和 Linux 是出色的组合。尽管它们是独立的软件,但是 Linux 完全依靠 GCC 在新的体系结构上运行。Linux 还利用 GCC 中的特性(称为扩展)实现更多功能和优化。本文讨论一些重要的扩展,讲解如何在 Linux 内核中使用它们。GCC 当前的稳定版本(版本 4.3.2)支持 C 标准的三个版本:International Organization for转载 2014-05-17 22:19:54 · 388 阅读 · 0 评论 -
Linux设备模型(总结)
转自:http://www.360doc.com/content/11/1219/16/1299815_173418267.shtml看了一段时间的驱动编程,从LDD3的hello wrod到后来的字符设备以至于更加复杂的驱动,越看越是觉得对linux驱动的结构不清楚,越看越是迷糊。于是就停下脚步搜索一下资料理一下头绪:以下四个方面来总结一些内容:1.底层数据结构:kobject,ks转载 2014-05-17 21:48:56 · 579 阅读 · 0 评论