From a4c373515ebdff1b456e71c757660e3d06f5f07e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 21 Oct 2005 00:15:17 +0000 Subject: [PATCH] When a team died, only the time of its children were added to its parent dead children time counters - not its own time. Moved time calculation to team_remove_team(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14464 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/team.c | 12 ++++++++++-- src/system/kernel/thread.c | 4 ---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/system/kernel/team.c b/src/system/kernel/team.c index 6c31b9ba1b..a6d28b66f4 100644 --- a/src/system/kernel/team.c +++ b/src/system/kernel/team.c @@ -745,6 +745,14 @@ delete_team_struct(struct team *team) void team_remove_team(struct team *team, struct process_group **_freeGroup) { + struct team *parent = team->parent; + + // remember how long this team lasted + parent->dead_children.kernel_time += team->dead_threads_kernel_time + + team->dead_children.kernel_time; + parent->dead_children.user_time += team->dead_threads_user_time + + team->dead_children.user_time; + hash_remove(team_hash, team); sUsedTeams--; @@ -756,8 +764,8 @@ team_remove_team(struct team *team, struct process_group **_freeGroup) // remove us from our process group remove_team_from_group(team, _freeGroup); - // remove us from our parent - remove_team_from_parent(team->parent, team); + // remove us from our parent + remove_team_from_parent(parent, team); } diff --git a/src/system/kernel/thread.c b/src/system/kernel/thread.c index a7ee5e2790..0c9b12f5f5 100644 --- a/src/system/kernel/thread.c +++ b/src/system/kernel/thread.c @@ -945,10 +945,6 @@ thread_exit(void) groupDeadSem = team->group->dead_child_sem; } - // remember how long this team lasted - parent->dead_children.kernel_time += team->dead_threads_kernel_time; - parent->dead_children.user_time += team->dead_threads_user_time; - team_remove_team(team, &freeGroup); } RELEASE_TEAM_LOCK();