Print this page
3525 Persistent L2ARC

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/sys/list.h
          +++ new/usr/src/uts/common/sys/list.h
↓ open down ↓ 14 lines elided ↑ open up ↑
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  /*
  22   22   * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
  23   23   * Use is subject to license terms.
  24   24   */
       25 +/*
       26 + * Copyright 2013 Saso Kiselkov, All rights reserved.
       27 + */
  25   28  
  26   29  #ifndef _SYS_LIST_H
  27   30  #define _SYS_LIST_H
  28   31  
  29      -#pragma ident   "%Z%%M% %I%     %E% SMI"
  30      -
  31   32  #include <sys/list_impl.h>
  32   33  
  33   34  #ifdef  __cplusplus
  34   35  extern "C" {
  35   36  #endif
  36   37  
       38 +/*
       39 + * Please note that a list_node_t contains pointers back to its parent list_t
       40 + * so you cannot copy the list_t around once it has been initialized. In
       41 + * particular, this kind of construct won't work:
       42 + *
       43 + * struct { list_t l; } a, b;
       44 + * list_create(&a.l, ...);
       45 + * b = a;    <= This will break the list in `b', as the `l' element in `a'
       46 + *              got copied to a different memory address.
       47 + *
       48 + * When copying structures with lists use list_move_tail() to move the list
       49 + * from the src to dst (the source reference will then become invalid).
       50 + */
  37   51  typedef struct list_node list_node_t;
  38   52  typedef struct list list_t;
  39   53  
  40   54  void list_create(list_t *, size_t, size_t);
  41   55  void list_destroy(list_t *);
  42   56  
  43   57  void list_insert_after(list_t *, void *, void *);
  44   58  void list_insert_before(list_t *, void *, void *);
  45   59  void list_insert_head(list_t *, void *);
  46   60  void list_insert_tail(list_t *, void *);
↓ open down ↓ 21 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX