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);
 }