C C++
linphusen
work as a developer of linux device driver,I focus on the ARMbased embedlinux develop.
展开
-
多线程--pthread_join函数详解
<br /><br />From<br />http://xsh8637.blog.163.com/blog/static/24099666200910942025662/?fromdm&fromSearch&isFromSearchEngine=yes<br /> <br />单处理器上的linux多线程,是通过分时操作完成的;<br />此时互斥锁的作用,只有在时间足够的情况下才能体现出来,即有时线程内需要延时;<br />否则只有第一个线程不断解锁和获锁,别的线程在第一个线程执行完前无法获得互斥锁。<转载 2011-05-02 16:50:00 · 879 阅读 · 0 评论 -
Linux Memory leakage checking tool
1.ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。 2.Dmalloc-Debug Malloc Library. 3.Electric Fence-Linux分发版中由Bruce Perens编写的mal原创 2011-08-09 20:51:01 · 1127 阅读 · 0 评论 -
C/C++程序员应聘常见面试题
<br />1.引言 <br /><br /> 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。<br /><br /> 许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程 度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到st原创 2011-05-02 23:04:00 · 432 阅读 · 0 评论 -
GNU __attribute__ 机制
<br />From<br />http://blog.163.com/sunm_lin/blog/static/9192142200741533038695/<br /> <br />作用:<br /> 可以设置函数属性(Function Attribute), 变量属性(Variable Attribute), 类型屬性(Type Attribute)<br />语法:<br /> __attribute__ (parameter)<br /> 注: attribute转载 2011-05-02 15:55:00 · 333 阅读 · 0 评论 -
宏定义里的 do{} while (0)以及我的认识
<br /><br />无论是Linux内核还是其他著名的c、c++库里都能见到 do{} while (0)<br />这样的写法看似没有意义,其实出自名家之手,是在宏定义里使用的<br />以前就了解到在程序里使用宏定义的函数后面的分号容易导致问题,今天算是深入认识了<br />先看一个简单的宏<br />#define SAFE_FREE(p) do {free(p);p=NULL;} while(0)<br />如果去掉了do... while(0)<br />即定义SAFE_FREE(p)为<br原创 2011-05-02 23:32:00 · 562 阅读 · 0 评论 -
内存对齐.结构体对齐
<br />gcc 中的"__attribute__ ((packed))"<br /> <br /><br />__attrubte__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。<br /><br />#define __u8 unsigned char<br />#define __u16 unsigned short<br /><br />/* __attribute__ ((packed)) 的位置约束是放于声明的尾部“;”之前转载 2011-05-02 22:43:00 · 13534 阅读 · 4 评论 -
volatile keyword
<br />http://blog.21ic.com/user1/2949/archives/2007/35599.html一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: <br /> 1). 并行设备的硬件寄存器(如:状态寄存器) <br /> 2). 一个中断服务子程序中会访问到的非自动变量转载 2011-05-02 16:41:00 · 349 阅读 · 0 评论 -
进程上下文和中断上下文
<br />进程上下文是一种内核所处的操作模式,此时内核代表进程执行--例如执行系统调用或运行内核线程。<br />上下文context: 上下文简单说来就是一个环境,相对于进程而言,就是进程执行时的环境。具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等。<br /> 一个进程的上下文可以分为三个部分:用户级上下文、寄存器上下文以及系统级上下文。<br /> 用户级上下文: 正文、数据、用户堆栈以及共享存储区;<br /> 寄存器上下文: 通用寄存器、程序寄存器转载 2011-05-02 23:35:00 · 442 阅读 · 0 评论 -
GNU C 与ANSI C 相比,独特的9个地方
<br /><br />we found many interesting code in Linux Kenrel, like a zero array in the struct, __attribute__ words, what are they?<br />in fact they are the extent Stand C, which anoter name should be GNU C.<br /> <br /> <br />below from :<br />http://hi.bai转载 2011-05-02 15:48:00 · 365 阅读 · 0 评论 -
gcc中的#和##操作符以及调试宏
<br />gcc中的#和##操作符以及调试宏<br /> <br />from<br />http://hi.baidu.com/deep_pro/blog/item/0c297a1e1aa75d1540341746.html<br /> <br /><br />gcc在标准c上作了很多扩展,而Linux内核代码也依赖gcc的一些特性,这样限制了使用其他编译器编译内核<br />gcc本身又支持多种cpu构架,我觉得这样也是Linux的自我保护<br />#是字符串化操作符,可以把当前内容转换为字符串<b原创 2011-05-02 23:28:00 · 592 阅读 · 0 评论