自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

转载 内核栈

进程的内核栈一般是2个pages,也就是8kB,所以对于大的数组或结构体,最好kmalloc动态分配,用完后别忘了释放

2011-10-18 11:00:36 662

原创 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

转载 指针+1的含义

指针++,指针指向下一个类型的变量

2011-10-12 18:44:26 1238 1

转载 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

转载 Secure CRT 的日志时间设置

%M-%D-%h:%m:%s:

2011-10-11 10:10:41 2154

转载 DAS,NAS,SAN存储架构详解

1、 DAS,NAS,SAN是什么?

2011-10-10 18:17:48 5253

转载 双网卡网络转发

现有双网卡的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

跟我一起写Makefile.pdf

详细的描述了Makefile的基本语法包含变量,控制流,默认规则等,可以作为Makefile很好的入门学习资料。

2020-04-27

做一名真正的程序员.pptx

共有三部分,第一部分1、程序员的基本素质。第二部分2、程序的编辑、编译、运行。第三部分3、代码规范。

2020-04-27

ultra edit 高亮显示配置文件

ue打开的文档无法进行高亮显示,用这个配置文件不错

2013-09-05

VC读取Excel中的数据

经自己验证,可以直接拿来使用的一个类,丰富你的类库

2013-07-23

iSCSI详细的说明文档

iSCSI详细的说明文档,原版英文的,可以看看

2013-07-23

RTL8201 数据手册

RTL8201 网络phy芯片datasheet,仅供参考

2013-07-23

MMU与CACHE详解

linux MMU CACHE 详细阐述了MMU CACHE在系统中的作用和二者之间的关系

2013-07-23

保护模式与实模式

描述了实模式与保护模式的区别,及启动过程中二者的切换过程!!

2011-12-12

usb spec 2.0

usb spec 协议。。。。。。。。。。。。。。。。

2011-10-28

跟我一起写Makefile

Makefile介绍的比较详细简单易懂。。。。。。。。。。

2011-10-28

常用的元器件pcb封装库

比较全的封装库 完整的封装库,自己常用的基本上都有了

2011-06-11

51单片机C程序设计

对于初学者,是个不错的资料!!!!!!!!!

2009-08-28

SD卡最完整的中英文资料

SD卡最完整的中英文资料,SD卡最完整的中英文资料

2009-08-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除