12 2012 档案

摘要:#ifndef _MYDBG_H_#define _MYDBG_H_static int dbg_switch = 0;static inline void open_dbg(void){ dbg_switch = 1;}static inline void close_dbg(void){ dbg_switch = 0;}static inline int test_dbg(void){ return dbg_switch;}/* fmt 必须是常量字符串 */#define dbg_printf(A,fmt,...) \do{\ if(A && dbg_switch... 阅读全文
posted @ 2012-12-29 21:43 庄庄庄 阅读(296) 评论(2) 推荐(0)
摘要:如何定义变长tlv结构体TLV是一种常用的用于通信的结构体格式。T表示tag,L表示length,V表示value。其中T和L是固定大小的,V是可变大小,L表示的是V的长度。通常用于结构化网络通信中的数据流。如0x3 3 'aa\0',0x3 5 'aaaa\0',其中0x3表示tag的值,3 or 5表示的是后面的字符串的长度。由于V是可变长度的,所以在定义TLV结构时,需要将V定义成为可变大小。可定义如下:struct TLV{ uint8_t tag; uint16_t len; char value[0];}__attribute__((packed)) 阅读全文
posted @ 2012-12-27 00:02 庄庄庄 阅读(1417) 评论(0) 推荐(0)
摘要:以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。 按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用,对个别本人稍觉不妥的地方作了一些小的修改,并对所有列出的系统调用附上简要注释。 其中有一些函数的作用完全相同,只是参数不同。(可能很多熟悉C++朋友马上就能联想起函数重载,但是别忘了Linux... 阅读全文
posted @ 2012-12-21 23:14 庄庄庄 阅读(220) 评论(0) 推荐(0)