摘要: __attribute__ 可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。__attribute__ 后面紧跟一对括号,里面是相应的__attribute__参数。__attribute__ 语法格式为:__attribute__ ((attribute-list)) 位置为:放于函数等声明尾部的 ; 之前。函数属性(Function Attribute)函数属性帮助开发者把一些特性添加到函数声明中,可以使编译器在错误检查方面的功能更强大。__attribute__机制也很容易同非GNU应用 阅读全文
posted @ 2013-01-04 18:45 zaleilynn 阅读(704) 评论(0) 推荐(0) 编辑
摘要: GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。__attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__参数。__attribute__语法格式为:__attribute__ ((attribute-list))其位置约束为:放于声明的尾部“;”之前。函数属性(Function Attribute) 阅读全文
posted @ 2013-01-04 18:43 zaleilynn 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 内核使用了大量不同的宏来标记具有不同作用的函数和数据结构。如宏__init、__devinit等。这些宏在include/linux/init.h头文件中定义。编译器通过这些宏可以把代码优化放到合适的内存位置,以减少内存占用和提高内核效率。下面是一些常用的宏:l__init标记内核启动时使用的初始化代码,内核启动完成后不再需要。以此标记的代码位于.init.text内存区域。它的宏定义是这样的:#define __init __attribute__ ((__section__ (".text.init")))l__exit标记退出代码,如果驱动不是以模块存在的,则该用法无 阅读全文
posted @ 2013-01-04 18:33 zaleilynn 阅读(650) 评论(0) 推荐(0) 编辑
摘要: 函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别。 malloc()函数有一个参数,即要分配的内存空间的大小: void *malloc(size_t size); calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。 void *calloc(size_t numElements,size_t sizeOfElement); 如果调用成功,函数malloc()和函数calloc()都将返回所分配的内存空间的首地址。 函数malloc()和函数calloc(... 阅读全文
posted @ 2013-01-04 18:04 zaleilynn 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 今天在看sheepdog源代码的时候,发现它的log系统使用了liburcu这个库里面的函数,详细调研了一下。读取拷贝更新,意思就是说,在要进行update的时候,先保留旧数据,然后替换新数据;再等待旧数据无人使用后,删除旧数据。从它的思想可以看到它写入数据的开销比较大,因为要等待所有读取线程都不在使用旧数据为止。这种结构比较适合用在很多线程读,但只有少量写的地方。Linux核心提供了基于RCU的锁函数。但在用户态下,需要自己调用其他库,比如liburcu这个库。liburcu is a LGPLv2.1 userspace RCU (read-copy-update) library. Th 阅读全文
posted @ 2013-01-04 15:47 zaleilynn 阅读(2756) 评论(0) 推荐(0) 编辑
摘要: Linux下这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换而且,inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。inet_pton函数原型如下[将"点分十进制" -> "整数"]#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>int inet_pton(int af, const char *src, void *dst);//这个函数转换字符串到网络地 阅读全文
posted @ 2013-01-04 14:00 zaleilynn 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 小编今天为大家介绍一个不用找adhoc来连接wifi的方法,虚拟路由器 是款可以将无线网卡虚拟成 WiFi 热点的工具,满足没有无线路由器时移动设备的需要。是的,出门可以不用带无线路由器了,支持 window7/ 2008 R2。 首先,我们要下载虚拟路由器V1.1.0下载地址 1、修复能识别宽带连接等所有连接; 2、增加了创建wifi的提示窗口; 3、修改界面,默认放置在右下角; 下载安装后,只需要设置选择要共享的网络 >热点名称 > 设置热点密码 > 启动虚拟路由器。 密码需要需8位以上,WPA2 加密,如果仅有一个无线网卡设备,是不需要选择共享网络的。很快,就可以在移动 阅读全文
posted @ 2013-01-04 11:00 zaleilynn 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 在configure.ac中AC_CHECK_LIB(pthread, pthread_create) 前面一个为库的名字,后面一个是库中函数的名字AC_CHECK_HEADERS(stdlib.h string.h pthread.h) 检查是否有头文件修改了configure.ac之后要运行aclocal 和autoconf 阅读全文
posted @ 2013-01-04 10:48 zaleilynn 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了。 在本文中,将给大家介绍如何使用 autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用“./configure”,“make”,“make install”就可以把程序安装到Linux系统中去了。这将特别适合想做开放源代码软件的程序开发人员,又或如果你只是自己写些小的Toy程序,. 阅读全文
posted @ 2013-01-04 10:41 zaleilynn 阅读(316) 评论(0) 推荐(0) 编辑