]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/linux/taskstats.h
[PATCH] csa: Extended system accounting over taskstats
[linux-2.6-omap-h63xx.git] / include / linux / taskstats.h
index 51f62759bea9fd23a5158e19f42b5480fde60e29..3d2c304886b03e4361bb33a2371807fa7f194afd 100644 (file)
@@ -2,6 +2,7 @@
  *
  * Copyright (C) Shailabh Nagar, IBM Corp. 2006
  *           (C) Balbir Singh,   IBM Corp. 2006
+ *           (C) Jay Lan,        SGI, 2006
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of version 2.1 of the GNU Lesser General Public License
  *     c) add new fields after version comment; maintain 64-bit alignment
  */
 
-#define TASKSTATS_VERSION      1
+
+#define TASKSTATS_VERSION      2
+#define TS_COMM_LEN            16      /* should sync up with TASK_COMM_LEN
+                                        * in linux/sched.h */
 
 struct taskstats {
 
        /* Version 1 */
-       __u64   version;
+       __u16   version;
+       __u32   ac_exitcode;    /* Exit status */
+       __u8    ac_flag;                /* Record flags */
+       __u8    ac_nice;                /* task_nice */
+
+       /* Delay accounting fields start
+        *
+        * All values, until comment "Delay accounting fields end" are
+        * available only if delay accounting is enabled, even though the last
+        * few fields are not delays
+        *
+        * xxx_count is the number of delay values recorded
+        * xxx_delay_total is the corresponding cumulative delay in nanoseconds
+        *
+        * xxx_delay_total wraps around to zero on overflow
+        * xxx_count incremented regardless of overflow
+        */
+
+       /* Delay waiting for cpu, while runnable
+        * count, delay_total NOT updated atomically
+        */
+       __u64   cpu_count;
+       __u64   cpu_delay_total;
+
+       /* Following four fields atomically updated using task->delays->lock */
+
+       /* Delay waiting for synchronous block I/O to complete
+        * does not account for delays in I/O submission
+        */
+       __u64   blkio_count;
+       __u64   blkio_delay_total;
+
+       /* Delay waiting for page fault I/O (swap in only) */
+       __u64   swapin_count;
+       __u64   swapin_delay_total;
+
+       /* cpu "wall-clock" running time
+        * On some architectures, value will adjust for cpu time stolen
+        * from the kernel in involuntary waits due to virtualization.
+        * Value is cumulative, in nanoseconds, without a corresponding count
+        * and wraps around to zero silently on overflow
+        */
+       __u64   cpu_run_real_total;
+
+       /* cpu "virtual" running time
+        * Uses time intervals seen by the kernel i.e. no adjustment
+        * for kernel's involuntary waits due to virtualization.
+        * Value is cumulative, in nanoseconds, without a corresponding count
+        * and wraps around to zero silently on overflow
+        */
+       __u64   cpu_run_virtual_total;
+       /* Delay accounting fields end */
+       /* version 1 ends here */
+
+       /* Basic Accounting Fields start */
+       char    ac_comm[TS_COMM_LEN];   /* Command name */
+       __u8    ac_sched;               /* Scheduling discipline */
+       __u8    ac_pad[3];
+       __u32   ac_uid;                 /* User ID */
+       __u32   ac_gid;                 /* Group ID */
+       __u32   ac_pid;                 /* Process ID */
+       __u32   ac_ppid;                /* Parent process ID */
+       __u32   ac_btime;               /* Begin time [sec since 1970] */
+       __u64   ac_etime;               /* Elapsed time [usec] */
+       __u64   ac_utime;               /* User CPU time [usec] */
+       __u64   ac_stime;               /* SYstem CPU time [usec] */
+       __u64   ac_minflt;              /* Minor Page Fault */
+       __u64   ac_majflt;              /* Major Page Fault */
+       /* Basic Accounting Fields end */
+
+       /* Extended accounting fields start */
+       __u64   acct_rss_mem1;          /* accumulated rss usage */
+       __u64   acct_vm_mem1;           /* accumulated virtual memory usage */
+       __u64   hiwater_rss;            /* High-watermark of RSS usage */
+       __u64   hiwater_vm;             /* High-water virtual memory usage */
+       __u64   read_char;              /* bytes read */
+       __u64   write_char;             /* bytes written */
+       __u64   read_syscalls;          /* read syscalls */
+       __u64   write_syscalls;         /* write syscalls */
+       /* Extended accounting fields end */
 };
 
 
-#define TASKSTATS_LISTEN_GROUP 0x1
-
 /*
  * Commands sent from userspace
  * Not versioned. New commands should only be inserted at the enum's end
@@ -71,6 +152,8 @@ enum {
        TASKSTATS_CMD_ATTR_UNSPEC = 0,
        TASKSTATS_CMD_ATTR_PID,
        TASKSTATS_CMD_ATTR_TGID,
+       TASKSTATS_CMD_ATTR_REGISTER_CPUMASK,
+       TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK,
        __TASKSTATS_CMD_ATTR_MAX,
 };