<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[thomasCJ的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/thomasCJ</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; thomasCJ]]></copyright><item><title><![CDATA[__alignof__宏]]></title><link>https://blog.youkuaiyun.com/thomasCJ/article/details/5414809</link><guid>https://blog.youkuaiyun.com/thomasCJ/article/details/5414809</guid><author>thomasCJ</author><pubDate>Thu, 25 Mar 2010 10:52:00 +0800</pubDate><description><![CDATA[__alignof__(struct ipt_entry)   ====== 4(__alignof__(struct ipt_entry)-1) ======= 3~(__alignof__(struct ipt_entry)-1) ======== 0xfffffffc所以IPT_ALIGN( S ) 就是使 S 变为 4 对齐(取0，4，8，12，16等4的倍数）。]]></description><category></category></item><item><title><![CDATA[嵌入式C编程要点]]></title><link>https://blog.youkuaiyun.com/thomasCJ/article/details/4658895</link><guid>https://blog.youkuaiyun.com/thomasCJ/article/details/4658895</guid><author>thomasCJ</author><pubDate>Mon, 12 Oct 2009 16:10:00 +0800</pubDate><description><![CDATA[模块划分（1） 模块即是一个.c文件和一个.h文件的结合，头文件是对于模块接口的声明。（2） 某模块提供给其它模块调用的外部函数及数据需要在头文件中以extern声明。（3） 模块内的函数和全局变量需要冠以static关键字声明。（4） 永远不要在头文件中定义变量。定义变量和变量声明的区别在于“定义”会产生内存分配的操作，是汇编阶段的概念；而“声明”则只是告诉包含该]]></description><category></category></item><item><title><![CDATA[嵌入式C编程面试题]]></title><link>https://blog.youkuaiyun.com/thomasCJ/article/details/4658843</link><guid>https://blog.youkuaiyun.com/thomasCJ/article/details/4658843</guid><author>thomasCJ</author><pubDate>Mon, 12 Oct 2009 16:03:00 +0800</pubDate><description><![CDATA[预处理器（Preprocessor）1. 用预处理指令#define 声明一个常数，用以表明1年中有多少秒（忽略闰年问题）#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情： 1). #define 语法的基本知识（例如：不能以分号结束，括号的使用，等等） 2). 懂得预处理器将为你计算常数表达式]]></description><category></category></item><item><title><![CDATA[list_head实例]]></title><link>https://blog.youkuaiyun.com/thomasCJ/article/details/4152470</link><guid>https://blog.youkuaiyun.com/thomasCJ/article/details/4152470</guid><author>thomasCJ</author><pubDate>Tue, 05 May 2009 18:02:00 +0800</pubDate><description><![CDATA[#define __KERNEL__ //这样才能使用list.h，具体请看list.h  #include "list.h" /*由于我的机器上没有list.h,所以我拷贝了一个，如果你机器上有，应该是加#include */  #include    #include     #define MAX_USER_LEN 32  #define MAX_PAS_LEN ]]></description><category></category></item><item><title><![CDATA[  键盘上每个键作用!!!  （史上最全的）]]></title><link>https://blog.youkuaiyun.com/thomasCJ/article/details/4087776</link><guid>https://blog.youkuaiyun.com/thomasCJ/article/details/4087776</guid><author>thomasCJ</author><pubDate>Fri, 17 Apr 2009 16:44:00 +0800</pubDate><description><![CDATA[F1帮助F2改名F3搜索F4地址F5刷新F6切换F10菜单CTRL+A全选CTRL+C复制CTRL+X剪切CTRL+V粘贴CTRL+Z撤消CTRL+O打开SHIFT+删除永久删除删除删除ALT+ENTER属性ALT+F4关闭CTRL+F4关闭ALT+TAB切换ALT+ESC切换ALT+空格键窗口菜单CTRL]]></description><category></category></item><item><title><![CDATA[Linux slab 分配器剖析]]></title><link>https://blog.youkuaiyun.com/thomasCJ/article/details/4087072</link><guid>https://blog.youkuaiyun.com/thomasCJ/article/details/4087072</guid><author>thomasCJ</author><pubDate>Fri, 17 Apr 2009 13:55:00 +0800</pubDate><description><![CDATA[  本文将探索 slab 分配器背后所采用的思想，并介绍这种方法提供的接口和用法。内存管理器是实际的规范，但是其性能会受到内存碎片和内存回收需求的影响。现在，Linux®内核使用了源自于 Solaris的一种方法，但是这种方法在嵌入式系统中已经使用了很长时间了，它是将内存作为对象按照大小进行分配。本文将探索 slab分配器背后]]></description><category></category></item><item><title><![CDATA[Linux 常用C函数(内存控制篇) ]]></title><link>https://blog.youkuaiyun.com/thomasCJ/article/details/4086362</link><guid>https://blog.youkuaiyun.com/thomasCJ/article/details/4086362</guid><author>thomasCJ</author><pubDate>Fri, 17 Apr 2009 10:17:00 +0800</pubDate><description><![CDATA[Linux 常用C函数(内存控制篇)2007-03-22 11:43calloc（配置内存空间） 相关函数 malloc，free，realloc，brk            表头文件 #include             定义函数 void *calloc(size_t nmemb，size]]></description><category></category></item><item><title><![CDATA[printk实现分析（源码）]]></title><link>https://blog.youkuaiyun.com/thomasCJ/article/details/4083358</link><guid>https://blog.youkuaiyun.com/thomasCJ/article/details/4083358</guid><author>thomasCJ</author><pubDate>Thu, 16 Apr 2009 10:41:00 +0800</pubDate><description><![CDATA[一直都不清楚是怎么被定位到串口的，所以也非常想搞明白，因为以后可能把标准输入输出还原到键盘和显示器上去，所以决心自己再读一读源码了。不过内核用的打印函数printk完全是和stdin或stdout无关的，因为一开始到start_kernel函数刚开始进入内核就可以用printk函数了，而建立stdin和stdout是在init函数中实现的。有个问题，在我这里的代码中，建立stdin和std]]></description><category></category></item><item><title><![CDATA[C语言中的typedef问题]]></title><link>https://blog.youkuaiyun.com/thomasCJ/article/details/4083108</link><guid>https://blog.youkuaiyun.com/thomasCJ/article/details/4083108</guid><author>thomasCJ</author><pubDate>Thu, 16 Apr 2009 09:29:00 +0800</pubDate><description><![CDATA[function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key.com/storei]]></description><category></category></item><item><title><![CDATA[rb_tree(红黑树)]]></title><link>https://blog.youkuaiyun.com/thomasCJ/article/details/4072149</link><guid>https://blog.youkuaiyun.com/thomasCJ/article/details/4072149</guid><author>thomasCJ</author><pubDate>Tue, 14 Apr 2009 11:31:00 +0800</pubDate><description><![CDATA[#include #include #include #include enum RB_COLOR {BLACK = 0, RED = 1};//------------------------------------------------------------------int nodecount=0, nodecount2=0;//-----------------------------]]></description><category></category></item><item><title><![CDATA[struct sk_buff（2）]]></title><link>https://blog.youkuaiyun.com/thomasCJ/article/details/4068686</link><guid>https://blog.youkuaiyun.com/thomasCJ/article/details/4068686</guid><author>thomasCJ</author><pubDate>Mon, 13 Apr 2009 11:15:00 +0800</pubDate><description><![CDATA[ LINUX网络协议栈实现分析（－）SKBUFF的实现本文是我尝试分析LINUX网络协议栈实现的一系列文章中的第一篇，主要分析LINUX网络协议栈中SKBUFF的实现。分析以LINUX2.2.x为基础，同时也包括了相同的描述对象在LINUX2.4.x中的新变化。本文引用的代码的版本分别是：LINUX2.2.25，LINUX2.4.20。1 简介了解网络协议栈的人都知道，网络协议栈是一个有层次的软件]]></description><category></category></item><item><title><![CDATA[struct sk_buff（1）]]></title><link>https://blog.youkuaiyun.com/thomasCJ/article/details/4068653</link><guid>https://blog.youkuaiyun.com/thomasCJ/article/details/4068653</guid><author>thomasCJ</author><pubDate>Mon, 13 Apr 2009 11:08:00 +0800</pubDate><description><![CDATA[struct sk_buff 学习1.sk_buff是linux 网络内核里面最终要的数据结构了.存放要发送和接收的数据.头文件 linux/skbuff.h2.主要成员以及相关结构函数分为以下几类a.layout            struct sk_buff *next;    struct sk_buff *prev;    struct sk_buff_head* list;    方]]></description><category></category></item></channel></rss>