diff options
| author | Jay Lan <jlan@engr.sgi.com> | 2006-09-30 23:28:59 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-01 00:39:29 -0700 | 
| commit | 8f0ab5147951267134612570604cf8341901a80c (patch) | |
| tree | d394edb3ab69396128e7971136f05fd71d863ece | |
| parent | 9acc1853519a0473620d424105f9d49ea5b4e62e (diff) | |
| download | olio-linux-3.10-8f0ab5147951267134612570604cf8341901a80c.tar.xz olio-linux-3.10-8f0ab5147951267134612570604cf8341901a80c.zip  | |
[PATCH] csa: convert CONFIG tag for extended accounting routines
There were a few accounting data/macros that are used in CSA but are #ifdef'ed
inside CONFIG_BSD_PROCESS_ACCT.  This patch is to change those ifdef's from
CONFIG_BSD_PROCESS_ACCT to CONFIG_TASK_XACCT.  A few defines are moved from
kernel/acct.c and include/linux/acct.h to kernel/tsacct.c and
include/linux/tsacct_kern.h.
Signed-off-by: Jay Lan <jlan@sgi.com>
Cc: Shailabh Nagar <nagar@watson.ibm.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Cc: Jes Sorensen <jes@sgi.com>
Cc: Chris Sturtivant <csturtiv@sgi.com>
Cc: Tony Ernst <tee@sgi.com>
Cc: Guillaume Thouvenin <guillaume.thouvenin@bull.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
| -rw-r--r-- | fs/compat.c | 2 | ||||
| -rw-r--r-- | fs/exec.c | 2 | ||||
| -rw-r--r-- | include/linux/acct.h | 4 | ||||
| -rw-r--r-- | include/linux/sched.h | 2 | ||||
| -rw-r--r-- | include/linux/tsacct_kern.h | 6 | ||||
| -rw-r--r-- | kernel/acct.c | 30 | ||||
| -rw-r--r-- | kernel/exit.c | 1 | ||||
| -rw-r--r-- | kernel/fork.c | 1 | ||||
| -rw-r--r-- | kernel/sched.c | 2 | ||||
| -rw-r--r-- | kernel/tsacct.c | 30 | 
10 files changed, 42 insertions, 38 deletions
diff --git a/fs/compat.c b/fs/compat.c index 6b90bf35f61..13fb08d096c 100644 --- a/fs/compat.c +++ b/fs/compat.c @@ -44,7 +44,7 @@  #include <linux/nfsd/syscall.h>  #include <linux/personality.h>  #include <linux/rwsem.h> -#include <linux/acct.h> +#include <linux/tsacct_kern.h>  #include <linux/mm.h>  #include <net/sock.h>		/* siocdevprivate_ioctl */ diff --git a/fs/exec.c b/fs/exec.c index a8efe35176b..0db3fc3c5f0 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -46,7 +46,7 @@  #include <linux/security.h>  #include <linux/syscalls.h>  #include <linux/rmap.h> -#include <linux/acct.h> +#include <linux/tsacct_kern.h>  #include <linux/cn_proc.h>  #include <linux/audit.h> diff --git a/include/linux/acct.h b/include/linux/acct.h index e86bae7324d..0496d1f0995 100644 --- a/include/linux/acct.h +++ b/include/linux/acct.h @@ -124,16 +124,12 @@ extern void acct_auto_close(struct super_block *sb);  extern void acct_init_pacct(struct pacct_struct *pacct);  extern void acct_collect(long exitcode, int group_dead);  extern void acct_process(void); -extern void acct_update_integrals(struct task_struct *tsk); -extern void acct_clear_integrals(struct task_struct *tsk);  #else  #define acct_auto_close_mnt(x)	do { } while (0)  #define acct_auto_close(x)	do { } while (0)  #define acct_init_pacct(x)	do { } while (0)  #define acct_collect(x,y)	do { } while (0)  #define acct_process()		do { } while (0) -#define acct_update_integrals(x)		do { } while (0) -#define acct_clear_integrals(task)	do { } while (0)  #endif  /* diff --git a/include/linux/sched.h b/include/linux/sched.h index fc4a9873ec1..4ddeb0f982f 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -981,7 +981,7 @@ struct task_struct {  	wait_queue_t *io_wait;  /* i/o counters(bytes read/written, #syscalls */  	u64 rchar, wchar, syscr, syscw; -#if defined(CONFIG_BSD_PROCESS_ACCT) +#if defined(CONFIG_TASK_XACCT)  	u64 acct_rss_mem1;	/* accumulated rss usage */  	u64 acct_vm_mem1;	/* accumulated virtual memory usage */  	clock_t acct_stimexpd;	/* clock_t-converted stime since last update */ diff --git a/include/linux/tsacct_kern.h b/include/linux/tsacct_kern.h index 74102dcae67..7e50ac795b0 100644 --- a/include/linux/tsacct_kern.h +++ b/include/linux/tsacct_kern.h @@ -18,9 +18,15 @@ static inline void bacct_add_tsk(struct taskstats *stats, struct task_struct *ts  #ifdef CONFIG_TASK_XACCT  extern void xacct_add_tsk(struct taskstats *stats, struct task_struct *p); +extern void acct_update_integrals(struct task_struct *tsk); +extern void acct_clear_integrals(struct task_struct *tsk);  #else  static inline void xacct_add_tsk(struct taskstats *stats, struct task_struct *p)  {} +static inline void acct_update_integrals(struct task_struct *tsk) +{} +static inline void acct_clear_integrals(struct task_struct *tsk) +{}  #endif /* CONFIG_TASK_XACCT */  #endif diff --git a/kernel/acct.c b/kernel/acct.c index f4330acead4..0aad5ca36a8 100644 --- a/kernel/acct.c +++ b/kernel/acct.c @@ -602,33 +602,3 @@ void acct_process(void)  	do_acct_process(file);  	fput(file);  } - - -/** - * acct_update_integrals - update mm integral fields in task_struct - * @tsk: task_struct for accounting - */ -void acct_update_integrals(struct task_struct *tsk) -{ -	if (likely(tsk->mm)) { -		long delta = -			cputime_to_jiffies(tsk->stime) - tsk->acct_stimexpd; - -		if (delta == 0) -			return; -		tsk->acct_stimexpd = tsk->stime; -		tsk->acct_rss_mem1 += delta * get_mm_rss(tsk->mm); -		tsk->acct_vm_mem1 += delta * tsk->mm->total_vm; -	} -} - -/** - * acct_clear_integrals - clear the mm integral fields in task_struct - * @tsk: task_struct whose accounting fields are cleared - */ -void acct_clear_integrals(struct task_struct *tsk) -{ -	tsk->acct_stimexpd = 0; -	tsk->acct_rss_mem1 = 0; -	tsk->acct_vm_mem1 = 0; -} diff --git a/kernel/exit.c b/kernel/exit.c index c189de2927a..3b47f26985f 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -18,6 +18,7 @@  #include <linux/security.h>  #include <linux/cpu.h>  #include <linux/acct.h> +#include <linux/tsacct_kern.h>  #include <linux/file.h>  #include <linux/binfmts.h>  #include <linux/ptrace.h> diff --git a/kernel/fork.c b/kernel/fork.c index 1c999f3e0b4..89f666491d1 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -42,6 +42,7 @@  #include <linux/profile.h>  #include <linux/rmap.h>  #include <linux/acct.h> +#include <linux/tsacct_kern.h>  #include <linux/cn_proc.h>  #include <linux/delayacct.h>  #include <linux/taskstats_kern.h> diff --git a/kernel/sched.c b/kernel/sched.c index 74f169ac077..2bbd948f016 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -49,7 +49,7 @@  #include <linux/seq_file.h>  #include <linux/syscalls.h>  #include <linux/times.h> -#include <linux/acct.h> +#include <linux/tsacct_kern.h>  #include <linux/kprobes.h>  #include <linux/delayacct.h>  #include <asm/tlb.h> diff --git a/kernel/tsacct.c b/kernel/tsacct.c index 410483490cf..47c71daa416 100644 --- a/kernel/tsacct.c +++ b/kernel/tsacct.c @@ -88,4 +88,34 @@ void xacct_add_tsk(struct taskstats *stats, struct task_struct *p)  	stats->read_syscalls	= p->syscr;  	stats->write_syscalls	= p->syscw;  } + + +/** + * acct_update_integrals - update mm integral fields in task_struct + * @tsk: task_struct for accounting + */ +void acct_update_integrals(struct task_struct *tsk) +{ +	if (likely(tsk->mm)) { +		long delta = +			cputime_to_jiffies(tsk->stime) - tsk->acct_stimexpd; + +		if (delta == 0) +			return; +		tsk->acct_stimexpd = tsk->stime; +		tsk->acct_rss_mem1 += delta * get_mm_rss(tsk->mm); +		tsk->acct_vm_mem1 += delta * tsk->mm->total_vm; +	} +} + +/** + * acct_clear_integrals - clear the mm integral fields in task_struct + * @tsk: task_struct whose accounting fields are cleared + */ +void acct_clear_integrals(struct task_struct *tsk) +{ +	tsk->acct_stimexpd = 0; +	tsk->acct_rss_mem1 = 0; +	tsk->acct_vm_mem1 = 0; +}  #endif  |