warning fix: tests urcutorture for NetBSD 5
[urcu.git] / urcu / list.h
index db7685fca289b5c3d48881a51fdfc570283d9dfc..04dad80929ef1d6f2ec1a3adcd302d8f2f962533 100644 (file)
@@ -1,21 +1,26 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+/*
+ * Copyright (C) 2002 Free Software Foundation, Inc.
+ * (originally part of the GNU C Library)
+ * Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+ *
+ * Copyright (C) 2009 Pierre-Marc Fournier
+ * Conversion to RCU list.
+ * Copyright (C) 2010 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
 
 #ifndef _CDS_LIST_H
 #define _CDS_LIST_H    1
@@ -80,6 +85,14 @@ cds_list_del (struct cds_list_head *elem)
   __cds_list_del (elem->prev, elem->next);
 }
 
+/* Remove element from list, initializing the element's list pointers. */
+static inline void
+cds_list_del_init (struct cds_list_head *elem)
+{
+       cds_list_del(elem);
+       CDS_INIT_LIST_HEAD(elem);
+}
+
 /* delete from list, add to another list as head */
 static inline void
 cds_list_move (struct cds_list_head *elem, struct cds_list_head *head)
@@ -113,12 +126,15 @@ cds_list_splice (struct cds_list_head *add, struct cds_list_head *head)
     }
 }
 
-
 /* Get typed element from list at a given position.  */
 #define cds_list_entry(ptr, type, member) \
   ((type *) ((char *) (ptr) - (unsigned long) (&((type *) 0)->member)))
 
 
+/* Get first entry from a list. */
+#define cds_list_first_entry(ptr, type, member) \
+       cds_list_entry((ptr)->next, type, member)
+
 
 /* Iterate forward over the elements of the list.  */
 #define cds_list_for_each(pos, head) \
This page took 0.02316 seconds and 4 git commands to generate.