structlist_headtasks; /* * ptrace_list/ptrace_children forms the list of my children * that were stolen by a ptracer. */ structlist_headptrace_children; structlist_headptrace_list;
structmm_struct *mm, *active_mm;
/* task state */ structlinux_binfmt *binfmt; long exit_state; int exit_code, exit_signal; int pdeath_signal; /* The signal sent when the parent dies */ /* ??? */ unsignedlong personality; unsigned did_exec:1; pid_t pid; pid_t tgid; /* * pointers to (original) parent process, youngest child, younger sibling, * older sibling, respectively. (p->father can be replaced with * p->parent->pid) */ structtask_struct *real_parent;/* real parent process (when being debugged) */ structtask_struct *parent;/* parent process */ /* * children/sibling forms the list of my children plus the * tasks I'm ptracing. */ structlist_headchildren;/* list of my children */ structlist_headsibling;/* linkage in my parent's children list */ structtask_struct *group_leader;/* threadgroup leader */
unsignedlong ptrace_message; siginfo_t *last_siginfo; /* For ptrace use. */ /* * current io wait handle: wait queue entry to use for io waits * If this thread is processing aio, this points at the waitqueue * inside the currently handled kiocb. It may be NULL (i.e. default * to a stack based synchronous wait) if its doing sync IO. */ wait_queue_t *io_wait; /* i/o counters(bytes read/written, #syscalls */ u64 rchar, wchar, syscr, syscw; #if defined(CONFIG_BSD_PROCESS_ACCT) u64 acct_rss_mem1; /* accumulated rss usage */ u64 acct_vm_mem1; /* accumulated virtual memory usage */ clock_t acct_stimexpd; /* clock_t-converted stime since last update */ #endif #ifdef CONFIG_NUMA structmempolicy *mempolicy; short il_next; #endif };