Lines Matching refs:thread

47 #include <kern/thread.h>
102 extern int machine_trace_thread(thread_t thread, char *tracepos, char *tracebound, int nframes, boolean_t user_p);
103 extern int machine_trace_thread64(thread_t thread, char *tracepos, char *tracebound, int nframes, boolean_t user_p);
209 thread_t thread = THREAD_NULL;
477 queue_iterate(&task->threads, thread, thread_t, task_threads){
480 if ((thread == NULL) || !ml_validate_nofault((vm_offset_t) thread, sizeof(struct thread)))
487 if (!save_userframes_p && thread->kernel_stack == 0)
490 /* Populate the thread snapshot header */
492 tsnap->thread_id = thread_tid(thread);
493 tsnap->state = thread->state;
494 tsnap->priority = thread->priority;
495 tsnap->sched_pri = thread->sched_pri;
496 tsnap->sched_flags = thread->sched_flags;
497 tsnap->wait_event = VM_KERNEL_UNSLIDE_OR_PERM(thread->wait_event);
498 tsnap->continuation = VM_KERNEL_UNSLIDE(thread->continuation);
499 tval = safe_grab_timer_value(&thread->user_timer);
501 tval = safe_grab_timer_value(&thread->system_timer);
502 if (thread->precise_user_kernel_time) {
510 proc_threadname_kdp(thread->uthread, &tsnap->pth_name[0], STACKSHOT_MAX_THREAD_NAME_SIZE);
515 if (thread->thread_io_stats) {
516 tsnap->disk_reads_count = thread->thread_io_stats->disk_reads.count;
517 tsnap->disk_reads_size = thread->thread_io_stats->disk_reads.size;
518 tsnap->disk_writes_count = (thread->thread_io_stats->total_io.count - thread->thread_io_stats->disk_reads.count);
519 tsnap->disk_writes_size = (thread->thread_io_stats->total_io.size - thread->thread_io_stats->disk_reads.size);
521 tsnap->io_priority_count[i] = thread->thread_io_stats->io_priority[i].count;
522 tsnap->io_priority_size[i] = thread->thread_io_stats->io_priority[i].size;
524 tsnap->paging_count = thread->thread_io_stats->paging.count;
525 tsnap->paging_size = thread->thread_io_stats->paging.size;
526 tsnap->non_paging_count = (thread->thread_io_stats->total_io.count - thread->thread_io_stats->paging.count);
527 tsnap->non_paging_size = (thread->thread_io_stats->total_io.size - thread->thread_io_stats->paging.size);
528 tsnap->metadata_count = thread->thread_io_stats->metadata.count;
529 tsnap->metadata_size = thread->thread_io_stats->metadata.size;
530 tsnap->data_count = (thread->thread_io_stats->total_io.count - thread->thread_io_stats->metadata.count);
531 tsnap->data_size = (thread->thread_io_stats->total_io.size - thread->thread_io_stats->metadata.size);
538 if (thread->effective_policy.darwinbg) {
542 tsnap->io_tier = proc_get_effective_thread_policy(thread, TASK_POLICY_IO);
543 if (proc_get_effective_thread_policy(thread, TASK_POLICY_PASSIVE_IO)) {
547 if (thread->suspend_count > 0) {
550 if (IPC_VOUCHER_NULL != thread->ith_voucher) {
551 tsnap->voucher_identifier = VM_KERNEL_ADDRPERM(thread->ith_voucher);
554 tsnap->ts_qos = thread->effective_policy.thep_qos;
555 tsnap->total_syscalls = thread->syscalls_mach + thread->syscalls_unix;
558 uint64_t dqkeyaddr = thread_dispatchqaddr(thread);
576 if (thread->kernel_stack != 0) {
578 tracebytes = machine_trace_thread64(thread, tracepos, tracebound, MAX_FRAMES, FALSE);
582 tracebytes = machine_trace_thread(thread, tracepos, tracebound, MAX_FRAMES, FALSE);
590 if (save_userframes_p && task->active && thread->task->map != kernel_map) {
592 if (task_has_64BitAddr(thread->task)) {
593 tracebytes = machine_trace_thread64(thread, tracepos, tracebound, MAX_FRAMES, TRUE);
598 tracebytes = machine_trace_thread(thread, tracepos, tracebound, MAX_FRAMES, TRUE);
609 * No thread info is collected due to lack of kernel frames.