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

*** 152,170 **** } else { sht->s_buckets[iHash].ssh_sh = s->sh_next; } ASSERT(sht->s_buckets[iHash].ssh_count != 0); ! atomic_add_32(&sht->s_buckets[iHash].ssh_count, -1); ! atomic_add_32(&sht->s_count, -1); ! atomic_add_32(&sharetab_count, -1); ASSERT(sharetab_size >= s->sh_size); sharetab_size -= s->sh_size; gethrestime(&sharetab_mtime); ! atomic_add_32(&sharetab_generation, 1); break; } p = s; --- 152,170 ---- } else { sht->s_buckets[iHash].ssh_sh = s->sh_next; } ASSERT(sht->s_buckets[iHash].ssh_count != 0); ! atomic_dec_32(&sht->s_buckets[iHash].ssh_count); ! atomic_dec_32(&sht->s_count); ! atomic_dec_32(&sharetab_count); ASSERT(sharetab_size >= s->sh_size); sharetab_size -= s->sh_size; gethrestime(&sharetab_mtime); ! atomic_inc_32(&sharetab_generation); break; } p = s;
*** 279,289 **** * Get rid of the old node. */ sharefree(s, NULL); gethrestime(&sharetab_mtime); ! atomic_add_32(&sharetab_generation, 1); ASSERT(sht->s_buckets[iHash].ssh_count != 0); rw_exit(&sharetab_lock); return (0); --- 279,289 ---- * Get rid of the old node. */ sharefree(s, NULL); gethrestime(&sharetab_mtime); ! atomic_inc_32(&sharetab_generation); ASSERT(sht->s_buckets[iHash].ssh_count != 0); rw_exit(&sharetab_lock); return (0);
*** 296,312 **** * Okay, we have gone through the entire hash chain and not * found a match. We just need to add this node. */ sh->sh_next = sht->s_buckets[iHash].ssh_sh; sht->s_buckets[iHash].ssh_sh = sh; ! atomic_add_32(&sht->s_buckets[iHash].ssh_count, 1); ! atomic_add_32(&sht->s_count, 1); ! atomic_add_32(&sharetab_count, 1); sharetab_size += sh->sh_size; gethrestime(&sharetab_mtime); ! atomic_add_32(&sharetab_generation, 1); rw_exit(&sharetab_lock); return (0); } --- 296,312 ---- * Okay, we have gone through the entire hash chain and not * found a match. We just need to add this node. */ sh->sh_next = sht->s_buckets[iHash].ssh_sh; sht->s_buckets[iHash].ssh_sh = sh; ! atomic_inc_32(&sht->s_buckets[iHash].ssh_count); ! atomic_inc_32(&sht->s_count); ! atomic_inc_32(&sharetab_count); sharetab_size += sh->sh_size; gethrestime(&sharetab_mtime); ! atomic_inc_32(&sharetab_generation); rw_exit(&sharetab_lock); return (0); }