数据包零拷贝 下文是对工作中的零拷贝机制进行主要代码注释描述,以便之后能够快速记忆和理清其工作原理。1、物理内存的分配,代码与内核一起编译,内核启动执行do_early_param进行分配__initcall (capmem_init) //相当于module_init,内核启动流程do_initcalls()会遍历.initcall*.init段,依次执行各个级别的函数cap...
Snort框架分析 下面是snort2.0的框架分析,相比snort之后的版本,其结构比较简单、更容易学习和理解,其次是本人对此版本相对比较熟悉一些,可以为初次接触和学习snort的朋友提供帮助,能够快速整体全局性地了解snort的基本框架。下面从四个方面展开描述。一、snort插件snort中的插件有3类,输出插件,预处理插件,规则选项检测插件插件的好处:灵活地选择使用哪些功能开发人员很容易开发第三方插件,易于扩展。1、输出插件InitOutputPlugins //输出插件初始化函数注册1) 注册过.
dm9000网卡驱动分析 dm9000_probe:ndev = alloc_etherdev(sizeof(struct board_info)); //net_device分配与初始化db = netdev_priv(ndev); //网卡硬件信息初始化db->addr_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);//地址资源获取db->data_res = platform_get_resource(pdev, IORE...
Linux设备模型 kobject ktype kset是设备模型的基础kobject嵌入在其他结构体当中,该结构便拥有了kobject的功能。提供如引用计数、名称、父指针等字段,用于创建对象的层次结构。ktype是为了描述一族kobject所具有的普遍特性。因此,不再需要每个kobject都分别定义自己的特性,而是将这些普遍的特性在ktype结构中一次定义,然后所有同类的kobject都能共享一样的特性。kset是kobject对象的集合体。可以当作一个容器,具有相同ktype的kobject可以分组到不.
ELF文件格式分析与静态链接总结归纳 一、binutils包 binutils包为elf格式文件提供查看、编辑、反汇编等命令 通过yum provides */objdump 或rpm -qif /usr/bin/objdump得到提供objdump命令的安装包为binutils,通过rpm -qpl 查看包内容,得知,binutils除了提供objdump,还提供ar as ld nm readelf size strip objcopy等二进制相关命令。下面提供objdump常用的参数-h 把elf文件各...
Linux虚拟文件系统vfs与文件操作始末 虚拟文件系统(vfs)是Linux内核的子系统,其设计目的是对用户层(系统调用)屏蔽底层(各特定文件系统)实现的复杂性,对底层提供统一的接口与数据结构,使得能衔接各个特定文件系统(如ext2、ext3、fat32等),是用户层与文件系统层之间的抽象层。 与vfs层相关的主要数据结构有以下几个:超级块对象super_block、索引节点对象inode、目录项dentry、文件对象file、文件系统类型file_system_type、挂载的文件系统vfsmount等。 下面简单介...
开源漏洞扫描器合集 首先,谢谢原作者: (此文为转载的文章,现将原地址贴出如下:http://blog.csdn.net/mypc2010/article/details/77679760)https://github.com/Canbing007/wukong-agentpython redis awvs api nessus api=====================
Linux 3.x 内核学习笔记——x86 64位内存管理 地址映射64位地址采用4层地址映射,如下图:pgd、pud、pmd、pte各占了9位,加上12位的页内index,共用了48位。即可管理的地址空间为2^48=256T。而在32位地址模式时,该值仅为2^32=4G。另外64位地址时支持的物理内存最大为64T,见e820.c中MAX_ARCH_PFN的定义:# define MAX_ARCH_PFN MAXMEM>>P
Linux 3.x 内核学习笔记——x86 64位内存管理 地址映射64位地址采用4层地址映射,如下图:pgd、pud、pmd、pte各占了9位,加上12位的页内index,共用了48位。即可管理的地址空间为2^48=256T。而在32位地址模式时,该值仅为2^32=4G。另外64位地址时支持的物理内存最大为64T,见e820.c中MAX_ARCH_PFN的定义:# define MAX_ARCH_PFN MAXMEM>>PAGE_
Bios读文件与Grub(bootload)和initrd和内核对文件系统驱动的支持 前言本文源于这样一个问题:内核镜像存储在硬盘下特定文件系统中,bootloader必须先加载文件系统驱动,才能读取内核文件。类似的,内核要读取根文件系统中的文件,也需要先加载文件系统驱动。如果文件系统驱动存储在硬盘中,启动时没有驱动无法读硬盘,将导致整个启动过程的失败。那么Grub和内核如何解决这个问题的呢?启动过程中需要读硬盘的时刻:1. BIOS读硬盘中MBR,将控制权交给MB
linux-Tcp IP协议栈源码阅读笔记 2.4 路由初始化(包括neighbour表、FIB表、和路由缓存表的初始化工作) rtcache表 ip_rt_init()函数 在net/ipv4/ip_output中调用,net/ipv4/route.c中定义 FIB初始化 在ip_rt_init()中调用 在net/ipv4/fib_front.c中定义
S3C2440与SDRAM NorFlash NandFlash连线分析 http://blog.163.com/zhoufeng332@126/blog/static/62286701201272502756118/一、SDRAM(HY57V561620F)连线分析1、 S3C2440 有27根地址线ADDR[26:0],8根片选信号ngcs0-ngcs7,对应bank0-bank7,当访问bankx 的地址空间,ngcsx引脚为低电平,选中外设。2
S3C2440地址空间的分配及启动过程 S3C2440地址空间的分配及启动过程 一、S3C2440地址空间的分配1. s3c2440A 的存储器控制器有以下特性:l 大小端(通过软件选择)l 地址空间:每个bank有128M 的字节(总共1G字节/8个banks)l 可编程的访问位宽,bank0(16/32 位),其他bank(8/16/32 位)l 共8个存储器banksl 6