| 438 | } |
| 439 | |
| 440 | static int |
| 441 | db_mach_vtrace(void) |
| 442 | { |
| 443 | struct ktr_entry *kp; |
| 444 | |
| 445 | if (tstate.cur == tstate.first || ktr_buf == NULL) { |
| 446 | db_printf("--- End of trace buffer ---\n"); |
| 447 | return (0); |
| 448 | } |
| 449 | kp = &ktr_buf[tstate.cur]; |
| 450 | |
| 451 | /* Skip over unused entries. */ |
| 452 | if (kp->ktr_desc == NULL) { |
| 453 | db_printf("--- End of trace buffer ---\n"); |
| 454 | return (0); |
| 455 | } |
| 456 | db_printf("%d (%p", tstate.cur, kp->ktr_thread); |
| 457 | #ifdef SMP |
| 458 | db_printf(":cpu%d", kp->ktr_cpu); |
| 459 | #endif |
| 460 | db_printf(")"); |
| 461 | if (db_ktr_verbose >= 1) { |
| 462 | db_printf(" %10.10lld", (long long)kp->ktr_timestamp); |
| 463 | } |
| 464 | if (db_ktr_verbose >= 2) { |
| 465 | db_printf(" %s.%d", kp->ktr_file, kp->ktr_line); |
| 466 | } |
| 467 | db_printf(": "); |
| 468 | db_printf(kp->ktr_desc, kp->ktr_parms[0], kp->ktr_parms[1], |
| 469 | kp->ktr_parms[2], kp->ktr_parms[3], kp->ktr_parms[4], |
| 470 | kp->ktr_parms[5]); |
| 471 | db_printf("\n"); |
| 472 | |
| 473 | if (tstate.first == -1) |
| 474 | tstate.first = tstate.cur; |
| 475 | |
| 476 | if (--tstate.cur < 0) |
| 477 | tstate.cur = ktr_entries - 1; |
| 478 | |
| 479 | return (1); |
| 480 | } |
| 481 | |
| 482 | #endif /* DDB */ |