1、一个ICMP协议的Ping程序,调试了一天,终于调试出来,竟然错在有一处宏定义#define后面加了分号,导传输的致数据大小一直不对。
2、前几天写一个用epoll机制的服务器小程序,用到hlist,但是用户空间没有list库,需要参考内核。我在网上找下载了一篇,直接用在我的源码中。结果当客户端退出时服务器端运行出错,查找原因是下载的hlist.h中的删除哈希链节点中用到了指针指向两个内存处:
entry->next = LIST_POISON1;
entry->prev = LIST_POISON2;
我将它们的定义给改过之后就可以了。
#define LIST_POISON1 NULL// 原先为((void *) 0x00100100),结果程序出错,改为NULL就可以,可能是内核与用户空间不一致
#define LIST_POISON2 NULL// 原先为((void *) 0x00200200),结果程序出错,改为NULL就可以,可能是内核与用户空间不一致