From patchwork Sat Mar 28 15:22:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 38649 Return-Path: X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from esa3.hgst.iphmx.com (esa3.hgst.iphmx.com [216.71.153.141]) by sourceware.org (Postfix) with ESMTPS id 1A3B9385E009 for ; Sat, 28 Mar 2020 15:30:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 1A3B9385E009 IronPort-SDR: 8+auIQtNrdUZp82KSkk1MHV7tL9QDF0GyOy8WlOkYJ02mJgqhK0e+a7fKaQbZqnGoPRUk6EsXW udYQGU+xKscTV837TRaRMXZjHTsWl2wGJ6PqoSGIu2z0ycb4UecudmWTt2ErfD+I/ZkYhC3Wbx FlA56Gz8BR38i3RdmZ4AjXP19sWrPwMinbkCx+FHlSMmJKpv2mv1fwkk0l0VgFemUKP/knAZtk P3wPSezDTFiVLgJIIXDp31/Srzoqf/UOYUnQP6qeBaaTcHRLbx6bn1bWtBBn+BRnk/bNZZtcfW s4g= X-IronPort-AV: E=Sophos;i="5.72,316,1580745600"; d="scan'208";a="138142289" Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 28 Mar 2020 23:30:29 +0800 IronPort-SDR: PhfwLYAf2t/YuxcF/kcbH47ZDntvwnwpIWd+nhrW3mT0TR2Hh2dUF8Gqto787e4ljcv1TvRv38 OTcgCWVD+zgAEg/E0T6fbhIZUPJU+XDyHXZhBR834By2y46+ThTOsVvvBY3Y1xjw0OcM0s+Fao DywMUDVUijC7Qs51C32+X3Aa2h+z+jjOh62lfHS7kO0nu0DmWmCumqXrdomzSZP5TuDpHntijR 7BDCpgV5ea2hV+umcFBG283aXy14uwshC0bVQV/rbea+PPpxb+kg0/asVvUqMLh67RQIREcpOh 0TflPPcrZ88DZsn//LwDax2i Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2020 08:21:29 -0700 IronPort-SDR: dVe9LITf5IpVQ+DgFGnYtMTmEXlvS/s/6RsTMKF6+VvM/LCN+Ch/uI6JtcPzIx/HWAMq+1+laT 6M55omeiAmV+fvTbdXGB2cHL6pw52apFuOFawUd49aBUYIC+UX7AxFMpKvwzJuEXkbaNW17Lnq OSCngjJqz9C+lXZ9B9VHNM9KqFJ5wk1pppqLFeCObOxhXYI0xC4TNm+S0dO4vLIgQOVGG/2xFG 4ROF+ZqviDeP4XJaCtrMG4AwTJV4POUcRoPL1QDF/9yxmgPzcRWp2pR6h/Nd1XptfnwYfhl2pI LQ8= WDCIronportException: Internal Received: from wdapacbjl0003.my.asia.wdc.com (HELO risc6-mainframe.hgst.com) ([10.86.55.5]) by uls-op-cesaip02.wdc.com with ESMTP; 28 Mar 2020 08:30:28 -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 v6 3/5] resource: Add a __rusage64 struct Date: Sat, 28 Mar 2020 08:22:47 -0700 Message-Id: <20200328152249.972428-4-alistair.francis@wdc.com> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200328152249.972428-1-alistair.francis@wdc.com> References: <20200328152249.972428-1-alistair.francis@wdc.com> MIME-Version: 1.0 X-Spam-Status: No, score=-25.9 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: Sat, 28 Mar 2020 15:30:35 -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++. */