- 博客(63)
- 资源 (3)
- 收藏
- 关注
原创 Linux内核源码分析(3)——compiler-gcc[x].h分析
这部分简要介绍一下不同版本gcc编译器特有的头文件。这里只介绍gcc3和gcc4的头文件。 1、GCC3 #if __GNUC_MINOR__ = 3 # define __used __attribute__((__used__)) #else # define __used __attribute__((__unused__)) #endif #if __GNUC_MINOR__ >= 4 #define __must_check __attribute__((warn_unused
2010-07-22 01:18:00
3950
原创 Linux内核源码分析(2)——compiler-gcc.h分析
在第一节分析了compiler.h文件,定义了当编译器为GCC时包含文件compiler-gcc.h。该文件是gcc编译器通用的定义。现在开始解析该文件的compiler-gcc.h。 /* Optimization barrier */ /* The "volatile" is due to gcc bugs */ #define barrier() __asm__ __volatile__("": : :"memory") barrier函数在之前介绍过了,就是做内存栅栏,它
2010-07-22 00:58:00
1334
原创 Linux内核源码分析(1)——compiler.h分析(3)
2 内核代码有效的定义 第一个部分介绍了汇编代码不使用的定义。下面开始介绍一下对内核代码有效的定义。 /* * Allow us to mark functions as 'deprecated' and have gcc emit a nice * warning for each use, in hopes of speeding the functions removal. * Usage is: * int __deprecated foo(void) */ #ifn
2010-07-19 00:22:00
975
原创 Eclipse CDT + QEMU 调试linux内核
注:本文为转贴,并非原创。 感谢作者:YangNas 以下为原文,原封未动。 本文参考自: http://issaris.blogspot.com/2007/12/download-linux-kernel-sourcecode-from.html (由于blogspot目前被和谐,所以大家需要翻墙才能查看原文。) 有关调试的好处我想大家都不言自明了。本文章摘自原文,但加入了原文中没有说明的一些细节内容。 我的系统环境是:Ubuntu 9.10 + eclipse-cpp-galileo-SR1-lin
2010-07-18 22:22:00
709
原创 Linux内核源码分析(1)——compiler.h分析(2)
1.2 内核模块的宏定义 接下来是宏__KERNEL__的判断,后续部分的内容是内核模块相关的宏定义,不用于用户进程的代码。 #ifdef __GNUC__ #include #endif 这个部分说明,如果采用的是GNU C的编译器,包含gcc相关的头文件compiler-gcc.h。这个文件的分析在后续的文章中详细描述。 #define notrace __attribute__((no_instrument_function)) 宏notrace的定义,这个宏用于修饰函数,说
2010-07-16 01:04:00
823
原创 Linux内核源码分析(1)——compiler.h分析(1)
Linux的内核源码都会包含文件linux/compile.h,所以先分析该文件内的内容,作为开篇。 1 汇编编译时不定义的内容 该文件的第一个内容是对宏__ASSEMBLY__的判断,这个宏的作用是避免在进行汇编编译的时候,不定义后续相关内容。这个宏通过在编译器中用-D选项中加入,参数AFLAGS也包含该宏定义。在汇编时编译器会定义__ASSEMBLY__为1。 #ifndef __ASSEMBLY__ 1.1 Sparse工具检测使用的属性定义
2010-07-06 22:05:00
717
原创 Linux initial RAM disk(initrd)介绍
initrd是为了支持linux启动的两个阶段,而设计的临时根文件系统。通常,initrd内包含多种可执行文件和驱动库,用于实现最后挂载真实的根文件系统,并在之后卸载临时的initrd根文件系统并释放相应的内存。在很多嵌入式的Linux系统中,没有使用其他真实的根文件系统,而采用initrd做为最后使用的根文件系统。 initrd被绑定到内核,并伴随内核启动过程被加载。initrd内部包含了必要的可执行文件和系统文件以支持Linux第二阶段的启动过程。 创建initial RAM disk
2010-06-28 22:45:00
2393
原创 『研发小作坊的正规之路系列』之软件开发规范之道——序
再好的语言特性和蹩脚的花俏技巧,都远不如严格的软件开发规范来的有效。 为什么想起来写些关于软件开发规范的内容呢。由于这些年所在的公司规模比较小,平时软件开发的过程中很少注重一些方法论,这样那样的开发规范往往都被迫切的市场需求打的支离破碎。并且团队里面都是些年轻人,经验都不丰富,一般都只关注近期的交付物,是否能及时的完成任务,比较少关注后续的延续性。那为什么要在这个时候提起软件规范方面的东西呢?随着公司的发展,产品数量的 增加,维护的工作也在成指数级别的增加,新产品的开发总是从头再来,不关注任何的复用,导致每
2010-06-25 22:12:00
619
原创 研发小作坊的正规之路(序)
(该博客文章在个人主页同步上线,评论请前到http://www.mythfish.com) 最近一直希望工作能有所突破,一直在寻找一个突破点,也顺便总结过去的经验,继续前行。最近也对软件工程比较感兴趣,想结合所学的知道到实际工作中。 由于一毕业就到了小公司呆着,对小公司的做事方法和方式都有些了解。希望从我个人的角度观察和思考作坊式的研发模式,以及如何改进研发方法对作坊的研发效率
2009-04-15 00:06:00
661
原创 大公司和小公司在员工的责任心上的不同
(该博客文章在个人主页同步上线,评论请到http://www.mythfish.com)最近和一旧同事聊天,提到关于员工的责任心问题。我们探讨了一下大公司和小公司对员工责任心要求上的不同。一般而言在大公司,制度流程都比较明确,员工的工作范畴也很明确。大公司的员工只要在规定的时间内保质保量的完成领导安排的任务指标,就算很有责任心了,可以说是履行了员工的职责。但在小公司就有所区别了,小公司
2009-03-30 00:15:00
830
原创 ATL对窗口的封装
ATL包装了Win32 API中与创建和操作“窗口、对话框以及windows控制”有关的部分。ATL窗口类还包含了诸如子类化和超类化这样的高级特性。一、Windows应用程序的结构入口点——_tWinMain,它提供应用程序的HINSTANCE、命令行参数和指示如何显示主窗口的标志。调用RegisterClass注册主窗口类。调用CreateWindow创建主窗口。调用ShowWindow和Upd
2009-03-04 22:01:00
1096
转载 CString ,BSTR ,LPCTSTR之间关系和区别
本文转自(http://www.cnblogs.com/goldenocean/archive/2007/01/14/620104.html) CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法。type
2009-02-05 18:31:00
546
原创 BSD net源码分析(4)──环回接口
这节介绍一下环回接口一、接口的初始化环回接口的作用是直接把输出队列的分组直接发送到输入队列。没用硬件设备,环回伪设备在main函数中通过环回接口的pdevinit结构中的pdev_attach指针直接调用loopatttach时初始化。voidloopattach(n) int n;{ register struct ifnet *ifp = &loif;#ifdef lint
2008-11-23 22:42:00
941
原创 BSD net源码分析(3)──SLIP接口
本节将介绍SLIP接口一、SLIP接口概述SLIP接口通过一个标准的异步串行线与一个远程系统通信。通过SLIP帧为上层承载IP分组。每个分组使用0xc0来隔开,如果分组中出现该字符,需要该字符前填充字符0xdb,并将该字符转换为0xdc。如果字符中出现0xdb,在字符前填充0xdb,并替换字符为0xdd。SLIP接口依靠一个异步串行设备驱动器来发送和接收数据,驱动器称为tty。tty子系统包括一个
2008-11-23 18:19:00
2290
原创 多clinet的C/S程序设计──样列代码
/* tcp_server.c*/#include #include #include #include #include #include #include #define MAXPENDING 5 /* max client requests */#define BUFFSIZE 32int die(char *mess) {fprintf(stdout, mess); return 1;}i
2008-11-17 22:19:00
955
原创 BSD net源码分析(2-4)
四、以太网接口的配置系统提供了系统调用ioctl函数为一个进程访问一个设备的标准系统所不支持的特性。int ioctl(int fd, unsigned long com,...);fd 是一个描述符,通常是一个设备和网络连接,com 指示ioctl函数所要执行的命令类型,第三个参数是可变的,由第二个参数决定他的内容。进程通过指定接口的fd,访问接口的特性。以下是网络接口所使用的几个命令以及对应的
2008-10-27 22:49:00
947
原创 BSD net源码分析(2-3)
三、以太网接口数据输出当网络层协议调用接口ifnet结构体中的if_output时,开始输出。所有以太网设备的if_output都指向ether_output函数,该函数封装以太网的头部,并将数据输入到接口的发送队列。(1)验证接口状态:主要是接口状态的校验,判断接口是否启用。/******************************************************/ i
2008-10-26 21:35:00
906
原创 MGCP协议分析——媒体能力协商
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE
2008-10-24 17:43:00
1051
原创 BSD net源码分析(2-2)
二、以太网接口接收数据帧 当接口接收到发送给该接口的单播地址和广播地址的帧,帧可用时,触发一个中断,并且内核调用驱动函数函数leintr()。 leintr()函数内部根据硬件寄存器的值,判断是什么中断,如果是LE_RINT状态,调用lerint处理接收的数据,如果是LE_TINT,调用lexint做输出数据处理。 其他的状态,程序会更新接口的统计,并调用lereset重设接口
2008-10-22 18:11:00
1035
原创 BSD net源码分析(2-1)
本节介绍以太网接口相关内容一、以太网接口的初始化 内核初始化函数cpu_startup查找连接的网络设备,当识别到网络后,设备专用的初始化函数被调用。 设备驱动程序为每个接口初始化一个专用的ifnet结构,并调用if_attach把这个结构插入到接口链表中。 le_softc结构存储了以太网接口的所有信息,其中的第一个成员arpcom包含了所有以太网接口通用的信息。其他部分为以太
2008-10-22 18:09:00
1214
原创 BSD net源码分析(1)
本节从ifnet结构开始解析,ifnet结构包含了接口的通用信息,每个接口都以该结构开始,末尾附带不同接口的特殊信息。系统初始化的时候将所有接口的ifnet结构构成一个链表。struct ifnet { char *if_name; /* name, e.g. ``en or ``lo */ struct ifnet *if_next;
2008-10-20 20:07:00
1013
原创 IPv6即将到来
看到新闻:Cisco、Atmel和SIC S近日共同发布了uIPv6,世界上最小的开发源码兼容IPv6协议栈,这套协议栈适用于开发源码的Contiki嵌入式操作系统。并且很多公司都在为IPv6做准备了,是个机遇。
2008-10-19 18:41:00
764
原创 多clinet的C/S程序设计
(摘抄自:TCP/IP 应用程序的通信连接模式 http://www.ibm.com/developerworks/cn/aix/library/0807_liugb_tcpip/index.html)(注:代码实现可以在这里找到http://blog.youkuaiyun.com/mythfish/archive/2008/11/17/3321789.aspx)一、连接建立(1)利用一个clinet连接一个
2008-08-01 13:09:00
1495
转载 编写可移植C/C++程序的要点
(该文转自 http://www.chinaunix.net 作者:帅的不能再输啦 )1.分层设计,隔离平台相关的代码。就像可测试性一样,可移植性也要从设计抓起。一般来说,最上层和最下层都不具有良好的可移植性。最上层是GUI,大多数GUI都不是跨平台的,如Win32 SDK和MFC。最下层是操作系统API,大多部分操作系统API都是专用的。 如果这两层的代码散布在整个软件中,那么这个软件的
2008-05-16 23:51:00
500
原创 《高质量程序设计艺术》学习笔记(一)
一、软件质量的定义:软件与需求之间的符合程度,或者说是软件满足客户或用户的需求或预期的程度。质量、时间和成本是衡量所有软件项目成功与否的3个核心要素。使用中的质量(quality in use):用户如何感知软件,程序崩溃外部质量属性(external quality attribute):运行软件确定的方方面面内部质量属性(internal quality attribute):通过确定而不是运
2008-04-15 19:50:00
1244
转载 VC7/VC8开发的库在VC6中的使用问题
文章转自(http://blog.youkuaiyun.com/freefalcon/archive/2006/11/30/1421662.aspx)现在,微软一些新的SDK基本上都是用VC7/VC8(即VS .NET 2003/VS 2005)来开发的,当我们用VC6使用这些库的Debug版本时就会发生链接错误,对于我们自己用VC7/VC8开发静态库或动态库也存在同样的问题,这主要是由于VC7/VC8使
2008-03-27 09:38:00
711
原创 UBUNTU安装配置笔记一点点
1、rhythmbox音乐播放软件歌曲文件名乱码问题原因:mp3文件的属性编码格式引起的解决:转换格式代码:mid3iconv -e GBK *.mp3未安装的先安装软件python-mutagen2、mplayer无法播放RMVB问题原因:缺少相应的codes解决:安装相应的codes(1)采用cn99的源的用户,直接安装。代码:sudo apt-get install w32codecs(2
2007-10-20 18:32:00
727
转载 查找字符串的哈希方法(zz)
// RS Hash Function unsigned int RSHash( char * str) { unsigned int b =
2007-08-05 15:16:00
1033
原创 文件操做flag
“rt” 只读打开一个文本文件,只允许读数据 “wt” 只写打开或建立一个文本文件,只允许写数据 “at” 追加打开一个文本文件,并在文件末尾写数据 “rb” 只读打开一个二进制文件,只允许读数据 “wb” 只写打开或建立一个二进制文件,只允许写数据 “ab” 追加打开一个二进制文件,并在文件末尾写数据 “rt+” 读写
2007-04-21 22:27:00
1219
原创 SDP简要解析
1.概述SDP也是MMUSIC工作组的一个产品,在MBONE内容中用得很多。其目的就是在媒体会话中,传递媒体流信息,允许会话描述的接收者去参与会话。SDP基本上在internet上工作。他定义了会话画描述的统一格式,但并不定义多播地址的分配和SDP消息的传输,也不支持媒体编码方案的协商,这些功能均由下层传送协议完成.典型的会话传送协议包括:SAP(Session Announcement Prot
2006-12-28 16:08:00
4829
转载 串口编程函数
isalnum(测试字符是否为英文或数字) 相关函数 isalpha,isdigit,islower,isupper 表头文件 #include 定义函数 int isalnum (int c) 函数说明 检查参数c是否为英文字母或阿拉伯数字,在标准c中相当于使用“isalpha(c) || isdigit(c)”做测试。 返回值 若参数c为字母或数字,则返回TRUE,否则返回NULL(0)。 附
2006-04-22 16:04:00
1558
转载 CRC算法与实现(ZZ)
CRC算法与实现 bhw98(原作)转自优快云 摘要: 本文首先讨论了CRC的代数学算法,然后以常见的CRC-ITU为例,通过硬件电路的实现,引出了比特型算法,最后重点介绍了字节型快速查表算法,给出了相应的C语言实现。 关键词: CRC, FCS, 生成多项式, 检错重传 引言 CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验
2006-04-22 15:43:00
1565
转载 FIFO Operations (ZZ)
FIFO OperationsI/O operations on a FIFO are essentially the same as for normal pipes, with once major exception. An ``open system call or library function should be used to physically open up a ch
2006-04-18 23:24:00
943
转载 DEBIAN 下安装nfs服务器以及配置简单方法(做了些修改)
安装:#apt-get install nfs-common portmap(客户端)#apt-get install nfs-kernel-server nfs-common portmap(服务器)配置安装好NFS服务器后,/etc下会有一个NFS的配置文件exports,初次配置时此文件是空的,需要向该文件中添加内容。此文件的格式在exports(5)中,具体可以man一下,
2006-04-06 12:17:00
6923
MQTT协议,可以用于实现Android的push功能。
2011-06-21
RFC2988 计算TCP的重发定时器
2009-06-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人