*参照元 [#ab08d774]
*参照元 [#yff00dde]
#backlinks

*説明 [#ibe9b87c]
-パス: 複数あり
--arm 版: [[linux-2.6.33/task_struct(arm)]]
*説明 [#je0669e6]
-パス: [[linux-2.6.33/include/linux/sched.h]]

-FIXME: これは何?
--説明


**参考 [#g21655af]
**参考 [#j77f137c]


*実装 [#y4671fd0]
-各アーキテクチャのページを参照してください。
*実装 [#x8adc4a3]
 struct task_struct {
 	volatile long state;	/* -1 unrunnable, 0 runnable, >0 stopped */
 	void *stack;
 	atomic_t usage;
-
--[[linux-2.6.33/atomic_t]]

 	unsigned int flags;	/* per process flags, defined below */
 	unsigned int ptrace;
 
 	int lock_depth;		/* BKL lock depth */
 
 #ifdef CONFIG_SMP
 #ifdef __ARCH_WANT_UNLOCKED_CTXSW
-
--[[linux-2.6.33/CONFIG_SMP]]
-
--[[linux-2.6.33/__ARCH_WANT_UNLOCKED_CTXSW]]

*コメント [#rfb014d7]
 	int oncpu;
 #endif
 #endif
 
 	int prio, static_prio, normal_prio;
 	unsigned int rt_priority;
 	const struct sched_class *sched_class;
 	struct sched_entity se;
 	struct sched_rt_entity rt;
 
-
--[[linux-2.6.33/sched_class]]
-
--[[linux-2.6.33/sched_entity]]
-
--[[linux-2.6.33/sched_rt_entity]]

 #ifdef CONFIG_PREEMPT_NOTIFIERS
-
--[[linux-2.6.33/CONFIG_PREEMPT_NOTIFIERS]]

 	/* list of struct preempt_notifier: */
 	struct hlist_head preempt_notifiers;
-
--[[linux-2.6.33/hlist_head]]

 #endif
 
 	/*
 	 * fpu_counter contains the number of consecutive context switches
 	 * that the FPU is used. If this is over a threshold, the lazy fpu
 	 * saving becomes unlazy to save the trap. This is an unsigned char
 	 * so that after 256 times the counter wraps and the behavior turns
 	 * lazy again; this to deal with bursty apps that only use FPU for
 	 * a short time
 	 */
 	unsigned char fpu_counter;
 #ifdef CONFIG_BLK_DEV_IO_TRACE
-
--[[linux-2.6.33/CONFIG_BLK_DEV_IO_TRACE]]

 	unsigned int btrace_seq;
 #endif
 
 	unsigned int policy;
 	cpumask_t cpus_allowed;
 
-
--[[linux-2.6.33/cpumask_t]]

 #ifdef CONFIG_TREE_PREEMPT_RCU
-
--[[linux-2.6.33/CONFIG_TREE_PREEMPT_RCU]]

 	int rcu_read_lock_nesting;
 	char rcu_read_unlock_special;
 	struct rcu_node *rcu_blocked_node;
 	struct list_head rcu_node_entry;
-
--[[linux-2.6.33/rcu_node]]
-
--[[linux-2.6.33/list_head]]

 #endif /* #ifdef CONFIG_TREE_PREEMPT_RCU */
 
 #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT)
-
--[[linux-2.6.33/CONFIG_SCHEDSTATS]]
-
--[[linux-2.6.33/CONFIG_TASK_DELAY_ACCT]]

 	struct sched_info sched_info;
-
--[[linux-2.6.33/sched_info]]

 #endif
 
 	struct list_head tasks;
 	struct plist_node pushable_tasks;
 
-
--[[linux-2.6.33/list_head]]
-
--[[linux-2.6.33/plist_node]]

 	struct mm_struct *mm, *active_mm;
 
-
--[[linux-2.6.33/mm_struct]]

 /* task state */
 	int exit_state;
 	int exit_code, exit_signal;
 	int pdeath_signal;  /*  The signal sent when the parent dies  */
 	/* ??? */
 	unsigned int personality;
 	unsigned did_exec:1;
 	unsigned in_execve:1;	/* Tell the LSMs that the process is doing an
 				 * execve */
 	unsigned in_iowait:1;
 
 
 	/* Revert to default priority/policy when forking */
 	unsigned sched_reset_on_fork:1;
 
 	pid_t pid;
 	pid_t tgid;
 
-
--[[linux-2.6.33/pid_t]]

 #ifdef CONFIG_CC_STACKPROTECTOR
-
--[[linux-2.6.33/CONFIG_CC_STACKPROTECTOR]]

 	/* Canary value for the -fstack-protector gcc feature */
 	unsigned long stack_canary;
 #endif
 
 	/* 
 	 * pointers to (original) parent process, youngest child, younger sibling,
 	 * older sibling, respectively.  (p->father can be replaced with 
 	 * p->real_parent->pid)
 	 */
 	struct task_struct *real_parent; /* real parent process */
 	struct task_struct *parent; /* recipient of SIGCHLD, wait4() reports */
-
--[[linux-2.6.33/task_struct]]

 	/*
 	 * children/sibling forms the list of my natural children
 	 */
 	struct list_head children;	/* list of my children */
 	struct list_head sibling;	/* linkage in my parent's children list */
 	struct task_struct *group_leader;	/* threadgroup leader */
 
-
--[[linux-2.6.33/list_head]]

 	/*
 	 * ptraced is the list of tasks this task is using ptrace on.
 	 * This includes both natural children and PTRACE_ATTACH targets.
 	 * p->ptrace_entry is p's link on the p->parent->ptraced list.
 	 */
 	struct list_head ptraced;
 	struct list_head ptrace_entry;
 
 	/*
 	 * This is the tracer handle for the ptrace BTS extension.
 	 * This field actually belongs to the ptracer task.
 	 */
 	struct bts_context *bts;
 
-
--[[linux-2.6.33/bts_context]]

 	/* PID/PID hash table linkage. */
 	struct pid_link pids[PIDTYPE_MAX];
 	struct list_head thread_group;
 
-
--[[linux-2.6.33/pid_link]]

 	struct completion *vfork_done;		/* for vfork() */
 	int __user *set_child_tid;		/* CLONE_CHILD_SETTID */
 	int __user *clear_child_tid;		/* CLONE_CHILD_CLEARTID */
 
-
--[[linux-2.6.33/completion]]
-
--[[linux-2.6.33/__user]]

 	cputime_t utime, stime, utimescaled, stimescaled;
 	cputime_t gtime;
-
--[[linux-2.6.33/cputime_t]]

 #ifndef CONFIG_VIRT_CPU_ACCOUNTING
-
--[[linux-2.6.33/CONFIG_VIRT_CPU_ACCOUNTING]]

 	cputime_t prev_utime, prev_stime;
 #endif
 	unsigned long nvcsw, nivcsw; /* context switch counts */
 	struct timespec start_time; 		/* monotonic time */
 	struct timespec real_start_time;	/* boot based time */
-
--[[linux-2.6.33/timespec]]

 /* mm fault and swap info: this can arguably be seen as either mm-specific or thread-specific */
 	unsigned long min_flt, maj_flt;
 
 	struct task_cputime cputime_expires;
 	struct list_head cpu_timers[3];
 
-
--[[linux-2.6.33/task_cputime]]

 /* process credentials */
 	const struct cred *real_cred;	/* objective and real subjective task
 					 * credentials (COW) */
 	const struct cred *cred;	/* effective (overridable) subjective task
 					 * credentials (COW) */
-
--[[linux-2.6.33/cred]]

 	struct mutex cred_guard_mutex;	/* guard against foreign influences on
 					 * credential calculations
 					 * (notably. ptrace) */
 	struct cred *replacement_session_keyring; /* for KEYCTL_SESSION_TO_PARENT */
 
-
--[[linux-2.6.33/cred]]
-
--[[linux-2.6.33/mutex]]

 	char comm[TASK_COMM_LEN]; /* executable name excluding path
 				     - access with [gs]et_task_comm (which lock
 				       it with task_lock())
 				     - initialized normally by setup_new_exec */
 /* file system info */
 	int link_count, total_link_count;
 #ifdef CONFIG_SYSVIPC
-
--[[linux-2.6.33/CONFIG_SYSVIPC]]

 /* ipc stuff */
 	struct sysv_sem sysvsem;
-
--[[linux-2.6.33/sysv_sem]]

 #endif
 #ifdef CONFIG_DETECT_HUNG_TASK
-
--[[linux-2.6.33/CONFIG_DETECT_HUNG_TASK]]

 /* hung task detection */
 	unsigned long last_switch_count;
 #endif
 /* CPU-specific state of this task */
 	struct thread_struct thread;
-
--[[linux-2.6.33/thread_struct]]

 /* filesystem information */
 	struct fs_struct *fs;
-
--[[linux-2.6.33/fs_struct]]

 /* open file information */
 	struct files_struct *files;
-
--[[linux-2.6.33/files_struct]]

 /* namespaces */
 	struct nsproxy *nsproxy;
-
--[[linux-2.6.33/nsproxy]]

 /* signal handlers */
 	struct signal_struct *signal;
 	struct sighand_struct *sighand;
 
-
--[[linux-2.6.33/signal_struct]]
-
--[[linux-2.6.33/sighand_struct]]

 	sigset_t blocked, real_blocked;
 	sigset_t saved_sigmask;	/* restored if set_restore_sigmask() was used */
 	struct sigpending pending;
 
-
--[[linux-2.6.33/sigset_t]]
-
--[[linux-2.6.33/sigpending]]

 	unsigned long sas_ss_sp;
 	size_t sas_ss_size;
 	int (*notifier)(void *priv);
 	void *notifier_data;
 	sigset_t *notifier_mask;
 	struct audit_context *audit_context;
-
--[[linux-2.6.33/audit_context]]

 #ifdef CONFIG_AUDITSYSCALL
-
--[[linux-2.6.33/CONFIG_AUDITSYSCALL]]

 	uid_t loginuid;
 	unsigned int sessionid;
 #endif
 	seccomp_t seccomp;
 
-
--[[linux-2.6.33/seccomp_t]]

 /* Thread group tracking */
    	u32 parent_exec_id;
    	u32 self_exec_id;
 /* Protection of (de-)allocation: mm, files, fs, tty, keyrings, mems_allowed,
  * mempolicy */
 	spinlock_t alloc_lock;
 
-
--[[linux-2.6.33/spinlock_t]]

 #ifdef CONFIG_GENERIC_HARDIRQS
-
--[[linux-2.6.33/CONFIG_GENERIC_HARDIRQS]]

 	/* IRQ handler threads */
 	struct irqaction *irqaction;
-
--[[linux-2.6.33/irqaction]]

 #endif
 
 	/* Protection of the PI data structures: */
 	raw_spinlock_t pi_lock;
 
-
--[[linux-2.6.33/raw_spinlock_t]]

 #ifdef CONFIG_RT_MUTEXES
-
--[[linux-2.6.33/CONFIG_RT_MUTEXES]]

 	/* PI waiters blocked on a rt_mutex held by this task */
 	struct plist_head pi_waiters;
 	/* Deadlock detection and priority inheritance handling */
 	struct rt_mutex_waiter *pi_blocked_on;
-
--[[linux-2.6.33/plist_head]]
-
--[[linux-2.6.33/rt_mutex_waiter]]

 #endif
 
 #ifdef CONFIG_DEBUG_MUTEXES
-
--[[linux-2.6.33/CONFIG_DEBUG_MUTEXES]]

 	/* mutex deadlock detection */
 	struct mutex_waiter *blocked_on;
-
--[[linux-2.6.33/mutex_waiter]]

 #endif
 #ifdef CONFIG_TRACE_IRQFLAGS
-
--[[linux-2.6.33/CONFIG_TRACE_IRQFLAGS]]

 	unsigned int irq_events;
 	unsigned long hardirq_enable_ip;
 	unsigned long hardirq_disable_ip;
 	unsigned int hardirq_enable_event;
 	unsigned int hardirq_disable_event;
 	int hardirqs_enabled;
 	int hardirq_context;
 	unsigned long softirq_disable_ip;
 	unsigned long softirq_enable_ip;
 	unsigned int softirq_disable_event;
 	unsigned int softirq_enable_event;
 	int softirqs_enabled;
 	int softirq_context;
 #endif
 #ifdef CONFIG_LOCKDEP
-
--[[linux-2.6.33/CONFIG_LOCKDEP]]

 # define MAX_LOCK_DEPTH 48UL
 	u64 curr_chain_key;
 	int lockdep_depth;
 	unsigned int lockdep_recursion;
 	struct held_lock held_locks[MAX_LOCK_DEPTH];
 	gfp_t lockdep_reclaim_gfp;
-
--[[linux-2.6.33/held_lock]]
-
--[[linux-2.6.33/gfp_t]]

 #endif
 
 /* journalling filesystem info */
 	void *journal_info;
 
 /* stacked block device info */
 	struct bio *bio_list, **bio_tail;
 
-
--[[linux-2.6.33/bio]]

 /* VM state */
 	struct reclaim_state *reclaim_state;
 
-
--[[linux-2.6.33/reclaim_state]]

 	struct backing_dev_info *backing_dev_info;
 
-
--[[linux-2.6.33/backing_dev_info]]

 	struct io_context *io_context;
 
-
--[[linux-2.6.33/io_context]]

 	unsigned long ptrace_message;
 	siginfo_t *last_siginfo; /* For ptrace use.  */
 	struct task_io_accounting ioac;
-
--[[linux-2.6.33/siginfo_t]]
-
--[[linux-2.6.33/task_io_accounting]]

 #if defined(CONFIG_TASK_XACCT)
-
--[[linux-2.6.33/CONFIG_TASK_XACCT]]

 	u64 acct_rss_mem1;	/* accumulated rss usage */
 	u64 acct_vm_mem1;	/* accumulated virtual memory usage */
 	cputime_t acct_timexpd;	/* stime + utime since last update */
-
--[[linux-2.6.33/cputime_t]]

 #endif
 #ifdef CONFIG_CPUSETS
-
--[[linux-2.6.33/CONFIG_CPUSETS]]

 	nodemask_t mems_allowed;	/* Protected by alloc_lock */
 	int cpuset_mem_spread_rotor;
-
--[[linux-2.6.33/nodemask_t]]

 #endif
 #ifdef CONFIG_CGROUPS
-
--[[linux-2.6.33/CONFIG_CGROUPS]]

 	/* Control Group info protected by css_set_lock */
 	struct css_set *cgroups;
 	/* cg_list protected by css_set_lock and tsk->alloc_lock */
 	struct list_head cg_list;
-
--[[linux-2.6.33/css_set]]
-
--[[linux-2.6.33/list_head]]

 #endif
 #ifdef CONFIG_FUTEX
-
--[[linux-2.6.33/CONFIG_FUTEX]]

 	struct robust_list_head __user *robust_list;
-
--[[linux-2.6.33/robust_list_head]]

 #ifdef CONFIG_COMPAT
-
--[[linux-2.6.33/CONFIG_COMPAT]]

 	struct compat_robust_list_head __user *compat_robust_list;
-
--[[linux-2.6.33/compat_robust_list_head]]

 #endif
 	struct list_head pi_state_list;
 	struct futex_pi_state *pi_state_cache;
-
--[[linux-2.6.33/list_head]]
-
--[[linux-2.6.33/futex_pi_state]]

 #endif
 #ifdef CONFIG_PERF_EVENTS
-
--[[linux-2.6.33/CONFIG_PREF_EVENTS]]

 	struct perf_event_context *perf_event_ctxp;
 	struct mutex perf_event_mutex;
 	struct list_head perf_event_list;
-
--[[linux-2.6.33/perf_event_context]]
-
--[[linux-2.6.33/mutex]]
-
--[[linux-2.6.33/list_head]]

 #endif
 #ifdef CONFIG_NUMA
-
--[[linux-2.6.33/CONFIG_NUMA]]

 	struct mempolicy *mempolicy;	/* Protected by alloc_lock */
 	short il_next;
-
--[[linux-2.6.33/mempolicy]]

 #endif
 	atomic_t fs_excl;	/* holding fs exclusive resources */
 	struct rcu_head rcu;
 
-
--[[linux-2.6.33/atomic_t]]
-
--[[linux-2.6.33/rcu_head]]

 	/*
 	 * cache last used pipe for splice
 	 */
 	struct pipe_inode_info *splice_pipe;
-
--[[linux-2.6.33/pipe_inode_info]]

 #ifdef	CONFIG_TASK_DELAY_ACCT
-
--[[linux-2.6.33/CONFIG_TASK_DELAY_ACCT]]

 	struct task_delay_info *delays;
-
--[[linux-2.6.33/task_delay_info]]

 #endif
 #ifdef CONFIG_FAULT_INJECTION
-
--[[linux-2.6.33/CONFIG_FAULT_INJECTION]]

 	int make_it_fail;
 #endif
 	struct prop_local_single dirties;
-
--[[linux-2.6.33/prop_local_single]]

 #ifdef CONFIG_LATENCYTOP
-
--[[linux-2.6.33/CONFIG_LATENCYTOP]]

 	int latency_record_count;
 	struct latency_record latency_record[LT_SAVECOUNT];
-
--[[linux-2.6.33/latency_record]]
-
--[[linux-2.6.33/LT_SAVECOUNT]]

 #endif
 	/*
 	 * time slack values; these are used to round up poll() and
 	 * select() etc timeout values. These are in nanoseconds.
 	 */
 	unsigned long timer_slack_ns;
 	unsigned long default_timer_slack_ns;
 
 	struct list_head	*scm_work_list;
 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
-
--[[linux-2.6.33/CONFIG_FUNCTION_GRAPH_TRACER]]

 	/* Index of current stored adress in ret_stack */
 	int curr_ret_stack;
 	/* Stack of return addresses for return function tracing */
 	struct ftrace_ret_stack	*ret_stack;
 	/* time stamp for last schedule */
 	unsigned long long ftrace_timestamp;
-
--[[linux-2.6.33/ftrace_ret_stack]]

 	/*
 	 * Number of functions that haven't been traced
 	 * because of depth overrun.
 	 */
 	atomic_t trace_overrun;
 	/* Pause for the tracing */
 	atomic_t tracing_graph_pause;
-
--[[linux-2.6.33/atomic_t]]

 #endif
 #ifdef CONFIG_TRACING
-
--[[linux-2.6.33/CONFIG_TRACING]]

 	/* state flags for use by tracers */
 	unsigned long trace;
 	/* bitmask of trace recursion */
 	unsigned long trace_recursion;
 #endif /* CONFIG_TRACING */
 	unsigned long stack_start;
 #ifdef CONFIG_CGROUP_MEM_RES_CTLR /* memcg uses this to do batch job */
-
--[[linux-2.6.33/CONFIG_CGROUP_MEM_RES_CTLR]]

 	struct memcg_batch_info {
 		int do_batch;	/* incremented when batch uncharge started */
 		struct mem_cgroup *memcg; /* target memcg of uncharge */
 		unsigned long bytes; 		/* uncharged usage */
 		unsigned long memsw_bytes; /* uncharged mem+swap usage */
 	} memcg_batch;
-
--[[linux-2.6.33/mem_cgroup]]

 #endif
 };


*コメント [#lf590df6]


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS