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