summaryrefslogtreecommitdiff
path: root/kern/linux/sched.hh
diff options
context:
space:
mode:
authorAli Saidi <saidi@eecs.umich.edu>2004-08-18 23:06:51 -0400
committerAli Saidi <saidi@eecs.umich.edu>2004-08-18 23:06:51 -0400
commit9d4ee7acaa930811bbb8e28894a96fd371702ef4 (patch)
tree15b67b1fbd88afb34dbf4860adc340408b3da149 /kern/linux/sched.hh
parent239183cfe675684aeca1a2b24362ca5e0a82809d (diff)
downloadgem5-9d4ee7acaa930811bbb8e28894a96fd371702ef4.tar.xz
Added code using VPtr to be able to extract info from linux thread
structures. Added event to print out currently running task base/traceflags.py: Added Thread trace flag kern/linux/linux_system.cc: kern/linux/linux_system.hh: Added event to print out currently running task --HG-- extra : convert_revision : 94347dbaf90f39eb40467b2a43b4628a3deafc6c
Diffstat (limited to 'kern/linux/sched.hh')
-rw-r--r--kern/linux/sched.hh110
1 files changed, 110 insertions, 0 deletions
diff --git a/kern/linux/sched.hh b/kern/linux/sched.hh
new file mode 100644
index 000000000..287214b2b
--- /dev/null
+++ b/kern/linux/sched.hh
@@ -0,0 +1,110 @@
+#ifndef __LINUX_SCHED_H__
+#define __LINUX_SCHED_H__
+
+#include "targetarch/isa_traits.hh"
+#include "kern/linux/atomic.hh"
+#include "kern/linux/list.hh"
+#include "kern/linux/wait.hh"
+#include "kern/linux/timer.hh"
+#include "kern/linux/pid.hh"
+#include "kern/linux/aligned.hh"
+
+namespace Linux {
+
+ struct rlimit {
+ uint64_ta rlim_cur;
+ uint64_ta rlim_max;
+ };
+
+ const uint32_t RLIM_NLIMITS = 11;
+
+ struct task_struct {
+ int64_ta state; /* -1 unrunnable, 0 runnable, >0 stopped */
+ Addr_a thread_info;
+ atomic_t usage;
+
+ uint64_ta flags; /* per process flags, defined below */
+ uint64_ta ptrace;
+
+ int32_t lock_depth; /* Lock depth */
+
+ int32_t prio, static_prio;
+
+ struct list_head run_list;
+ Addr_a array;
+
+ uint64_ta sleep_avg;
+ int64_ta interactive_credit;
+ uint64_ta timestamp;
+ int32_t activated;
+
+ uint64_ta policy;
+ uint64_ta cpus_allowed;
+ uint32_t time_slice, first_time_slice;
+
+ struct list_head tasks;
+ struct list_head ptrace_children;
+ struct list_head ptrace_list;
+
+ Addr_a mm, active_mm;
+
+ /* task state */
+ Addr_a binfmt;
+ int32_t exit_code, exit_signal;
+ int32_t pdeath_signal; /* The signal sent when the parent dies */
+ /* ??? */
+ uint64_ta personality;
+ int32_t did_exec:1;
+ int32_t pid;
+ int32_t __pgrp; /* Accessed via process_group() */
+ int32_t tty_old_pgrp;
+ int32_t session;
+ int32_t tgid;
+ /* boolean value for session group leader */
+ int32_t leader;
+ /*
+ * pointers to (original) parent process, youngest child, younger sibling,
+ * older sibling, respectively. (p->father can be replaced with
+ * p->parent->pid)
+ */
+ Addr_a real_parent; /* real parent process (when being debugged) */
+ Addr_a parent; /* parent process */
+ struct list_head children; /* list of my children */
+ struct list_head sibling; /* linkage in my parent's children list */
+ Addr_a group_leader; /* threadgroup leader */
+
+ /* PID/PID hash table linkage. */
+ struct pid_link pids[PIDTYPE_MAX];
+
+ wait_queue_head_t wait_chldexit; /* for wait4() */
+ Addr_a vfork_done; /* for vfork() */
+ Addr_a set_child_tid; /* CLONE_CHILD_SETTID */
+ Addr_a clear_child_tid; /* CLONE_CHILD_CLEARTID */
+
+ uint64_ta rt_priority;
+ uint64_ta it_real_value, it_prof_value, it_virt_value;
+ uint64_ta it_real_incr, it_prof_incr, it_virt_incr;
+ struct timer_list real_timer;
+ struct list_head posix_timers; /* POSIX.1b Interval Timers */
+ uint64_ta utime, stime, cutime, cstime;
+ uint64_ta nvcsw, nivcsw, cnvcsw, cnivcsw; /* context switch counts */
+ uint64_ta start_time;
+ /* mm fault and swap info: this can arguably be seen as either mm-specific or thread-specific */
+ uint64_ta min_flt, maj_flt, nswap, cmin_flt, cmaj_flt, cnswap;
+ /* process credentials */
+ uint32_t uid,euid,suid,fsuid;
+ uint32_t gid,egid,sgid,fsgid;
+ Addr_a group_info;
+ uint32_t cap_effective, cap_inheritable, cap_permitted;
+ int32_t keep_capabilities:1;
+ Addr user;
+ /* limits */
+ struct rlimit rlim[RLIM_NLIMITS];
+ uint16_t used_math;
+ char comm[16];
+ };
+
+
+}
+
+#endif