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


  43 /*
  44  * t_lowat - integer percentage of table entries        /etc/system only
  45  * t_hiwat - integer percentage of table entries        /etc/system only
  46  * t_lreap - integer percentage of table reap time      mdb or /etc/system
  47  * t_hreap - integer percentage of table reap time      mdb or /etc/system
  48  */
  49 uint32_t        t_lowat = 50;   /* reap at t_lreap when id's in use hit 50% */
  50 uint32_t        t_hiwat = 75;   /* reap at t_hreap when id's in use hit 75% */
  51 time_t          t_lreap = 50;   /* default to 50% of table's reap interval */
  52 time_t          t_hreap = 10;   /* default to 10% of table's reap interval */
  53 
  54 id_t
  55 rfs4_dbe_getid(rfs4_dbe_t *entry)
  56 {
  57         return (entry->dbe_id);
  58 }
  59 
  60 void
  61 rfs4_dbe_hold(rfs4_dbe_t *entry)
  62 {
  63         atomic_add_32(&entry->dbe_refcnt, 1);
  64 }
  65 
  66 /*
  67  * rfs4_dbe_rele_nolock only decrements the reference count of the entry.
  68  */
  69 void
  70 rfs4_dbe_rele_nolock(rfs4_dbe_t *entry)
  71 {
  72         atomic_add_32(&entry->dbe_refcnt, -1);
  73 }
  74 
  75 
  76 uint32_t
  77 rfs4_dbe_refcnt(rfs4_dbe_t *entry)
  78 {
  79         return (entry->dbe_refcnt);
  80 }
  81 
  82 /*
  83  * Mark an entry such that the dbsearch will skip it.
  84  * Caller does not want this entry to be found any longer
  85  */
  86 void
  87 rfs4_dbe_invalidate(rfs4_dbe_t *entry)
  88 {
  89         entry->dbe_invalid = TRUE;
  90         entry->dbe_skipsearch = TRUE;
  91 }
  92 


 112 rfs4_dbe_hide(rfs4_dbe_t *entry)
 113 {
 114         rfs4_dbe_lock(entry);
 115         entry->dbe_skipsearch = TRUE;
 116         rfs4_dbe_unlock(entry);
 117 }
 118 
 119 void
 120 rfs4_dbe_unhide(rfs4_dbe_t *entry)
 121 {
 122         rfs4_dbe_lock(entry);
 123         entry->dbe_skipsearch = FALSE;
 124         rfs4_dbe_unlock(entry);
 125 }
 126 
 127 void
 128 rfs4_dbe_rele(rfs4_dbe_t *entry)
 129 {
 130         mutex_enter(entry->dbe_lock);
 131         ASSERT(entry->dbe_refcnt > 1);
 132         atomic_add_32(&entry->dbe_refcnt, -1);
 133         entry->dbe_time_rele = gethrestime_sec();
 134         mutex_exit(entry->dbe_lock);
 135 }
 136 
 137 void
 138 rfs4_dbe_lock(rfs4_dbe_t *entry)
 139 {
 140         mutex_enter(entry->dbe_lock);
 141 }
 142 
 143 void
 144 rfs4_dbe_unlock(rfs4_dbe_t *entry)
 145 {
 146         mutex_exit(entry->dbe_lock);
 147 }
 148 
 149 bool_t
 150 rfs4_dbe_islocked(rfs4_dbe_t *entry)
 151 {
 152         return (mutex_owned(entry->dbe_lock));




  43 /*
  44  * t_lowat - integer percentage of table entries        /etc/system only
  45  * t_hiwat - integer percentage of table entries        /etc/system only
  46  * t_lreap - integer percentage of table reap time      mdb or /etc/system
  47  * t_hreap - integer percentage of table reap time      mdb or /etc/system
  48  */
  49 uint32_t        t_lowat = 50;   /* reap at t_lreap when id's in use hit 50% */
  50 uint32_t        t_hiwat = 75;   /* reap at t_hreap when id's in use hit 75% */
  51 time_t          t_lreap = 50;   /* default to 50% of table's reap interval */
  52 time_t          t_hreap = 10;   /* default to 10% of table's reap interval */
  53 
  54 id_t
  55 rfs4_dbe_getid(rfs4_dbe_t *entry)
  56 {
  57         return (entry->dbe_id);
  58 }
  59 
  60 void
  61 rfs4_dbe_hold(rfs4_dbe_t *entry)
  62 {
  63         atomic_inc_32(&entry->dbe_refcnt);
  64 }
  65 
  66 /*
  67  * rfs4_dbe_rele_nolock only decrements the reference count of the entry.
  68  */
  69 void
  70 rfs4_dbe_rele_nolock(rfs4_dbe_t *entry)
  71 {
  72         atomic_dec_32(&entry->dbe_refcnt);
  73 }
  74 
  75 
  76 uint32_t
  77 rfs4_dbe_refcnt(rfs4_dbe_t *entry)
  78 {
  79         return (entry->dbe_refcnt);
  80 }
  81 
  82 /*
  83  * Mark an entry such that the dbsearch will skip it.
  84  * Caller does not want this entry to be found any longer
  85  */
  86 void
  87 rfs4_dbe_invalidate(rfs4_dbe_t *entry)
  88 {
  89         entry->dbe_invalid = TRUE;
  90         entry->dbe_skipsearch = TRUE;
  91 }
  92 


 112 rfs4_dbe_hide(rfs4_dbe_t *entry)
 113 {
 114         rfs4_dbe_lock(entry);
 115         entry->dbe_skipsearch = TRUE;
 116         rfs4_dbe_unlock(entry);
 117 }
 118 
 119 void
 120 rfs4_dbe_unhide(rfs4_dbe_t *entry)
 121 {
 122         rfs4_dbe_lock(entry);
 123         entry->dbe_skipsearch = FALSE;
 124         rfs4_dbe_unlock(entry);
 125 }
 126 
 127 void
 128 rfs4_dbe_rele(rfs4_dbe_t *entry)
 129 {
 130         mutex_enter(entry->dbe_lock);
 131         ASSERT(entry->dbe_refcnt > 1);
 132         atomic_dec_32(&entry->dbe_refcnt);
 133         entry->dbe_time_rele = gethrestime_sec();
 134         mutex_exit(entry->dbe_lock);
 135 }
 136 
 137 void
 138 rfs4_dbe_lock(rfs4_dbe_t *entry)
 139 {
 140         mutex_enter(entry->dbe_lock);
 141 }
 142 
 143 void
 144 rfs4_dbe_unlock(rfs4_dbe_t *entry)
 145 {
 146         mutex_exit(entry->dbe_lock);
 147 }
 148 
 149 bool_t
 150 rfs4_dbe_islocked(rfs4_dbe_t *entry)
 151 {
 152         return (mutex_owned(entry->dbe_lock));