1224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 2224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * BSD Process Accounting for Linux - Definitions 3224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 4224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Author: Marco van Wieringen (mvw@planets.elm.net) 5224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 6224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * This header file contains the definitions needed to implement 7224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * BSD-style process accounting. The kernel accounting code and all 8224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * user-level programs that try to do something useful with the 9224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * process accounting log must include this file. 10224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 11224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Copyright (C) 1995 - 1997 Marco van Wieringen - ELM Consultancy B.V. 12224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 13224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 14224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 15224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef _UAPI_LINUX_ACCT_H 16224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define _UAPI_LINUX_ACCT_H 17224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 18224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <linux/types.h> 19224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 20224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <asm/param.h> 21224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <asm/byteorder.h> 22224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 23224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 24224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * comp_t is a 16-bit "floating" point number with a 3-bit base 8 25224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * exponent and a 13-bit fraction. 26224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * comp2_t is 24-bit with 5-bit base 2 exponent and 20 bit fraction 27224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * (leading 1 not stored). 28224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * See linux/kernel/acct.c for the specific encoding systems used. 29224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 30224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 31224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengtypedef __u16 comp_t; 32224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengtypedef __u32 comp2_t; 33224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 34224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 35224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * accounting file record 36224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 37224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * This structure contains all of the information written out to the 38224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * process accounting file whenever a process exits. 39224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 40224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 41224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ACCT_COMM 16 42224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 43224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct acct 44224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng{ 45224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char ac_flag; /* Flags */ 46224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char ac_version; /* Always set to ACCT_VERSION */ 47224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* for binary compatibility back until 2.0 */ 48224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u16 ac_uid16; /* LSB of Real User ID */ 49224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u16 ac_gid16; /* LSB of Real Group ID */ 50224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u16 ac_tty; /* Control Terminal */ 51224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 ac_btime; /* Process Creation Time */ 52224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_utime; /* User Time */ 53224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_stime; /* System Time */ 54224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_etime; /* Elapsed Time */ 55224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_mem; /* Average Memory Usage */ 56224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_io; /* Chars Transferred */ 57224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_rw; /* Blocks Read or Written */ 58224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_minflt; /* Minor Pagefaults */ 59224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_majflt; /* Major Pagefaults */ 60224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_swaps; /* Number of Swaps */ 61224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* m68k had no padding here. */ 62224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#if !defined(CONFIG_M68K) || !defined(__KERNEL__) 63224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u16 ac_ahz; /* AHZ */ 64224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif 65224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 ac_exitcode; /* Exitcode */ 66224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char ac_comm[ACCT_COMM + 1]; /* Command Name */ 67224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 ac_etime_hi; /* Elapsed Time MSB */ 68224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u16 ac_etime_lo; /* Elapsed Time LSB */ 69224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 ac_uid; /* Real User ID */ 70224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 ac_gid; /* Real Group ID */ 71224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 72224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 73224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct acct_v3 74224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng{ 75224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char ac_flag; /* Flags */ 76224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char ac_version; /* Always set to ACCT_VERSION */ 77224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u16 ac_tty; /* Control Terminal */ 78224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 ac_exitcode; /* Exitcode */ 79224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 ac_uid; /* Real User ID */ 80224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 ac_gid; /* Real Group ID */ 81224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 ac_pid; /* Process ID */ 82224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 ac_ppid; /* Parent Process ID */ 83224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 ac_btime; /* Process Creation Time */ 84224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifdef __KERNEL__ 85224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 ac_etime; /* Elapsed Time */ 86224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#else 87224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng float ac_etime; /* Elapsed Time */ 88224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif 89224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_utime; /* User Time */ 90224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_stime; /* System Time */ 91224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_mem; /* Average Memory Usage */ 92224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_io; /* Chars Transferred */ 93224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_rw; /* Blocks Read or Written */ 94224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_minflt; /* Minor Pagefaults */ 95224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_majflt; /* Major Pagefaults */ 96224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng comp_t ac_swaps; /* Number of Swaps */ 97224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char ac_comm[ACCT_COMM]; /* Command Name */ 98224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 99224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 100224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 101224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * accounting flags 102224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 103224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* bit set when the process ... */ 104224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define AFORK 0x01 /* ... executed fork, but did not exec */ 105224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ASU 0x02 /* ... used super-user privileges */ 106224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ACOMPAT 0x04 /* ... used compatibility mode (VAX only not used) */ 107224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ACORE 0x08 /* ... dumped core */ 108224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define AXSIG 0x10 /* ... was killed by a signal */ 109224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 1106ea19f626488db5efcc757f2d8a2fd362d0567ceChristopher Ferris#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN) 111224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ACCT_BYTEORDER 0x80 /* accounting file is big endian */ 1126ea19f626488db5efcc757f2d8a2fd362d0567ceChristopher Ferris#elif defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN) 113224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ACCT_BYTEORDER 0x00 /* accounting file is little endian */ 114224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#else 115224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#error unspecified endianness 116224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif 117224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 118224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef __KERNEL__ 119224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ACCT_VERSION 2 120224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define AHZ (HZ) 121224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif /* __KERNEL */ 122224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 123224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 124224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif /* _UAPI_LINUX_ACCT_H */ 125