linux内核
文章平均质量分 76
willy8686
这个作者很懒,什么都没留下…
展开
-
Linux设备驱动之内存映射--mmap--转
1. 内存映射所谓的内存映射就是把物理内存映射到进程的地址空间之内,这些应用程序就可以直接使用输入输出的地址空间,从而提高读写的效率。Linux提供了mmap()函数,用来映射物理内存。在驱动程序中,应用程序以设备文件为对象,调用mmap()函数,内核进行内存映射的准备工作,生成vm_area_struct结构体,然后调用设备驱动程序中定义的mmap函数。 2. 映转载 2012-06-27 14:20:52 · 562 阅读 · 0 评论 -
LINUX netlink机制
LINUX netlink机制 Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),转载 2012-06-28 10:05:54 · 416 阅读 · 0 评论 -
iphdr结构分析
/usr/src/linux/include/linux/ip.hstruct iphdr {#if defined(__LITTLE_ENDIAN_BITFIELD)__u8 ihl:4,version:4;#elif defined (__BIG_ENDIAN_BITFIELD)__u8 version:4,ihl:4;#else#error转载 2012-06-27 12:02:57 · 1088 阅读 · 1 评论 -
Linux 用户态与内核态的交互——netlink 篇
这是一篇学习笔记,主要是对《Linux 系统内核空间与用户空间通信的实现与分析》中的源码imp2的分析。其中的源码,可以到以下URL下 载: http://www-128.ibm.com/developerworks/cn/linux/l-netlink/imp2.tar.gz [size=3]参考文档[/size] 《Linux 系统内核空间与用户空间通信的实现与分析》 陈鑫转载 2012-06-27 15:34:07 · 1079 阅读 · 0 评论 -
Linux内核中netlink协议族的实现(下)
Linux内核中netlink协议族的实现(下)本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn: yfydz_no1@hotmail.com来源:http://yfydz.cublog.cn5.3 连接连接通常是针对客户端连接服务器static int netlink_co转载 2012-06-28 10:02:13 · 1452 阅读 · 0 评论 -
netlink 编程介绍
Linux从2.2开始支持PF_NETLINK 域的通讯方式,这个方式主要的用途是在Linux的内核空间和用户空间进行通讯。目前在网络上面关于netlink编程的中文资料很少,为了促进对 netlink编程的理解我编写了这篇文章,由于我对netlink的了解不是很透彻,特别是对于内核部分不是很熟悉,所以文章中肯定有很多错误的地方还请大家指正。文章分下面几个部分进行讲述netlink 基础知转载 2012-06-28 12:32:13 · 1057 阅读 · 0 评论 -
LINUX TCP/IP 协议栈的关键数据结构SOCKET BUFFER(SK_BUFF )
sk_buff结构可能是linux网络代码中最重要的数据结构,它表示接收或发送数据包的包头信息。它在中定义,并包含很多成员变量供网络代码中的各子系统使用。这个结构在linux内核的发展过程中改动过很多次,或者是增加新的选项,或者是重新组织已存在的成员变量以使得成员变量的布局更加清晰。它的成员变量可以大致分为以下几类:Layout 布局General 通用Feat转载 2012-06-27 13:18:50 · 678 阅读 · 0 评论 -
netfilter.h的解释
这个文件是2.4防火墙总处理程序的头文件。主要是向内核其他部分、应用程序提供接口。我将结合源文件一一说明。 #ifndef __LINUX_NETFILTER_H #define __LINUX_NETFILTER_H #ifdef __KERNEL__ #include #include #include #include #include #incl转载 2012-06-27 13:57:24 · 631 阅读 · 0 评论 -
Linux内核中netlink协议族的实现(上)
Linux内核中netlink协议族的实现(上) Linux内核中netlink协议族的实现(上)本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn: yfydz_no1@hotmail.com来源:http://yfydz.cublog.cn1. 前言转载 2012-06-28 10:04:00 · 918 阅读 · 0 评论 -
Linux中与内核通信的Netlink机制
Netlink在2.6版本的内核中变化也是很大的,在最新的2.6.37内核中,其定义已经改成下面这种形式,传递的参数已经达到6个。其中第一个参数和mutex参数都是最新添加的。Mutex也可以为空。这里主要是关于内核空间中的netlink函数的使用。extern struct sock *netlink_kernel_create(struct net *net,转载 2012-06-28 10:26:25 · 2367 阅读 · 0 评论 -
linux 内核tcp数据发送的实现
在分析之前先来看下SO_RCVTIMEO和SO_SNDTIMEO套接口吧,前面分析代码时没太注意这两个.这里算是个补充. SO_RCVTIMEO和SO_SNDTIMEO套接口选项可以给套接口的读和写,来设置超时时间,在unix网络编程中,说是他们只能用于读和写,而像accept和connect都不能用他们来设置.可是我在阅读内核源码的过程中看到,在linux中,accept和connect转载 2012-06-27 12:48:22 · 1112 阅读 · 0 评论 -
linux内核分析笔记----进程地址空间
前边我已经说过了内核是如何管理物理内存。但事实是内核是操作系统的核心,不光管理本身的内存,还要管理进程的地址空间。linux操作系统采用虚拟内存技术,所有进程之间以虚拟方式共享内存。进程地址空间由每个进程中的线性地址区组成,而且更为重要的特点是内核允许进程使用该空间中的地址。通常情况况下,每个进程都有唯一的地址空间,而且进程地址空间之间彼此互不相干。但是进程之间也可以选择共享地址空间,这样的进程就转载 2012-06-27 14:11:33 · 479 阅读 · 0 评论 -
socket select函数的详细讲解
原型int select(int nfds,fd_set* readfds,fd_set* writefds,fd_set* exceptfds,const struct timeval* timeout);nfds:本参数忽略,仅起到兼容作用。 readfds:(可选)指针,指向一组等待可读性检查的套接口。 writefds:(可选)指针,指向转载 2012-07-05 11:41:21 · 1004 阅读 · 0 评论 -
Linux 2.6.32 sk_buff 的结构分析
我看的内核版本是2.6.32.在内核中sk_buff表示一个网络数据包,它是一个双向链表,而链表头就是sk_buff_head,在老的内核里面sk_buff会有一个list域直接指向sk_buff_head也就是链表头,现在在2.6.32里面这个域已经被删除了。而sk_buff的内存布局可以分作3个段,第一个就是sk_buff自身,第二个是linear-data buff,第三个是翻译 2012-04-24 11:19:54 · 496 阅读 · 0 评论 -
linux协议栈skb操作函数
接字缓冲区函数函数名功能函数形成参数描述skb_queue_empty检查队列是否为空int skb_queue_empty (struct sk_buff_head * list)list为队列头如果队列为空返回真,否则返回假skb_get转载 2012-03-17 20:53:00 · 6175 阅读 · 0 评论 -
sk_buff结构分析
前言:以下是根据《深入理解Linux网络技术内幕》对sk_buff的相关总结,由于是刚刚看这本书(太厚了),不免在前期出现错误,随着对此书的深入我会在修改前面的错误,也希望各位牛人给予指点。帮助我成长。sk_buff分析:sk_buff是Linux网络代码中最重要的结构体之一。它是Linux在其协议栈里传送的结构体,也就是所谓的“包”,在他里面包含了各层协议的头部,比如et转载 2012-03-17 20:14:06 · 785 阅读 · 1 评论 -
Authentication Proxy原理
Authentication Proxy原理当一个用户发起HTTP访问穿过ROUTER,the authentication proxy is triggered(在接口截获用户通过ROUTER的http包进行认证)auth proxy先检查现存的entry有没有此用户的entry没有,就根据其http request包,发回一个http repond包,但显示的是一个转载 2012-07-09 12:13:14 · 1316 阅读 · 0 评论 -
Linux内核发送构造数据包的方式
本文欢迎自由转载,但请标明出处,并保证本文的完整性。 作者:Godbach 日期:2009/09/01一、构造数据包简析这里并不详细介绍如何在内核中构造数据包,下文如有需要会在适当的位置进行分析。这里简单的分析讲一下内核态基于Netfilter框架构造数据包的方式。 内核中可以用到的构造数据包的方式,个人认为可以分为两种。其一,我们直转载 2012-06-27 10:06:15 · 1911 阅读 · 0 评论 -
linux内核sk_buff的结构分析
在内核中sk_buff表示一个网络数据包,它是一个双向链表,而链表头就是sk_buff_head,在老的内核里面sk_buff会有一个list域直接指向sk_buff_head也就是链表头,现在在2.6.32里面这个域已经被删除了。 而sk_buff的内存布局可以分作3个段,第一个就是sk_buff自身,第二个是linear-data buff,第三个是paged-data buff(也就转载 2012-06-26 14:21:37 · 477 阅读 · 0 评论 -
网络协议栈(10)netfilter
一、机制该工具相当于内核中的车匪路霸,它们在内核网络栈中各处安装关卡,对内核中报文的流动进行监控管理,它是Linux系统下实现防火墙的基础,利用用户态的iptables的实现就是netfilter机制的一个典型应用。该机制直接嵌入内核,在内核生成的时候这些监测点就已经被编译入内核,所以是顽固而可靠的检测机制。二、实现1、数据结构这是一个三维的实现模型,第一维可以认为是不同的网络转载 2012-06-27 11:29:05 · 1244 阅读 · 0 评论 -
struct--tcphdr 结构分析
sk_buff->tcphdr/usr/src/linux-2.6.19/include/linux/tcp.hstruct tcphdr { __be16 source; __be16 dest; __be32 seq; __be32 ack_seq;#if defined(__LITTLE_ENDIAN_BITFIELD)转载 2012-06-27 12:06:02 · 7206 阅读 · 0 评论 -
Linux网络层 ip_rcv()函数代码分析
int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt)//几个结构sk_buff套接字缓存,net_device网络设备结构,是所有网络结构的基础数据结构,packet_type原型struct packet_type {unsigned short type; /* T转载 2012-06-27 13:26:16 · 1539 阅读 · 0 评论 -
container_of()宏
container_of()宏在学习Linux驱动的过程中,遇到一个宏叫做container_of。该宏定义在include/linux/kernel.h中,首先来贴出它的代码:/** * container_of - cast a member of a structure out to the containing structure * @ptr:转载 2012-06-27 14:04:05 · 311 阅读 · 0 评论 -
fd_set 用法
select()函数主要是建立在fd_set类型的基础上的。fd_set(它比较重要所以先介绍一下)是一组文件描述字(fd)的集合,它用一位来表示一个fd(下面会仔细介绍),对于fd_set类型通过下面四个宏来操作: fd_set set;FD_ZERO(&set); FD_SET(fd,&set); FD_CLR(fd,&set); FD_ISSET(fd,转载 2012-07-05 11:31:54 · 421 阅读 · 0 评论