12 David_Henry

尚未进行身份认证

走自己的路!

等级
TA的排名 22w+

likely和unlikely宏

    首先,无论在何处,当我们遇到宏likely和宏unlikely时,都要明确一点:  if(likely(value)) 等价于 if(value)  if(unlikely(value)) 也等价于 if(value)    也就是说 ,当value值为真时执行if分支,为假时执行else分支,从阅读和理解代码的角度来看,是一样的!!!以下为这两个宏的一般定义:#define likely(x)       __builtin_expect(!!(x), 1)#define unlikely(x) 

2010-09-03 18:49:00

(转)如何解决vmware虚机无法通过主机防火墙上网的问题

最近用虚拟机时发现在桥接模式下虚机中的所有使用tcp访问网络的程序全部无法使用(其它程序均能正常访问网络,同时将连接模式切换到NAT模式也没有问题),经过一番排查才发现原来是主机中的瑞星防火墙惹的祸——只要关闭防火墙就一切和谐!但也不能老靠关防火墙来解决问题啊,那岂不是显得咱太不专业了。后来进过一番分析,最后将问题定位到了瑞星防火墙的IP包过滤上。下面我就简单介绍下这个问题的解决方法(本文使用的是

2010-04-27 15:24:00

C语言中的字节对齐问题

struct 是一种复合数据类型,其构成元素既可以是基本数据类型(如 int 、 long 、 float 等)的变量,也可以是一些复合数据类型(如 array 、 struct 、 union 等)的数据单元。对于结构体,编译器会自动进行成员变量的对齐,以提高运算效率。缺省情况下,编译器为结构体的每个成员按其自然对界( natural alignment )条件分配空间。各个成员按照它们被声明的

2010-04-03 16:18:00

(转)Linux内核的同步机制

Linux内核的同步机制(一):原子操作 原子操作:UP和SMP的异同原子操作是不可分割的,在执行完毕不会被任何其它任务或事件中断。在单处理器系统(UniProcessor)中,能够在单条指令中完成的操作都可以认为是"原子操作",因为中断只能发生于指令之间。这也是某些CPU指令系统中引入了test_and_set、test_and_clear等指令用于临界资源互斥的原因。但是,在对称多

2010-03-23 17:09:00

Linux x86 spinlock实现之分析

1. TAS lock (test-and-set)这是最简单的spinlock,CPU会在硬件上提供一些指令来帮助OS实现spinlock,比如x86就有xchg, LOCK指令前缀等指令。。。test_and_set()可以利用这些指令对某个memory地址,来原子地完成:写入true到这个地址,同时返回这个地址储存的旧的值。void spin_lock(lock){    while (te

2010-03-22 17:01:00

Linux内核互斥锁

/linux/include/linux/mutex.h 47struct mutex { 48 /* 1: unlocked, 0: locked, negative: locked, possible waiters */ 49 atomic_t count; 50 spinlock_t

2010-03-22 16:02:00

内核同步机制-信号量/互斥锁/读-写信号量 sema ,mutex ,rwsem

目录[隐藏 ] 1 信号量 1.1 通用信号量 1.2 互斥锁 1.3 读/写信号量 if (window.showTocToggle) { var tocShowText = "显示"; var tocHideText = "隐藏"; showTocToggle(); } 信号量 通用信号量 用户类进程之间使用信号量(semaphore)进行同步,内核线程之间也使用了信号量。信号量与自

2010-03-22 15:04:00

printf格式控制符的完整格式

printf的格式控制的完整格式:%  -  0  m.n  l或h  格式字符下面对组成格式说明的各项加以说明:①%:表示格式说明的起始符号,不可缺少。②-:有-表示左对齐输出,如省略表示右对齐输出。③0:有0表示指定空位填0,如省略表示指定空位不填。④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。⑤l或h:

2010-03-02 15:16:00

Samsung原版44B0X的Bootloader分析

(转)Samsung原版44B0X的Bootloader分析作者:未知    文章来源:网络    点击数:26    更新时间:2006-6-28     1.中断向量表     AREA    Init,CODE,READONLY 说明: 1.从代码看Init段就是要写入0x00地址的原始中断向量,因此把这个文件编译生成的44binit.O和Init填入AD

2009-07-29 21:52:00

(转)44b0引导注释(44BINIT.S)

******************************************************* ; * NAME : 44BINIT.S * ; * Version : 10.JAn.2003 * ; * Description: * ; * C start up codes * ; * Configure memory, Initialize ISR ,stacks * ; *

2009-07-29 21:48:00

44b0中断深入详解(结合代码)

一、44B0中断系统       44B0 中断系统中有两张中断转移表,经过二重转移才跳到中断处理程序。第一张中断向量表由硬件决定,所在区域为ROM(flash),地址空间从0X00开始,其中0X00-0X1C为异常向量入口地址,0X20-0XC0为中断向量入口地址。另一张中断向量表在RAM 中,可以随便改,其位置在程序连接后才定。由于 RAM 放在地址空间的高端(距离中断向量超过了 32M)

2009-07-29 21:26:00
勋章 我的勋章
    暂无奖章