atoppatch (1:1.23-1) 02patch-2.6.16_atopacct

Summary

 02patch-2.6.16_atopacct |  124 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 124 insertions(+)

    
download this patch

Patch contents

--- atoppatch-1.23.orig/02patch-2.6.16_atopacct
+++ atoppatch-1.23/02patch-2.6.16_atopacct
@@ -0,0 +1,124 @@
+diff -u --recursive linux-2.6.16.1-orig/include/linux/acct.h linux/include/linux/acct.h
+--- linux-2.6.16.1-orig/include/linux/acct.h	2006-04-05 11:25:08.000000000 +0200
++++ linux/include/linux/acct.h	2006-04-06 12:35:25.000000000 +0200
+@@ -98,6 +98,54 @@
+ 	char		ac_comm[ACCT_COMM];	/* Command Name */
+ };
+ 
++struct acct_atop
++{
++	char		ac_flag;		/* Flags */
++	char		ac_version;		/* Always set to ACCT_VERSION */
++	__u32		ac_pid;			/* Process ID */
++	__u32		ac_ppid;		/* Parent Process ID */
++	__u16		ac_uid16;		/* LSB of Real User ID */
++	__u16		ac_gid16;		/* LSB of Real Group ID */
++	__u16		ac_tty;			/* Control Terminal */
++	__u32		ac_btime;		/* Process Creation Time */
++	comp_t		ac_utime;		/* User Time */
++	comp_t		ac_stime;		/* System Time */
++	comp_t		ac_etime;		/* Elapsed Time */
++	comp_t		ac_mem;			/* Virtual  Memory */
++	comp_t		ac_rss;			/* Resident Memory */
++	comp_t		ac_io;			/* Chars Transferred */
++	comp_t		ac_rw;			/* Blocks Read or Written */
++	comp_t		ac_bread;		/* Blocks Read */
++	comp_t		ac_bwrite;		/* Blocks Written */
++	comp2_t		ac_dskrsz;		/* Cum. blocks read */
++	comp2_t		ac_dskwsz;		/* Cum. blocks written */
++	comp_t		ac_tcpsnd;		/* TCP send requests */
++	comp_t		ac_tcprcv;		/* TCP recv requests */
++	comp2_t		ac_tcpssz;		/* TCP cum. length   */
++	comp2_t		ac_tcprsz;		/* TCP cum. length   */
++	comp_t		ac_udpsnd;		/* UDP send requests */
++	comp_t		ac_udprcv;		/* UDP recv requests */
++	comp2_t		ac_udpssz;		/* UDP cum. length   */
++	comp2_t		ac_udprsz;		/* UDP cum. length   */
++	comp_t		ac_rawsnd;		/* RAW send requests */
++	comp_t		ac_rawrcv;		/* RAW recv requests */
++	comp_t		ac_minflt;		/* Minor Pagefaults */
++	comp_t		ac_majflt;		/* Major Pagefaults */
++	comp_t		ac_swaps;		/* Number of Swaps */
++/* m68k had no padding here. */
++#if !defined(CONFIG_M68K) || !defined(__KERNEL__)
++	__u16		ac_ahz;			/* AHZ */
++#endif
++	__u32		ac_exitcode;		/* Exitcode */
++	char		ac_comm[ACCT_COMM + 1];	/* Command Name */
++	__u8		ac_etime_hi;		/* Elapsed Time MSB */
++	__u16		ac_etime_lo;		/* Elapsed Time LSB */
++	__u32		ac_uid;			/* Real User ID */
++	__u32		ac_gid;			/* Real Group ID */
++};
++
++
++
+ /*
+  *  accounting flags
+  */
+@@ -144,7 +192,13 @@
+  * 5: new binary incompatible format (128 bytes, second half)
+  *
+  */
+-
++#define CONFIG_PROCESS_ACCT_ATOP
++ 
++#ifdef CONFIG_PROCESS_ACCT_ATOP
++#define ACCT_VERSION	6
++#define AHZ		(USER_HZ)
++typedef struct acct_atop acct_t;
++#else
+ #ifdef CONFIG_BSD_PROCESS_ACCT_V3
+ #define ACCT_VERSION	3
+ #define AHZ		100
+@@ -158,6 +212,7 @@
+ #define AHZ		(USER_HZ)
+ typedef struct acct acct_t;
+ #endif
++#endif
+ 
+ #else
+ #define ACCT_VERSION	2
+diff -u --recursive linux-2.6.16.1-orig/kernel/acct.c linux/kernel/acct.c
+--- linux-2.6.16.1-orig/kernel/acct.c	2006-04-06 13:14:01.000000000 +0200
++++ linux/kernel/acct.c	2006-04-06 12:40:46.000000000 +0200
+@@ -344,7 +344,7 @@
+ 	return exp;
+ }
+ 
+-#if ACCT_VERSION==1 || ACCT_VERSION==2
++#if ACCT_VERSION==1 || ACCT_VERSION==2 || ACCT_VERSION==6
+ /*
+  * encode an u64 into a comp2_t (24 bits)
+  *
+@@ -490,6 +490,30 @@
+ 	ac.ac_pid = current->tgid;
+ 	ac.ac_ppid = current->parent->tgid;
+ #endif
++#if ACCT_VERSION==6		/* ATOP */
++	ac.ac_pid    = current->pid;
++	ac.ac_ppid   = current->parent->pid;
++	ac.ac_uid16  = current->uid;
++	ac.ac_gid16  = current->gid;
++	ac.ac_ahz    = AHZ;
++	ac.ac_bread  = encode_comp_t(current->stat.dsk_rio);
++	ac.ac_bwrite = encode_comp_t(current->stat.dsk_wio);
++	ac.ac_dskrsz = encode_comp2_t(current->stat.dsk_rsz);
++	ac.ac_dskwsz = encode_comp2_t(current->stat.dsk_wsz);
++	ac.ac_tcpsnd = encode_comp_t(current->stat.tcp_snd);
++	ac.ac_tcprcv = encode_comp_t(current->stat.tcp_rcv);
++	ac.ac_tcpssz = encode_comp2_t(current->stat.tcp_ssz);
++	ac.ac_tcprsz = encode_comp2_t(current->stat.tcp_rsz);
++	ac.ac_udpsnd = encode_comp_t(current->stat.udp_snd);
++	ac.ac_udprcv = encode_comp_t(current->stat.udp_rcv);
++	ac.ac_udpssz = encode_comp2_t(current->stat.udp_ssz);
++	ac.ac_udprsz = encode_comp2_t(current->stat.udp_rsz);
++	ac.ac_rawsnd = encode_comp_t(current->stat.raw_snd);
++	ac.ac_rawrcv = encode_comp_t(current->stat.raw_rcv);
++	ac.ac_rss    = current->mm ?
++	               encode_comp_t(get_mm_rss(current->mm)<<(PAGE_SHIFT-10)) :
++	               encode_comp_t(0);
++#endif
+ 
+ 	read_lock(&tasklist_lock);	/* pin current->signal */
+ 	ac.ac_tty = current->signal->tty ?