Print this page
5042 stop using deprecated atomic functions


 261 static void
 262 zulu_ctx_tsb_lock_enter(struct zulu_hat *zhat)
 263 {
 264         uint64_t        lck;
 265         uint64_t        *plck;
 266 
 267         ASSERT(mutex_owned(&zhat->lock));
 268 
 269         if (zhat->zulu_ctx < 0) {
 270                 return;
 271         }
 272         plck = (uint64_t *)&zulu_ctx_tab[zhat->zulu_ctx];
 273 
 274         for (; ; ) {
 275                 lck = *plck;
 276                 if (!(lck & ZULU_CTX_LOCK)) {
 277                         uint64_t old_lck, new_lck;
 278 
 279                         new_lck = lck | ZULU_CTX_LOCK;
 280 
 281                         old_lck = cas64(plck, lck, new_lck);
 282 
 283                         if (old_lck == lck) {
 284                                 /*
 285                                  * success
 286                                  */
 287                                 break;
 288                         }
 289                 }
 290         }
 291 }
 292 
 293 static void
 294 zulu_ctx_tsb_lock_exit(struct zulu_hat *zhat)
 295 {
 296         uint64_t        lck;
 297         int             zulu_ctx = zhat->zulu_ctx;
 298 
 299         if (zulu_ctx < 0) {
 300                 return;
 301         }




 261 static void
 262 zulu_ctx_tsb_lock_enter(struct zulu_hat *zhat)
 263 {
 264         uint64_t        lck;
 265         uint64_t        *plck;
 266 
 267         ASSERT(mutex_owned(&zhat->lock));
 268 
 269         if (zhat->zulu_ctx < 0) {
 270                 return;
 271         }
 272         plck = (uint64_t *)&zulu_ctx_tab[zhat->zulu_ctx];
 273 
 274         for (; ; ) {
 275                 lck = *plck;
 276                 if (!(lck & ZULU_CTX_LOCK)) {
 277                         uint64_t old_lck, new_lck;
 278 
 279                         new_lck = lck | ZULU_CTX_LOCK;
 280 
 281                         old_lck = atomic_cas_64(plck, lck, new_lck);
 282 
 283                         if (old_lck == lck) {
 284                                 /*
 285                                  * success
 286                                  */
 287                                 break;
 288                         }
 289                 }
 290         }
 291 }
 292 
 293 static void
 294 zulu_ctx_tsb_lock_exit(struct zulu_hat *zhat)
 295 {
 296         uint64_t        lck;
 297         int             zulu_ctx = zhat->zulu_ctx;
 298 
 299         if (zulu_ctx < 0) {
 300                 return;
 301         }