Blame view
include/linux/acct.h
5.75 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/* * BSD Process Accounting for Linux - Definitions * * Author: Marco van Wieringen (mvw@planets.elm.net) * * This header file contains the definitions needed to implement * BSD-style process accounting. The kernel accounting code and all * user-level programs that try to do something useful with the * process accounting log must include this file. * * Copyright (C) 1995 - 1997 Marco van Wieringen - ELM Consultancy B.V. * */ #ifndef _LINUX_ACCT_H #define _LINUX_ACCT_H #include <linux/types.h> |
ff6ed4063 [PATCH] acct.h ne... |
19 |
|
1da177e4c Linux-2.6.12-rc2 |
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
#include <asm/param.h> #include <asm/byteorder.h> /* * comp_t is a 16-bit "floating" point number with a 3-bit base 8 * exponent and a 13-bit fraction. * comp2_t is 24-bit with 5-bit base 2 exponent and 20 bit fraction * (leading 1 not stored). * See linux/kernel/acct.c for the specific encoding systems used. */ typedef __u16 comp_t; typedef __u32 comp2_t; /* * accounting file record * * This structure contains all of the information written out to the * process accounting file whenever a process exits. */ #define ACCT_COMM 16 struct acct { char ac_flag; /* Flags */ char ac_version; /* Always set to ACCT_VERSION */ /* for binary compatibility back until 2.0 */ __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; /* Average Memory Usage */ comp_t ac_io; /* Chars Transferred */ comp_t ac_rw; /* Blocks Read or Written */ 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 */ }; struct acct_v3 { char ac_flag; /* Flags */ char ac_version; /* Always set to ACCT_VERSION */ __u16 ac_tty; /* Control Terminal */ __u32 ac_exitcode; /* Exitcode */ __u32 ac_uid; /* Real User ID */ __u32 ac_gid; /* Real Group ID */ __u32 ac_pid; /* Process ID */ __u32 ac_ppid; /* Parent Process ID */ __u32 ac_btime; /* Process Creation Time */ #ifdef __KERNEL__ __u32 ac_etime; /* Elapsed Time */ #else float ac_etime; /* Elapsed Time */ #endif comp_t ac_utime; /* User Time */ comp_t ac_stime; /* System Time */ comp_t ac_mem; /* Average Memory Usage */ comp_t ac_io; /* Chars Transferred */ comp_t ac_rw; /* Blocks Read or Written */ comp_t ac_minflt; /* Minor Pagefaults */ comp_t ac_majflt; /* Major Pagefaults */ comp_t ac_swaps; /* Number of Swaps */ char ac_comm[ACCT_COMM]; /* Command Name */ }; /* * accounting flags */ /* bit set when the process ... */ #define AFORK 0x01 /* ... executed fork, but did not exec */ #define ASU 0x02 /* ... used super-user privileges */ #define ACOMPAT 0x04 /* ... used compatibility mode (VAX only not used) */ #define ACORE 0x08 /* ... dumped core */ #define AXSIG 0x10 /* ... was killed by a signal */ #ifdef __BIG_ENDIAN #define ACCT_BYTEORDER 0x80 /* accounting file is big endian */ #else #define ACCT_BYTEORDER 0x00 /* accounting file is little endian */ #endif #ifdef __KERNEL__ |
1da177e4c Linux-2.6.12-rc2 |
117 118 |
#ifdef CONFIG_BSD_PROCESS_ACCT |
7b7b1ace2 [PATCH] saner han... |
119 |
struct vfsmount; |
1da177e4c Linux-2.6.12-rc2 |
120 |
struct super_block; |
f6a570333 [PATCH] severing ... |
121 |
struct pacct_struct; |
0b6b030fc bsdacct: switch f... |
122 |
struct pid_namespace; |
c55b7c3e8 sysctl extern cle... |
123 |
extern int acct_parm[]; /* for sysctl */ |
7b7b1ace2 [PATCH] saner han... |
124 |
extern void acct_auto_close_mnt(struct vfsmount *m); |
1da177e4c Linux-2.6.12-rc2 |
125 |
extern void acct_auto_close(struct super_block *sb); |
f6ec29a42 [PATCH] pacct: av... |
126 127 |
extern void acct_collect(long exitcode, int group_dead); extern void acct_process(void); |
0b6b030fc bsdacct: switch f... |
128 |
extern void acct_exit_ns(struct pid_namespace *); |
1da177e4c Linux-2.6.12-rc2 |
129 |
#else |
7b7b1ace2 [PATCH] saner han... |
130 |
#define acct_auto_close_mnt(x) do { } while (0) |
1da177e4c Linux-2.6.12-rc2 |
131 |
#define acct_auto_close(x) do { } while (0) |
f6ec29a42 [PATCH] pacct: av... |
132 133 |
#define acct_collect(x,y) do { } while (0) #define acct_process() do { } while (0) |
0b6b030fc bsdacct: switch f... |
134 |
#define acct_exit_ns(ns) do { } while (0) |
1da177e4c Linux-2.6.12-rc2 |
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
#endif /* * ACCT_VERSION numbers as yet defined: * 0: old format (until 2.6.7) with 16 bit uid/gid * 1: extended variant (binary compatible on M68K) * 2: extended variant (binary compatible on everything except M68K) * 3: new binary incompatible format (64 bytes) * 4: new binary incompatible format (128 bytes) * 5: new binary incompatible format (128 bytes, second half) * */ #ifdef CONFIG_BSD_PROCESS_ACCT_V3 #define ACCT_VERSION 3 #define AHZ 100 typedef struct acct_v3 acct_t; #else #ifdef CONFIG_M68K #define ACCT_VERSION 1 #else #define ACCT_VERSION 2 #endif #define AHZ (USER_HZ) typedef struct acct acct_t; #endif #else #define ACCT_VERSION 2 #define AHZ (HZ) #endif /* __KERNEL */ #ifdef __KERNEL__ |
a1ff0eafc Include <linux/ji... |
168 |
#include <linux/jiffies.h> |
1da177e4c Linux-2.6.12-rc2 |
169 170 |
/* * Yet another set of HZ to *HZ helper functions. |
e26148d93 [PATCH] Fix copy-... |
171 |
* See <linux/jiffies.h> for the original. |
1da177e4c Linux-2.6.12-rc2 |
172 173 174 175 176 |
*/ static inline u32 jiffies_to_AHZ(unsigned long x) { #if (TICK_NSEC % (NSEC_PER_SEC / AHZ)) == 0 |
6ffc787a4 system timer: fix... |
177 178 179 |
# if HZ < AHZ return x * (AHZ / HZ); # else |
e26148d93 [PATCH] Fix copy-... |
180 |
return x / (HZ / AHZ); |
6ffc787a4 system timer: fix... |
181 |
# endif |
1da177e4c Linux-2.6.12-rc2 |
182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 |
#else u64 tmp = (u64)x * TICK_NSEC; do_div(tmp, (NSEC_PER_SEC / AHZ)); return (long)tmp; #endif } static inline u64 nsec_to_AHZ(u64 x) { #if (NSEC_PER_SEC % AHZ) == 0 do_div(x, (NSEC_PER_SEC / AHZ)); #elif (AHZ % 512) == 0 x *= AHZ/512; do_div(x, (NSEC_PER_SEC / 512)); #else /* * max relative error 5.7e-8 (1.8s per year) for AHZ <= 1024, * overflow after 64.99 years. * exact for AHZ=60, 72, 90, 120, 144, 180, 300, 600, 900, ... */ x *= 9; do_div(x, (unsigned long)((9ull * NSEC_PER_SEC + (AHZ/2)) / AHZ)); #endif return x; } #endif /* __KERNEL */ #endif /* _LINUX_ACCT_H */ |