From patchwork Tue Mar 31 15:46:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 38690 Return-Path: X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) by sourceware.org (Postfix) with ESMTPS id AC6C4385DC02 for ; Tue, 31 Mar 2020 15:54:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org AC6C4385DC02 IronPort-SDR: WLLKOYXFlUcMWggysYlhJB+DM40uGgyw+ts52lnTveOsIgPYs6dugZGhkeQ4irEu4c4A1X8u2b 5VzIUuiSjRk2aBoRFNoDgxQxcVrqQuCgePRsamE3myDtZm39kpW7OVIoFehTXaS2g1sj4o6xNg k7bBaYCDAXBr44wo8gm1rHfa8anqL4rLY7/5k+6BZkTpMokTpN/XbmWtbxIT3W9BlaQHV9Fesz /paq3gQPjgtgUJLrKZ1bf5adWiqD3fBiM5eG90g3xBc17r7E8MGS0nKwwP0HhfcJUSFKE+VQuG gls= X-IronPort-AV: E=Sophos;i="5.72,328,1580745600"; d="scan'208";a="134068949" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 31 Mar 2020 23:54:40 +0800 IronPort-SDR: J4Sjv8c45pkv1aJC2oK10JQoqF21vh4p1L2SOWGqDKpOCIZ1dUH1hfzW8nMHMVIOd3aMfcOcXN Mq5Fx7sUq5pEfG01q5YtdGYPXHLF0nf0Vs2R7nzjjU3LFropEMw41UGRrIX318D6jbX1cBZaLg YgGFRwaGCGE3rx5iTfilAJiUX89edB+LnFY8UwyOfREBnC4HyRby88O2Jnqb19BitR+w7mg4kN /d/Nyucjvm+4RoB40vDkQ6kfJz1jRpeOIG7xy7SpXWVsfaBA3xOI5ZpakY8K7c3Agw39Msm3Vv lPPmdGIwaVsw/jooB1wWJ/tD Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Mar 2020 08:45:35 -0700 IronPort-SDR: AuvavteHZJqD5+fKxK9IfDXEFI88KPyYWFVCj3u6zeUh97sUxoWAiEZWpRISr424NMLAGTSZGk MBEfwLbucovI4KmNeRZ2os0fCKXaGhvF90u16Hv3fWSzJ/ONbR+CBG++1iQDqM9+Cvk1wguL1y MvsZdYyob8V1TzG1gxRzuIvJ1rJ/wr0xYi2gczrV5sjrggLtqzBV3bVM66j0O//TGIuN/DRDOu JH7+toe0hPQ15gFvTKxGY/8WMfps9Va8xMG77S7suC4D8rE4cJmJzxGIqKNNeRD5Hq23nFNGoL qIE= WDCIronportException: Internal Received: from usa001473.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.55.8]) by uls-op-cesaip01.wdc.com with ESMTP; 31 Mar 2020 08:54:40 -0700 From: Alistair Francis To: libc-alpha@sourceware.org Cc: Vineet.Gupta1@synopsys.com, alistair23@gmail.com, Alistair Francis , Lukasz Majewski , Adhemerval Zanella Subject: [PATCH v7 3/5] resource: Add a __rusage64 struct Date: Tue, 31 Mar 2020 08:46:54 -0700 Message-Id: <20200331154656.687841-4-alistair.francis@wdc.com> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200331154656.687841-1-alistair.francis@wdc.com> References: <20200331154656.687841-1-alistair.francis@wdc.com> MIME-Version: 1.0 X-Spam-Status: No, score=-26.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Mar 2020 15:54:45 -0000 Add a __rusage64 struct which always uses a 64-bit time_t. Reviewed-by: Lukasz Majewski Reviewed-by: Adhemerval Zanella --- include/sys/resource.h | 110 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/include/sys/resource.h b/include/sys/resource.h index c55d4e63bd..9d604dfe3e 100644 --- a/include/sys/resource.h +++ b/include/sys/resource.h @@ -2,6 +2,116 @@ #include #ifndef _ISOMAC +# include +# include + +/* Internal version of rusage with a 64-bit time_t. */ +#if __TIMESIZE == 64 +# define __rusage64 rusage +#else +struct __rusage64 + { + struct __timeval64 ru_utime; + struct __timeval64 ru_stime; + __extension__ union + { + long int ru_maxrss; + __syscall_slong_t __ru_maxrss_word; + }; + __extension__ union + { + long int ru_ixrss; + __syscall_slong_t __ru_ixrss_word; + }; + __extension__ union + { + long int ru_idrss; + __syscall_slong_t __ru_idrss_word; + }; + __extension__ union + { + long int ru_isrss; + __syscall_slong_t __ru_isrss_word; + }; + __extension__ union + { + long int ru_minflt; + __syscall_slong_t __ru_minflt_word; + }; + __extension__ union + { + long int ru_majflt; + __syscall_slong_t __ru_majflt_word; + }; + __extension__ union + { + long int ru_nswap; + __syscall_slong_t __ru_nswap_word; + }; + __extension__ union + { + long int ru_inblock; + __syscall_slong_t __ru_inblock_word; + }; + __extension__ union + { + long int ru_oublock; + __syscall_slong_t __ru_oublock_word; + }; + __extension__ union + { + long int ru_msgsnd; + __syscall_slong_t __ru_msgsnd_word; + }; + __extension__ union + { + long int ru_msgrcv; + __syscall_slong_t __ru_msgrcv_word; + }; + __extension__ union + { + long int ru_nsignals; + __syscall_slong_t __ru_nsignals_word; + }; + __extension__ union + { + long int ru_nvcsw; + __syscall_slong_t __ru_nvcsw_word; + }; + __extension__ union + { + long int ru_nivcsw; + __syscall_slong_t __ru_nivcsw_word; + }; + }; +#endif + +static inline void +rusage64_to_rusage (const struct __rusage64 *restrict r64, + struct rusage *restrict r) +{ + /* Make sure the entire output structure is cleared, including + padding and reserved fields. */ + memset (r, 0, sizeof *r); + + r->ru_utime = valid_timeval64_to_timeval (r64->ru_utime); + r->ru_stime = valid_timeval64_to_timeval (r64->ru_stime); + r->ru_maxrss = r64->ru_maxrss; + r->ru_ixrss = r64->ru_ixrss; + r->ru_idrss = r64->ru_idrss; + r->ru_isrss = r64->ru_isrss; + r->ru_minflt = r64->ru_minflt; + r->ru_majflt = r64->ru_majflt; + r->ru_nswap = r64->ru_nswap; + r->ru_inblock = r64->ru_inblock; + r->ru_oublock = r64->ru_oublock; + r->ru_msgsnd = r64->ru_msgsnd; + r->ru_msgrcv = r64->ru_msgrcv; + r->ru_nsignals = r64->ru_nsignals; + r->ru_nvcsw = r64->ru_nvcsw; + r->ru_nivcsw = r64->ru_nivcsw; +} + /* Prototypes repeated instead of using __typeof because sys/resource.h is included in C++ tests, and declaring functions with __typeof and __THROW doesn't work for C++. */