drd: Remove drd/drd_list.h again because of its GPLv2 license.
For more info about Valgrind source code licensing, see also:
[1] Top level README line 51.
[2] http://valgrind.org/docs/manual/manual-intro.html#manual-intro.overview, last paragraph.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12356 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/drd/drd_segment.c b/drd/drd_segment.c
index 40db038..32a74c3 100644
--- a/drd/drd_segment.c
+++ b/drd/drd_segment.c
@@ -36,7 +36,7 @@
/* Global variables. */
-struct list_head DRD_(g_sg_list) = LIST_HEAD_INIT(DRD_(g_sg_list));
+Segment* DRD_(g_sg_list);
/* Local variables. */
@@ -73,10 +73,10 @@
creator_sg = (creator != DRD_INVALID_THREADID
? DRD_(thread_get_segment)(creator) : 0);
- sg->g_list.next = NULL;
- sg->g_list.prev = NULL;
- sg->thr_list.next = NULL;
- sg->thr_list.prev = NULL;
+ sg->g_next = NULL;
+ sg->g_prev = NULL;
+ sg->thr_next = NULL;
+ sg->thr_prev = NULL;
sg->tid = created;
sg->refcnt = 1;
@@ -126,7 +126,11 @@
sg = VG_(malloc)("drd.segment.sn.1", sizeof(*sg));
tl_assert(sg);
sg_init(sg, creator, created);
- list_add(&sg->g_list, &DRD_(g_sg_list));
+ if (DRD_(g_sg_list)) {
+ DRD_(g_sg_list)->g_prev = sg;
+ sg->g_next = DRD_(g_sg_list);
+ }
+ DRD_(g_sg_list) = sg;
return sg;
}
@@ -145,7 +149,12 @@
s_segments_alive_count--;
tl_assert(sg);
- list_del(&sg->g_list);
+ if (sg->g_next)
+ sg->g_next->g_prev = sg->g_prev;
+ if (sg->g_prev)
+ sg->g_prev->g_next = sg->g_next;
+ else
+ DRD_(g_sg_list) = sg->g_next;
DRD_(sg_cleanup)(sg);
VG_(free)(sg);
}