aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2009-03-26 10:23:53 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2009-03-26 10:24:07 -0400
commit5168ce2c647f02756803bef7b74906f485491a1c (patch)
tree93858f54f791e94ddb95b74256c2cdb8cafe7b8c
parentcbdc229245e8cf5c201e68221ebf2f33d2aaf029 (diff)
[S390] cputime: initialize per thread timer values on fork
Initialize per thread timer values instead of just copying them from the parent. That way it is easily possible to tell how much time a thread spent in user/system context. Doesn't fix a bug, this is just for debugging purposes. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r--arch/s390/kernel/process.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
index e0563baa1cfe..e6b480625cb3 100644
--- a/arch/s390/kernel/process.c
+++ b/arch/s390/kernel/process.c
@@ -163,6 +163,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp,
163 unsigned long unused, 163 unsigned long unused,
164 struct task_struct *p, struct pt_regs *regs) 164 struct task_struct *p, struct pt_regs *regs)
165{ 165{
166 struct thread_info *ti;
166 struct fake_frame 167 struct fake_frame
167 { 168 {
168 struct stack_frame sf; 169 struct stack_frame sf;
@@ -214,6 +215,10 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp,
214 p->thread.mm_segment = get_fs(); 215 p->thread.mm_segment = get_fs();
215 /* Don't copy debug registers */ 216 /* Don't copy debug registers */
216 memset(&p->thread.per_info, 0, sizeof(p->thread.per_info)); 217 memset(&p->thread.per_info, 0, sizeof(p->thread.per_info));
218 /* Initialize per thread user and system timer values */
219 ti = task_thread_info(p);
220 ti->user_timer = 0;
221 ti->system_timer = 0;
217 return 0; 222 return 0;
218} 223}
219 224