1*49cdfc7eSAndroid Build Coastguard Worker //SPDX-License-Identifier: GPL-2.0-or-later 2*49cdfc7eSAndroid Build Coastguard Worker 3*49cdfc7eSAndroid Build Coastguard Worker #ifndef LAPI_ACCT_H__ 4*49cdfc7eSAndroid Build Coastguard Worker #define LAPI_ACCT_H__ 5*49cdfc7eSAndroid Build Coastguard Worker 6*49cdfc7eSAndroid Build Coastguard Worker #include <sys/types.h> 7*49cdfc7eSAndroid Build Coastguard Worker #include "config.h" 8*49cdfc7eSAndroid Build Coastguard Worker 9*49cdfc7eSAndroid Build Coastguard Worker #ifdef HAVE_STRUCT_ACCT_V3 10*49cdfc7eSAndroid Build Coastguard Worker #include <sys/acct.h> 11*49cdfc7eSAndroid Build Coastguard Worker #else 12*49cdfc7eSAndroid Build Coastguard Worker 13*49cdfc7eSAndroid Build Coastguard Worker #define ACCT_COMM 16 14*49cdfc7eSAndroid Build Coastguard Worker 15*49cdfc7eSAndroid Build Coastguard Worker typedef uint16_t comp_t; 16*49cdfc7eSAndroid Build Coastguard Worker 17*49cdfc7eSAndroid Build Coastguard Worker /* Fallback structures to parse the process accounting file */ 18*49cdfc7eSAndroid Build Coastguard Worker struct acct { 19*49cdfc7eSAndroid Build Coastguard Worker char ac_flag; 20*49cdfc7eSAndroid Build Coastguard Worker uint16_t ac_uid; 21*49cdfc7eSAndroid Build Coastguard Worker uint16_t ac_gid; 22*49cdfc7eSAndroid Build Coastguard Worker uint16_t ac_tty; 23*49cdfc7eSAndroid Build Coastguard Worker uint32_t ac_btime; 24*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_utime; 25*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_stime; 26*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_etime; 27*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_mem; 28*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_io; 29*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_rw; 30*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_minflt; 31*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_majflt; 32*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_swaps; 33*49cdfc7eSAndroid Build Coastguard Worker uint32_t ac_exitcode; 34*49cdfc7eSAndroid Build Coastguard Worker char ac_comm[ACCT_COMM+1]; 35*49cdfc7eSAndroid Build Coastguard Worker char ac_pad[10]; 36*49cdfc7eSAndroid Build Coastguard Worker }; 37*49cdfc7eSAndroid Build Coastguard Worker 38*49cdfc7eSAndroid Build Coastguard Worker struct acct_v3 { 39*49cdfc7eSAndroid Build Coastguard Worker char ac_flag; 40*49cdfc7eSAndroid Build Coastguard Worker char ac_version; 41*49cdfc7eSAndroid Build Coastguard Worker uint16_t ac_tty; 42*49cdfc7eSAndroid Build Coastguard Worker uint32_t ac_exitcode; 43*49cdfc7eSAndroid Build Coastguard Worker uint32_t ac_uid; 44*49cdfc7eSAndroid Build Coastguard Worker uint32_t ac_gid; 45*49cdfc7eSAndroid Build Coastguard Worker uint32_t ac_pid; 46*49cdfc7eSAndroid Build Coastguard Worker uint32_t ac_ppid; 47*49cdfc7eSAndroid Build Coastguard Worker uint32_t ac_btime; 48*49cdfc7eSAndroid Build Coastguard Worker float ac_etime; 49*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_utime; 50*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_stime; 51*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_mem; 52*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_io; 53*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_rw; 54*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_minflt; 55*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_majflt; 56*49cdfc7eSAndroid Build Coastguard Worker comp_t ac_swaps; 57*49cdfc7eSAndroid Build Coastguard Worker char ac_comm[ACCT_COMM]; 58*49cdfc7eSAndroid Build Coastguard Worker }; 59*49cdfc7eSAndroid Build Coastguard Worker 60*49cdfc7eSAndroid Build Coastguard Worker /* Possible values for the ac_flag member */ 61*49cdfc7eSAndroid Build Coastguard Worker enum { 62*49cdfc7eSAndroid Build Coastguard Worker AFORK = 0x01, 63*49cdfc7eSAndroid Build Coastguard Worker ASU = 0x02, 64*49cdfc7eSAndroid Build Coastguard Worker ACORE = 0x08, 65*49cdfc7eSAndroid Build Coastguard Worker AXSIG = 0x10 66*49cdfc7eSAndroid Build Coastguard Worker }; 67*49cdfc7eSAndroid Build Coastguard Worker # if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ 68*49cdfc7eSAndroid Build Coastguard Worker # define ACCT_BYTEORDER 0x80 69*49cdfc7eSAndroid Build Coastguard Worker # elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ 70*49cdfc7eSAndroid Build Coastguard Worker # define ACCT_BYTEORDER 0x00 71*49cdfc7eSAndroid Build Coastguard Worker # endif 72*49cdfc7eSAndroid Build Coastguard Worker #endif /* HAVE_STRUCT_ACCT_V3 */ 73*49cdfc7eSAndroid Build Coastguard Worker 74*49cdfc7eSAndroid Build Coastguard Worker #endif /* LAPI_ACCT_H__ */ 75