- 博客(39)
- 资源 (24)
- 收藏
- 关注
转载 网络协议的初始化dev_add_pack
在数据包接收过程的那篇笔记中可以知道,在数据包的处理函数netif_receive_skb中,会先看ptype_all中是否有注册的协议,如果有,则调用相应的处理函数,然后再到ptype_base中,找到合适的协议,将skb发送到相关协议的处理函数.比如ip协议(ip_rcv)或者arp(arp_rcv)等等.此篇笔记讲的是有关ptype_all和ptype_base的相关知识点.ptype_
2011-10-31 10:05:05 6399
转载 适合Linux处理器介绍
alpha 处理器Alpha 处理器最早由美国DEC 公司设计制造,在Compaq (康柏)公司收购DEC 之后,Alpha 处理器继续得到发展,并且应用于许多高档的Compaq 服务器上,HP (惠普)收购的Compaq ,Alpha 便为HP(惠普)所有,不过HP (惠普)已经放弃发展alpha 处理器。arm 处理器Arm 系列处理器 是英国Arm 公司设计的主流嵌入式3
2011-10-29 17:00:32 1483
转载 Linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解
前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式——在一个独立的文件夹通过makefile配合内核源码路径完成 那么如何将驱动直接编译进内核呢? 在我们实际内核的移植配置过程中经常听说的内核裁剪又是怎么麽回事呢?我们在进行linux内核配置的时候经常会执行make menuconfi
2011-10-29 16:29:21 20996
转载 make menuconfig 执行流程分析
linux/2.6.20.6/make menuconfig 当在顶层目录执行”make menuconfig”会执行顶层Makefile 第415行的规则 config %config: scripts_basic outputmakefile FORCE $(Q)mkdir -p include/linux include/config
2011-10-29 16:04:21 3457
转载 Linux source code Makefile分析
linux-2.6.x makefile linux-2.6.20.6/Documentation/kbuild/makefiles.txt 一、 概述 linux的makefile有五个部分: Makefile:顶层Makefile .config:内核配置文件 arch/$(ARCH)/Makefile:体系结构相
2011-10-29 16:03:08 1801
转载 宏展开顺序分析
The sequence of preprocessing tokens bounded by the outside-most matching parenthesesforms the list of arguments for the function-like macro. The individual arguments within the list are separated b
2011-10-28 09:25:40 4053
转载 宏#和##的应用
//-----------------------------------------------------------//例1//#和##运用#include#include //#define aa bb#define A aa//#把宏参数变为一个字符串,//#define STR(s) #s //需要注意的是凡宏定义里有用'#'或'##'的地方宏参数
2011-10-28 09:01:33 760
原创 test_and_set_bit
test_and_set_bit(int nr, long* addr)将*addr 的第n位设置成1,并返回原来这一位的值
2011-10-27 10:28:24 6651
转载 typecheck
在kernel 2.6.30 的typecheck.h源码中有如下定义#define typecheck(type,x) /({ type __dummy; / typeof(x) __dummy2; / (void)(&__dummy == &__dummy2); / 1; /})这个有什么作
2011-10-27 09:15:36 999
转载 bootmem allocator介绍
在系统初始化的时候需要执行一些内存管理,内存分配的任务,这个时候buddy system,slab等并没有被初始化好,此时就引入了一种内存管理器bootmem allocator在系统初始化的时候进行内存管理与分配,当buddy system等初始化好后,在mem_init()中对bootmem allocator进行释放,内存管理与分配由buddy system,slab等进行接管。boot
2011-10-24 12:47:16 1273
转载 cache原理介绍
cache是ARM最难理解,也是最具有闪光点的地方之一,现在是解决他的时候了。 对于这么经典的东西,我还是引用ARM工程师的书籍吧,免得误人子弟。cache以及write buffer的介绍 A cache is a small, fast array of memory placed between the processor core and main
2011-10-24 09:38:41 12586
转载 cache一致性问题
这周碰到的一个问题,在解决的过程中得到不少高手的热心帮助,把一些总结贴出来,欢迎大家指点。写一个屏驱动的时候,需要把一块内核中用kmalloc分配的内存映射到应用层中使用。这是一个很simple的需求,很轻松的就可以通过mmap搞定:驱动部分代码:1698 if((mmap_addr = kmalloc(PAGE_SIZE, GFP_KERNEL)) == NU
2011-10-22 12:24:53 9271
转载 用户进程释放内存
Linux用户进程是如何释放内存的Linux进程使用内存的基本流程: 见图1从图中我们可以看出,进程的堆,并不是直接建立在Linux的内核的内存分配策略上的,而是建立在glibc的堆管理策略上的(也就是glibc的动态内存分配策略上),堆的管理是由glibc进行的。所以我们调用free对malloc得到的内存进行释放的时候,并不是直接释放给操作系统,而是还给了glibc的堆管
2011-10-22 12:15:22 1517
转载 netlink的使用
两年前看到这篇入门文章,这几天看书遇到netlink socket,就又读了一遍,顺便翻译了一篇放上来,对原文中例子代码的一些小问题进行了修改,如果译文有不清楚或者错误的地方,敬请指出!!顺带附上了原文地址,大家可以参考E文。另外,word文档打印成PDF也作为附件提供下载,方便大家离线阅读。===============================做了个简单的应用,整理成
2011-10-22 12:03:32 2112
转载 内存屏障:barrier()与mb()
对barrier() 我的理解是这只是一个compiler barrier, 这个barrier加入到代码中,会使cache invalidation而mb是hardware barrier,在代码运行中,CPU会prevent from reordering cache visit.
2011-10-22 12:00:23 1048
转载 内存管理实质
1. 内核初始化: * 内核建立好内核页目录页表数据库,假设物理内存大小为len,则建立了[3G--3G+len]::[0--len]这样的虚地址vaddr和物理地址paddr的线性对应关系; * 内核建立一个page数组,page数组和物理页面系列完全是线性对应,page用来管理该物理页面状态,每个物理页面的虚地址保存在page->virtual中; * 内核建
2011-10-22 11:46:28 488
转载 进程切换之__switch_to宏定义
linux内核进程切换最重要的一个部分就是宏定义switch_to,下面从几个方面来详细讲解一下:(1)内嵌汇编(2)memory 破坏描述符(编译器优化)(3)进程切换的标志是什么?(4)堆栈切换的标志是什么?(5)为什么switch_to 提供了三个参数?(6)汇编参数的传递?带着这几个问题,先来大体浏览一下代码#define switch_to(pre
2011-10-22 11:42:13 1665
转载 工作队列使用方法
一、用法struct cpu_workqueue_struct { spinlock_t lock; long remove_sequence; /* Least-recently added (next to run) */ long insert_sequence; /* Next to add */
2011-10-22 11:37:01 2293
转载 网络接收流程描述
在2.6.24.4中所有的网卡,不管是否支持napi,都是通过struct napi_struct结构进行。所有我们先说一下这个结果。struct napi_struct{ struct list_head poll_list; unsigned long state; int weight; int (*poll)(struct napi_struct *,i
2011-10-22 10:38:16 862
转载 如何使用邮件列表
您也可以用WEB方式进行订阅邮件列表,此处我们讲的是如何用邮件方式来订阅和管理邮件列表。首先假定我们已经知道邮件列表的地址,以westdc-report@lists.westgis.ac.cn(数据通讯邮件列表)为例,并假定邮件列表的管理程序为mailman。一、邮件列表介绍邮件列表也叫Mailing List,是Internet上的一种重要工具,用于各种群体之间的信息交流
2011-10-21 01:50:27 6353
转载 内核启动过程
Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码,主要作用是检查CPU ID, Architecture Type,初始化BSS等操作,并跳到start_kernel函数。在执行前,处理器应满足以下状态:r0 - should be 0 r
2011-10-21 01:17:39 1450
转载 cache和内存的映射方式
cache是一种高速缓冲存储器,她的主要作用是提高CPU数据输入的速率,调和CPU速度与内存存储速度之间的巨大差异。通俗一点说就是CPU太快,内存速度相对比较慢,而cache的速度快,但是cache的价格比较昂贵。人们想到一个办法就是利用小容量的cache在CPU和内存中间当桥梁,也就是说把CPU在下一个时间段需要用到的数据提前存入cache中,当CPU需要的时候可以快速的从Cache中取得数
2011-10-20 13:48:31 16258
转载 系统时钟与进程调度
深入分析Linux内核源码-第五章进程调度【摘要】本章介绍了Linux系统的时间机制,包括系统时钟和硬件时钟之间的关系、各种时间标准的转换、时钟中断tick的维护;接着介绍了进程调度的几种常见算法、何时进行内核调度及选择相应该调度的进程,并分析了调度程序的实现;最后介绍了进程
2011-10-18 22:55:44 5118
原创 do_softirq
//// do_IRQ 函数执行完硬件 ISR 后退出时调用此函数。//void irq_exit(void){ account_system_vtime(current); trace_hardirq_exit();
2011-10-17 22:28:42 1781
转载 关于do_softirq
/////////////////////// 1.离开这个函数的时候为什么要关闭硬件中断? 代码中的提示是什么意思? //////////////////////// 这是因为do_softirq()函数退出后,通常马上就要进入中断返回过程,也即内核马上就要执行
2011-10-17 22:26:39 1169
转载 内核自解压分析
gzip-1.2.4程序分析 一点说明: 在gzip.c中: DECLARE(uch, inbuf, INBUFSIZ +INBUF_EXTRA); DECLARE(uch, outbuf, OUTBUFSIZ+OUTBUF_EXTRA); DECLARE(u
2011-10-17 19:00:25 824
转载 系统调用
先写个简单的test.c#include #include #include #include #include struct cdev test_cdev;dev_t devno;unsigned int major = 0;
2011-10-16 10:18:32 469
转载 uboot makefile分析
之前用过两个版本u-boot,分析过它的Start.S文件(PowerPC、ARM)源代码,也移植过内部的各部分硬件驱动及组件(串口、I2C、SPI、Flash文件系统、USB、DMA等)源码,自我感觉比较熟悉了。但最近逛CSDN论坛发现有不少人在问U-Boot中的Makefil
2011-10-15 18:35:17 3435
转载 Linux内核解压
================================Author: taoyuetaoEmail: tao_yuetao@yahoo.com.cnBlog: http://www.eetop.cn/blog/?111452006-11-06======
2011-10-11 20:26:22 3696
转载 linux 的inode
首先了解一下文件系统如何存取文件的1、根据文件名,通过Directory里的对应关系,找到文件对应的Inode number2、再根据Inode number读取到文件的Inode table3、再根据Inode table中的Pointer读取到相应的Blocks这里
2011-10-11 18:13:34 684
转载 双网卡网络转发
现有双网卡的ubuntu连接内外两个网外网网卡eth0, 网段 192.168.63.0内网网卡eth1, 网段 10.147.9.0目标,内网其他设备如10.147.9.70可以访问外网的设备如192.168.63.1首先要设置双网卡同时使用 $ sud
2011-10-10 10:20:45 5579
转载 iptables
1. 引言CentOS 内置了一个非常强劲的防火墙,统称为 iptables,但更正确的名称是 iptables/netfilter。iptables 是一个用户空间的模块。作为用户,你在命令行就是通过它将防火墙规则放进缺省的表里。netfilter 是一个核心模块,它内置于
2011-10-10 09:59:58 1703
转载 关于内存屏障
#define set_mb(var, value) do { var = value; mb(); } while (0)#define mb() __asm__ __volatile__ ("" : : : "memory")1)set_mb(),mb(),barrie
2011-10-08 21:07:07 1004
转载 关于cache line
一个L1 DATA CACHE相当于一块小的内存,我们假设它为16K大,它会与一般物理内存交互。 它和内存交互一般一次传输16个字节(32个字节),也就是: CACHE 字节0-15一次写到/读取物理内存 ,字节16-31一次写到/读取物理内存.32-47 ... ...
2011-10-08 19:43:13 12024
转载 即插即用(plug and play pnp)
PNP是Plug-and-Play(即插即用)的缩写。它的作用是自动配置(低层)计算机中的板卡和其他设备,然后告诉对应的设备都做了什么。PnP的任务是把物理设备和软件(设备驱动程序)相配合,并操作设备,在每个设备和它的驱动程序之间建立通信信道。换种说法,PnP分配下列资源给设备和
2011-10-08 09:44:00 3131
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人