- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 linux内核定时器
linux/timer.h头文件中定义了timer_list来描述一个内核定时器struct timer_list { /* * All fields that change during normal runtime grouped to the * same cacheline */ struct list_head entry;//双向链表元素,用于将多个定时器连接成一条双向
2013-03-31 09:35:12 823
转载 C语言中的typeof关键字
原文地址http://bbs.chinaunix.net/thread-3595195-1-1.html另一种引用一个表达式类型的方法就是使用typeof,使用这个关键字的语法看上去有点像使用sizeof,但从本质上讲,它更像是使用typedef定义一个类型名称。可以使用表达式或是一个类型名来引用类型。比如下面是一个使用表达式的例子:typeof (x[0](1
2013-03-30 21:18:11 3120
原创 linux内核链表操作
与linux链表有关的操作定义在linux/list.h链表头:struct list_head { struct list_head *next, *prev;};该结构体为链接结构中的成员,这样将链表的指针域与链表的数据域分开链表头的初始化1.#define LIST_HEAD_INIT(name) { &(name), &(name) }#define LIST_HE
2013-03-30 20:52:36 592
原创 linux内核内存分配
1 kmalloc和 vmalloc 都是以字节为单位分配内存 kmalloc分配的内存都是位于3GB~high memory之间,这段内核空间与物理内存一一映射,即差为一固定值,vmalloc 分配的内存空间在VMALLOC_START~4GB之间,虚拟地址上连续物理地址上不一定连续. 一般情况下,只有硬件设备才需要物理地址连续的内存,因为硬件设备往往存在于MMU之外,不
2013-03-30 18:02:16 998
原创 野指针
以前不小心,用到野指针也只不过会让程序贲快,或者别的什么的,今天真不容易呀,尽然有了野指针prinft(const char ,[arg])的功能都失常了,该函数尽然不接受参数为变量了!找了n久才发现竟然是他的问题,简直可恶!
2013-03-24 17:53:50 501
原创 几个越界的问题
#include #include int main(){ char a[1000]; int i; for(i=0; i<1000; i++) { a[i] = -1-i; } printf("%d",strlen(a)); return 0;} 上述结果255,在计算机种采用补码的方式存储负数,补码即为原码取反加1,故-1的补码为0xff,同时可以得到一结
2013-03-17 21:57:32 870
转载 mkinitrd 与 mkinitramfs
在进行内核编译时,需要进行制作initrd.img.在Fedora下面一般是用mkinitrd,而在Ubuntu/Debian下是用mkintramfs.它们的用法稍微有些不一样,如下所示:mkinitrd /boot/initrd.img 2.6.26mkintramfs 2.6.26 -o /boot/initrd.img
2013-03-14 10:41:31 1465
原创 ubuntu设置为静态ip无法上网
为与开发板连接的便利,将ubuntu的ip设置为静态,主要是DNS设置的问题,解决办法有一下两个:1sudo vim /etc/network/interfaces 配置静态ipauto eth0iface eth0 inet static address 192.168.1.155 netmask 255.255.255.0 gateway 192.168
2013-03-14 09:10:06 1109
转载 Linux下 tar.xz格式文件的解压方法
原文地址http://blog.csdn.net/silvervi/article/details/6325698在很多找到的软件都是tar.xz的格式的,xz 是一个使用 LZMA压缩算法的无损数据压缩文件格式。 和gzip与bzip2一样,同样支持多文件压缩,但是约定不能将多于一个的目标文件压缩进同一个档案文件。 相反,xz通常作为一种归档文件自身的压缩格式,例如使用tar或cpi
2013-03-14 08:11:07 867
转载 如何 make menuconfig 和 make xconfig
在ubuntu系统中,要编译内核,还需要安装一系列相应的工具才行。这篇文章,正是针对这一过程的一次记录,目标是可以通过 make menuconfig 或 make xconfig 配置内核参数--------------------------------------------------------------参考apt用法参考 《 UbuntuHelp:AptGet/How
2013-03-13 22:37:55 1309
原创 C语言中的布尔值
C89中没有定义布尔类型,只能int flag = 0;flag = 1;然而flag可能被赋予别的值,或者#define TRUE 1#define FALSE 0flag = TRUE ;...flag = FALSE;在C99中定义了Bool型,故这一版本中,布尔变量可以申名为:_Bool flag;_Bool是整数类型,更准确的说是无符号整型,但是和一般整形不同,只能被赋值
2013-03-13 07:47:54 1748
原创 V + = e不等价于 v = v + e
计算v + = e只会求一次v的值,而计算 v = v + e则会求两次v的值。在后一种情况下,对v的求职可能的副作用会出现两次。在下面的例子中,i值自增一次。a[i++] += 2;a[i++] = a[i++] +2i的值在别处被修改和使用了,因此上述语句的结果是未定义的。i的值可能被修改两次,但我们无法确定结果会发生神马!
2013-03-12 21:59:25 956
原创 函数
一程序中的顺序点顺序点:执行过程中修改变量值的最晚时刻,在程序达到顺序点的时候,之前所做的一切操作必须反映到后续的访问中。每个完整表达式结束时 &&, ||, ?:, 以及逗号表达式的每个运算对象计算之后 函数调用中对所有实际参数的求值完成之后(进入函数体之前)#include int main(){ int k = 2; int a =
2013-03-12 15:57:19 455
原创 内存管理
一动态内存分配包含在malloc所分配的是一块连续的内存,以字节为单位,并且不带任何的类型信息 free用于将动态内存归还系统void* malloc(size_t size);void free(void* pointer);参数为0时,没有任何作用。虽然malloc申请到的内存可能比实际的大,然而是不定的不能利用编译器的这一行为。如果分配时找不到足够大的内存块会返
2013-03-12 15:37:54 507
原创 数组与指针2
数组类型:数组类型包括数组元素类型及数组大小int array[5]的类型为int[5]定义数组类型:c中通过typedef为数组类型重命名:typedef type(name)[size]之后可以利用该类型定义数组:typedef int(aint5)[5];aint5 array;//定义了一个int[5]的数组数组指针:数组指针本身是一个指针用于
2013-03-09 20:23:51 316
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人