
程序设计
文章平均质量分 78
shyodx
这个作者很懒,什么都没留下…
展开
-
Linux C SQLite3 编程
SQLite3 SQLite是一个轻量级的数据库。和常用的MySQL大同小异。和MySQL相比,数据类型基本一样,只是sqlite的指令都是以"."开头(如:mysql中查看当前有哪些数据库是“show databases",而sqlite中是".databases")。当然,SQL语句都是一样的语法规则。Host System: Archlinuxgcc: 4.6.1 2原创 2011-10-24 21:15:24 · 2065 阅读 · 0 评论 -
container_of -- 巧妙的宏定义
内核中的 container_of() 宏定义container_of() 宏的功能就是通过结构体中的一个元素,来找到这个结构体的首地址。先来看看他的代码:// include/linux/kernel.h#define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member )原创 2011-11-29 21:04:48 · 742 阅读 · 0 评论 -
用堆栈做队列
程序中的临时变量都是存放在进程的堆栈中的,那么要实现队列,只需要在一次函数调用中不释放函数中的局部变量,然后让一个指针始终指向队列头,另一个指针始终指向队列的第二个成员就可以了。这时,就需要被调用的函数不能退出,那么它的所有局部变量就不会被释放。为了做一个例子,我们让一个函数递归调用它自身,知道满足一定条件以后,才能把堆栈中的函数取出来继续执行。当然,在现实中,更多的情况是某些进程因为原创 2011-12-13 19:45:43 · 684 阅读 · 0 评论 -
在enum中的宏定义
转自:http://bbs.chinaunix.net/thread-795201-1-1.html 今天在代码里看到有一点很奇怪的代码,代码定义了一个枚举类型,但是这个枚举类型没有变量名,而且在其中包含了宏定义,宏定义也是自己定义自己enum { exit_domain_nr,#define exit_domain_nr exit_domain_n转载 2012-02-24 20:26:33 · 2277 阅读 · 1 评论 -
PowerPC 堆栈
PowerPC 在处理器级别上是没有实现堆栈操作的,也就是说,在 PowerPC 架构中,没有专门的堆栈操作汇编命令。但事实上 PowerPC 又使用到了堆栈,比如在函数调用、传参、返回错误码等操作。 在讲 PowerPC 堆栈处理之前,先提一下要用到的某些寄存器。首先是32个通用寄存器 GPR0 ~ GPR31。据说这32个寄存器是64位的,但是高32位的访问方式不同,通常只用原创 2012-03-19 13:38:05 · 3434 阅读 · 0 评论 -
x86从 start_kernel 开始的中断初始化
以下主要看了 linux 3.2 中,从 start_kernel() 开始的一些跟中断有关的初始化代码,并做了一点点简单的分析。start_kernel() 在 init/main.c 中,其中和中断有关的大概就有这样一些函数:/* filename: init/main.c */467 asmlinkage void __init start_kernel(void)468 {原创 2012-04-13 21:45:04 · 2594 阅读 · 0 评论 -
结构体中的零长度数组
参考:http://hi.chinaunix.net/?uid-21744621-action-viewspace-itemid-48823struct node { int len; int array[];};这种零长度的的数组是为了方便结构体长度的动态扩展。一个 node 的结构体,它的长度并不包括 array[]。但是如果使用 ma原创 2012-04-19 10:18:31 · 1275 阅读 · 0 评论