Chinaunix

标题: linux 链表list_head 疑问 [打印本页]

作者: linuxlearning4R    时间: 2015-12-21 09:33
标题: linux 链表list_head 疑问

linux系统中list.h在以下这两个宏

#define LIST_POISON1  ((void *) 0x00100100)
#define LIST_POISON2  ((void *) 0x00200200)

这两个定义的作用是什么呢?
这两个值有什么特别的含义吗???用别的值可以吗???

这两个值和系统相关的吗???
如果要把list_head挪到Windows下使用,那么还可以用这两个值吗?
作者: xialufeifei    时间: 2015-12-24 09:02

删除结点entry,将entry的prev指向LIST_POISON1,next指向LIST_POISON2,指向LIST_POISON不会引起缺页错误。
作者: linuxlearning4R    时间: 2015-12-24 21:31
xialufeifei 发表于 2015-12-24 09:02
删除结点entry,将entry的prev指向LIST_POISON1,next指向LIST_POISON2,指向LIST_POISON不会引起缺页错误。


那么直接将prev next赋为NULL  这样不可以吗
作者: xialufeifei    时间: 2015-12-25 09:31
本帖最后由 xialufeifei 于 2015-12-25 09:33 编辑

回复 3# linuxlearning4R
我查了下资料,是表明被删掉的,而不是初始化的,刚刚初始化那么是等于NULL,删掉的则指向一个预定义好的地址,不知道是不是。


   
作者: windoze    时间: 2015-12-26 22:47
我觉得有必要提醒一下初学者,Linux kernel里的代码不是日常模仿的对象,那些代码是工作在操作系统内核这么一个非常特殊的环境下的,和一般应用程序完全不是一码事,你照着那里面的代码抄很快就会掉沟里。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2