Print this page
5042 stop using deprecated atomic functions


 186         dtrace_vtime_state_t state, nstate;
 187 
 188         do {
 189                 state = dtrace_vtime_active;
 190 
 191                 switch (state) {
 192                 case DTRACE_VTIME_INACTIVE:
 193                         nstate = DTRACE_VTIME_ACTIVE;
 194                         break;
 195 
 196                 case DTRACE_VTIME_INACTIVE_TNF:
 197                         nstate = DTRACE_VTIME_ACTIVE_TNF;
 198                         break;
 199 
 200                 case DTRACE_VTIME_ACTIVE:
 201                 case DTRACE_VTIME_ACTIVE_TNF:
 202                         panic("DTrace virtual time already enabled");
 203                         /*NOTREACHED*/
 204                 }
 205 
 206         } while (cas32((uint32_t *)&dtrace_vtime_active,
 207             state, nstate) != state);
 208 }
 209 
 210 void
 211 dtrace_vtime_disable(void)
 212 {
 213         dtrace_vtime_state_t state, nstate;
 214 
 215         do {
 216                 state = dtrace_vtime_active;
 217 
 218                 switch (state) {
 219                 case DTRACE_VTIME_ACTIVE:
 220                         nstate = DTRACE_VTIME_INACTIVE;
 221                         break;
 222 
 223                 case DTRACE_VTIME_ACTIVE_TNF:
 224                         nstate = DTRACE_VTIME_INACTIVE_TNF;
 225                         break;
 226 
 227                 case DTRACE_VTIME_INACTIVE:
 228                 case DTRACE_VTIME_INACTIVE_TNF:
 229                         panic("DTrace virtual time already disabled");
 230                         /*NOTREACHED*/
 231                 }
 232 
 233         } while (cas32((uint32_t *)&dtrace_vtime_active,
 234             state, nstate) != state);
 235 }
 236 
 237 void
 238 dtrace_vtime_enable_tnf(void)
 239 {
 240         dtrace_vtime_state_t state, nstate;
 241 
 242         do {
 243                 state = dtrace_vtime_active;
 244 
 245                 switch (state) {
 246                 case DTRACE_VTIME_ACTIVE:
 247                         nstate = DTRACE_VTIME_ACTIVE_TNF;
 248                         break;
 249 
 250                 case DTRACE_VTIME_INACTIVE:
 251                         nstate = DTRACE_VTIME_INACTIVE_TNF;
 252                         break;
 253 
 254                 case DTRACE_VTIME_ACTIVE_TNF:
 255                 case DTRACE_VTIME_INACTIVE_TNF:
 256                         panic("TNF already active");
 257                         /*NOTREACHED*/
 258                 }
 259 
 260         } while (cas32((uint32_t *)&dtrace_vtime_active,
 261             state, nstate) != state);
 262 }
 263 
 264 void
 265 dtrace_vtime_disable_tnf(void)
 266 {
 267         dtrace_vtime_state_t state, nstate;
 268 
 269         do {
 270                 state = dtrace_vtime_active;
 271 
 272                 switch (state) {
 273                 case DTRACE_VTIME_ACTIVE_TNF:
 274                         nstate = DTRACE_VTIME_ACTIVE;
 275                         break;
 276 
 277                 case DTRACE_VTIME_INACTIVE_TNF:
 278                         nstate = DTRACE_VTIME_INACTIVE;
 279                         break;
 280 
 281                 case DTRACE_VTIME_ACTIVE:
 282                 case DTRACE_VTIME_INACTIVE:
 283                         panic("TNF already inactive");
 284                         /*NOTREACHED*/
 285                 }
 286 
 287         } while (cas32((uint32_t *)&dtrace_vtime_active,
 288             state, nstate) != state);
 289 }
 290 
 291 void
 292 dtrace_vtime_switch(kthread_t *next)
 293 {
 294         dtrace_icookie_t cookie;
 295         hrtime_t ts;
 296 
 297         if (tnf_tracing_active) {
 298                 tnf_thread_switch(next);
 299 
 300                 if (dtrace_vtime_active == DTRACE_VTIME_INACTIVE_TNF)
 301                         return;
 302         }
 303 
 304         cookie = dtrace_interrupt_disable();
 305         ts = dtrace_gethrtime();
 306 
 307         if (curthread->t_dtrace_start != 0) {




 186         dtrace_vtime_state_t state, nstate;
 187 
 188         do {
 189                 state = dtrace_vtime_active;
 190 
 191                 switch (state) {
 192                 case DTRACE_VTIME_INACTIVE:
 193                         nstate = DTRACE_VTIME_ACTIVE;
 194                         break;
 195 
 196                 case DTRACE_VTIME_INACTIVE_TNF:
 197                         nstate = DTRACE_VTIME_ACTIVE_TNF;
 198                         break;
 199 
 200                 case DTRACE_VTIME_ACTIVE:
 201                 case DTRACE_VTIME_ACTIVE_TNF:
 202                         panic("DTrace virtual time already enabled");
 203                         /*NOTREACHED*/
 204                 }
 205 
 206         } while (atomic_cas_32((uint32_t *)&dtrace_vtime_active,
 207             state, nstate) != state);
 208 }
 209 
 210 void
 211 dtrace_vtime_disable(void)
 212 {
 213         dtrace_vtime_state_t state, nstate;
 214 
 215         do {
 216                 state = dtrace_vtime_active;
 217 
 218                 switch (state) {
 219                 case DTRACE_VTIME_ACTIVE:
 220                         nstate = DTRACE_VTIME_INACTIVE;
 221                         break;
 222 
 223                 case DTRACE_VTIME_ACTIVE_TNF:
 224                         nstate = DTRACE_VTIME_INACTIVE_TNF;
 225                         break;
 226 
 227                 case DTRACE_VTIME_INACTIVE:
 228                 case DTRACE_VTIME_INACTIVE_TNF:
 229                         panic("DTrace virtual time already disabled");
 230                         /*NOTREACHED*/
 231                 }
 232 
 233         } while (atomic_cas_32((uint32_t *)&dtrace_vtime_active,
 234             state, nstate) != state);
 235 }
 236 
 237 void
 238 dtrace_vtime_enable_tnf(void)
 239 {
 240         dtrace_vtime_state_t state, nstate;
 241 
 242         do {
 243                 state = dtrace_vtime_active;
 244 
 245                 switch (state) {
 246                 case DTRACE_VTIME_ACTIVE:
 247                         nstate = DTRACE_VTIME_ACTIVE_TNF;
 248                         break;
 249 
 250                 case DTRACE_VTIME_INACTIVE:
 251                         nstate = DTRACE_VTIME_INACTIVE_TNF;
 252                         break;
 253 
 254                 case DTRACE_VTIME_ACTIVE_TNF:
 255                 case DTRACE_VTIME_INACTIVE_TNF:
 256                         panic("TNF already active");
 257                         /*NOTREACHED*/
 258                 }
 259 
 260         } while (atomic_cas_32((uint32_t *)&dtrace_vtime_active,
 261             state, nstate) != state);
 262 }
 263 
 264 void
 265 dtrace_vtime_disable_tnf(void)
 266 {
 267         dtrace_vtime_state_t state, nstate;
 268 
 269         do {
 270                 state = dtrace_vtime_active;
 271 
 272                 switch (state) {
 273                 case DTRACE_VTIME_ACTIVE_TNF:
 274                         nstate = DTRACE_VTIME_ACTIVE;
 275                         break;
 276 
 277                 case DTRACE_VTIME_INACTIVE_TNF:
 278                         nstate = DTRACE_VTIME_INACTIVE;
 279                         break;
 280 
 281                 case DTRACE_VTIME_ACTIVE:
 282                 case DTRACE_VTIME_INACTIVE:
 283                         panic("TNF already inactive");
 284                         /*NOTREACHED*/
 285                 }
 286 
 287         } while (atomic_cas_32((uint32_t *)&dtrace_vtime_active,
 288             state, nstate) != state);
 289 }
 290 
 291 void
 292 dtrace_vtime_switch(kthread_t *next)
 293 {
 294         dtrace_icookie_t cookie;
 295         hrtime_t ts;
 296 
 297         if (tnf_tracing_active) {
 298                 tnf_thread_switch(next);
 299 
 300                 if (dtrace_vtime_active == DTRACE_VTIME_INACTIVE_TNF)
 301                         return;
 302         }
 303 
 304         cookie = dtrace_interrupt_disable();
 305         ts = dtrace_gethrtime();
 306 
 307         if (curthread->t_dtrace_start != 0) {