[PATCH] per-task-delay-accounting: delay accounting usage of taskstats interface
Usage of taskstats interface by delay accounting. Signed-off-by: Shailabh Nagar <nagar@us.ibm.com> Signed-off-by: Balbir Singh <balbir@in.ibm.com> Cc: Jes Sorensen <jes@sgi.com> Cc: Peter Chubb <peterc@gelato.unsw.edu.au> Cc: Erich Focht <efocht@ess.nec.de> Cc: Levent Serinol <lserinol@gmail.com> Cc: Jay Lan <jlan@engr.sgi.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
c757249af1
commit
6f44993fe1
@@ -18,13 +18,13 @@
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/taskstats_kern.h>
|
||||
#include <linux/delayacct.h>
|
||||
#include <net/genetlink.h>
|
||||
#include <asm/atomic.h>
|
||||
|
||||
static DEFINE_PER_CPU(__u32, taskstats_seqnum) = { 0 };
|
||||
static int family_registered;
|
||||
kmem_cache_t *taskstats_cache;
|
||||
static DEFINE_MUTEX(taskstats_exit_mutex);
|
||||
|
||||
static struct genl_family family = {
|
||||
.id = GENL_ID_GENERATE,
|
||||
@@ -120,7 +120,10 @@ static int fill_pid(pid_t pid, struct task_struct *pidtsk,
|
||||
* goto err;
|
||||
*/
|
||||
|
||||
err:
|
||||
rc = delayacct_add_tsk(stats, tsk);
|
||||
stats->version = TASKSTATS_VERSION;
|
||||
|
||||
/* Define err: label here if needed */
|
||||
put_task_struct(tsk);
|
||||
return rc;
|
||||
|
||||
@@ -152,8 +155,14 @@ static int fill_tgid(pid_t tgid, struct task_struct *tgidtsk,
|
||||
* break;
|
||||
*/
|
||||
|
||||
rc = delayacct_add_tsk(stats, tsk);
|
||||
if (rc)
|
||||
break;
|
||||
|
||||
} while_each_thread(first, tsk);
|
||||
read_unlock(&tasklist_lock);
|
||||
stats->version = TASKSTATS_VERSION;
|
||||
|
||||
|
||||
/*
|
||||
* Accounting subsytems can also add calls here if they don't
|
||||
@@ -233,8 +242,6 @@ void taskstats_exit_send(struct task_struct *tsk, struct taskstats *tidstats,
|
||||
if (!family_registered || !tidstats)
|
||||
return;
|
||||
|
||||
mutex_lock(&taskstats_exit_mutex);
|
||||
|
||||
is_thread_group = !thread_group_empty(tsk);
|
||||
rc = 0;
|
||||
|
||||
@@ -292,7 +299,6 @@ nla_put_failure:
|
||||
err_skb:
|
||||
nlmsg_free(rep_skb);
|
||||
ret:
|
||||
mutex_unlock(&taskstats_exit_mutex);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user