summaryrefslogtreecommitdiff
path: root/arch/s390/kernel
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2009-03-26 15:23:53 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2009-03-26 15:24:07 +0100
commit5168ce2c647f02756803bef7b74906f485491a1c (patch)
tree93858f54f791e94ddb95b74256c2cdb8cafe7b8c /arch/s390/kernel
parentcbdc229245e8cf5c201e68221ebf2f33d2aaf029 (diff)
downloadlwn-5168ce2c647f02756803bef7b74906f485491a1c.tar.gz
lwn-5168ce2c647f02756803bef7b74906f485491a1c.zip
[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>
Diffstat (limited to 'arch/s390/kernel')
-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,
unsigned long unused,
struct task_struct *p, struct pt_regs *regs)
{
+ struct thread_info *ti;
struct fake_frame
{
struct stack_frame sf;
@@ -214,6 +215,10 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp,
p->thread.mm_segment = get_fs();
/* Don't copy debug registers */
memset(&p->thread.per_info, 0, sizeof(p->thread.per_info));
+ /* Initialize per thread user and system timer values */
+ ti = task_thread_info(p);
+ ti->user_timer = 0;
+ ti->system_timer = 0;
return 0;
}