Print this page
5045 use atomic_{inc,dec}_* instead of atomic_add_*

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/sys/refcount.h
          +++ new/usr/src/uts/common/fs/zfs/sys/refcount.h
↓ open down ↓ 79 lines elided ↑ open up ↑
  80   80  typedef struct refcount {
  81   81          uint64_t rc_count;
  82   82  } refcount_t;
  83   83  
  84   84  #define refcount_create(rc) ((rc)->rc_count = 0)
  85   85  #define refcount_create_untracked(rc) ((rc)->rc_count = 0)
  86   86  #define refcount_destroy(rc) ((rc)->rc_count = 0)
  87   87  #define refcount_destroy_many(rc, number) ((rc)->rc_count = 0)
  88   88  #define refcount_is_zero(rc) ((rc)->rc_count == 0)
  89   89  #define refcount_count(rc) ((rc)->rc_count)
  90      -#define refcount_add(rc, holder) atomic_add_64_nv(&(rc)->rc_count, 1)
  91      -#define refcount_remove(rc, holder) atomic_add_64_nv(&(rc)->rc_count, -1)
       90 +#define refcount_add(rc, holder) atomic_inc_64_nv(&(rc)->rc_count)
       91 +#define refcount_remove(rc, holder) atomic_dec_64_nv(&(rc)->rc_count)
  92   92  #define refcount_add_many(rc, number, holder) \
  93   93          atomic_add_64_nv(&(rc)->rc_count, number)
  94   94  #define refcount_remove_many(rc, number, holder) \
  95   95          atomic_add_64_nv(&(rc)->rc_count, -number)
  96   96  #define refcount_transfer(dst, src) { \
  97   97          uint64_t __tmp = (src)->rc_count; \
  98   98          atomic_add_64(&(src)->rc_count, -__tmp); \
  99   99          atomic_add_64(&(dst)->rc_count, __tmp); \
 100  100  }
 101  101  
 102  102  #define refcount_init()
 103  103  #define refcount_fini()
 104  104  
 105  105  #endif  /* ZFS_DEBUG */
 106  106  
 107  107  #ifdef  __cplusplus
 108  108  }
 109  109  #endif
 110  110  
 111  111  #endif /* _SYS_REFCOUNT_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX