1 /* Define struct rusage. 2 Copyright (C) 1994-2021 Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 5 The GNU C Library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 The GNU C Library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with the GNU C Library; if not, see 17 <https://www.gnu.org/licenses/>. */ 18 19 #ifndef __rusage_defined 20 #define __rusage_defined 1 21 22 #include <bits/types.h> 23 #include <bits/types/struct_timeval.h> 24 25 /* Structure which says how much of each resource has been used. If 26 the system does not keep track of a particular value, the struct 27 field is always zero. */ 28 29 /* The purpose of all the unions is to have the kernel-compatible layout 30 while keeping the API type as 'long int', and among machines where 31 __syscall_slong_t is not 'long int', this only does the right thing 32 for little-endian ones, like x32. */ 33 struct rusage 34 { 35 /* Total amount of user time used. */ 36 struct timeval ru_utime; 37 /* Total amount of system time used. */ 38 struct timeval ru_stime; 39 /* Maximum resident set size (in kilobytes). */ 40 __extension__ union 41 { 42 long int ru_maxrss; 43 __syscall_slong_t __ru_maxrss_word; 44 }; 45 /* Amount of sharing of text segment memory 46 with other processes (kilobyte-seconds). */ 47 __extension__ union 48 { 49 long int ru_ixrss; 50 __syscall_slong_t __ru_ixrss_word; 51 }; 52 /* Amount of data segment memory used (kilobyte-seconds). */ 53 __extension__ union 54 { 55 long int ru_idrss; 56 __syscall_slong_t __ru_idrss_word; 57 }; 58 /* Amount of stack memory used (kilobyte-seconds). */ 59 __extension__ union 60 { 61 long int ru_isrss; 62 __syscall_slong_t __ru_isrss_word; 63 }; 64 /* Number of soft page faults (i.e. those serviced by reclaiming 65 a page from the list of pages awaiting reallocation. */ 66 __extension__ union 67 { 68 long int ru_minflt; 69 __syscall_slong_t __ru_minflt_word; 70 }; 71 /* Number of hard page faults (i.e. those that required I/O). */ 72 __extension__ union 73 { 74 long int ru_majflt; 75 __syscall_slong_t __ru_majflt_word; 76 }; 77 /* Number of times a process was swapped out of physical memory. */ 78 __extension__ union 79 { 80 long int ru_nswap; 81 __syscall_slong_t __ru_nswap_word; 82 }; 83 /* Number of input operations via the file system. Note: This 84 and `ru_oublock' do not include operations with the cache. */ 85 __extension__ union 86 { 87 long int ru_inblock; 88 __syscall_slong_t __ru_inblock_word; 89 }; 90 /* Number of output operations via the file system. */ 91 __extension__ union 92 { 93 long int ru_oublock; 94 __syscall_slong_t __ru_oublock_word; 95 }; 96 /* Number of IPC messages sent. */ 97 __extension__ union 98 { 99 long int ru_msgsnd; 100 __syscall_slong_t __ru_msgsnd_word; 101 }; 102 /* Number of IPC messages received. */ 103 __extension__ union 104 { 105 long int ru_msgrcv; 106 __syscall_slong_t __ru_msgrcv_word; 107 }; 108 /* Number of signals delivered. */ 109 __extension__ union 110 { 111 long int ru_nsignals; 112 __syscall_slong_t __ru_nsignals_word; 113 }; 114 /* Number of voluntary context switches, i.e. because the process 115 gave up the process before it had to (usually to wait for some 116 resource to be available). */ 117 __extension__ union 118 { 119 long int ru_nvcsw; 120 __syscall_slong_t __ru_nvcsw_word; 121 }; 122 /* Number of involuntary context switches, i.e. a higher priority process 123 became runnable or the current process used up its time slice. */ 124 __extension__ union 125 { 126 long int ru_nivcsw; 127 __syscall_slong_t __ru_nivcsw_word; 128 }; 129 }; 130 131 #endif 132