From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 96619 invoked by alias); 21 Oct 2016 17:22:16 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 96598 invoked by uid 89); 21 Oct 2016 17:22:15 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Checked, bypass X-HELO: NAM01-BY2-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; Date: Fri, 21 Oct 2016 17:22:00 -0000 From: Yury Norov To: Adhemerval Zanella CC: Subject: Re: [PATCH] Consolidate Linux setrlimit and getrlimit implementation Message-ID: <20161021172151.GA28268@yury-N73SV> References: <1477068711-6825-1-git-send-email-adhemerval.zanella@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <1477068711-6825-1-git-send-email-adhemerval.zanella@linaro.org> User-Agent: Mutt/1.5.24 (2015-08-30) X-ClientProxiedBy: AMSPR04CA0049.eurprd04.prod.outlook.com (10.242.87.167) To SN1PR07MB2254.namprd07.prod.outlook.com (10.164.47.148) X-MS-Office365-Filtering-Correlation-Id: b87c4fe2-e3e9-47c1-884f-08d3f9d6c5da X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2254;2:l0kHXGcIB9sj53+I2v6roVK4pP7GRwm9mL819bTj4N/6IiCD9oOBAN7VUbkeu5ZCc3LmPzxpzOYUi7arPjKl6naH9MAeNzdU7uG4fXjxA0tJZbU2QJR3cOnoG43kkqaiJDK226auxztO+ZjXPNharOLeXoSsKR9mfj2X3iHKqy/9FXR6aGZmgm6O41o0hZZEsymEpNu/RK4qIm642qB4HA==;3:xYVI08wQQQJc7HpqRZ99P8iujFnWlDLGUvatDfwd2NfJF9VU8v5Ppd0db1Do2js6kQn2HhAKgQRpi5ReoPEidmyb7JyROOW4ANxZrwcBU4gkXB2EQoO7k98IfiJPuiuu/emUmyXJHNpAxue3552gWg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR07MB2254; X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2254;25:iRLQtfCKX3cuEk5ZpaIPTUNoZoTaJLUwcWRCW6OWNsoboXtTk18bCvN/72vBoPc0HZsYYWxn4iCRvgtBX5D+nE7QeFGCGuj+bY0B8QtEtKRfw9pK//CyP4jdK64QorUrJ6KwkfYE0WypZUfyep4COMtOiwW/5IaybLl126WUm2P6nj7vmRO+/DfSI87ZEz7f0LeH0iMrIIVAZ4YCZIDE8iz5zxUkmZu1M6fQhxa8oz6uP8sna4nYVDUi77IqvdIjZH/KPnj6rcplJHSuuvyaYCKT7qPwI9shrbQqXjMi9uNFx7rXh2zaTNmlXhKBhlZBoWLnmk39JEg0bSC5I5fhwXx+wD9jKpiCjEdehrY7nErW+gKnuqYynf8qVuakL5EEgz1ZGufaFwW34eDcWL90PuP0QoWuO3QBQ6SlnLb8kmuvD7sTC8gjh9Dmv3tQW4wb3HBYvzasIPm8m3NfHwGxSWljba+5ilFxolXbhL8SlOYqIJxveIxHaAZZLDddi+H9b2WfT+rtudnwEkpm9OdIsvwIS8X9hztNMBgJmJaadD9xYss3P3Wm5x31IRSqSu4K5j5SMDGCH+9HIksmnnm4abU41F8lXYnBrbDsx0aN4wKHUz9MLGp8nl27OlE0i5kapSnKWLsfWuY19FNU5Uf2LXMyIxCmwyS4euFP7QxXEyBxvR33hzNKkg9w3lDN6zryke3harN8V1tXG/ZrMuNZ9lTb6o+wNy1LKtVEgmnrbg1P51PGqneCnFvUAL3Psi96EO5g8jgHca3ifTcluv1khmpgu+lprnAFIIc2/U9Q88ujf6CicUMj13rh9d2sgXWklXVTmXHvqqapbgHAs9du+74DfozlGN6VoJSHHbnBY+I= X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2254;31:sY1lMe3P9AfBqf7mFiTJ2s5lhtQwC/T73dTAhcg+nDToc4pRgPTflR/5C+nw08Td7xUbwqVwFgaFTODLGTtNthPPk8tvIG2QWGjHMhBcdjhNCCD1PysraMQH2XEGWrYuJg6bijEQWI8rJQHRWK+alfi+/PncklplQETe7FjNwDlYhiW7m1NjeW0fzJPmRdfndeJnpGru9sb+urMnYSKKVUACvcKnu2YTpwJGRGOW/6Pj+pkU4YiiAorsAmaTl/UT;20:LfWSLWY2QSktc7N43/rU6EqHgfQHF0U9qudfDUnTFed9PrhJAcF0n7PqxGoZoNutrPuTtA1PvGlk/x4QXfiXfUnoJ5XAnwAPnkXXbScA6rFWfQuWmPAxtIG3OXqqaO1jMbASXBcKIAbacxGPI/b7NDZxEQ0XlQej/+xs/RQMdQVg/LwxjZ5r5UlCHDtn8vah76nZjX3+vGtahNcT6LDTxjI3GCO2TGtGHJJugBJdh78kL/HXdrGSVD8tjMqwgDoMgHp7ml4yycNkQraRqBDr2oqV7iyS9EttZZaHOwNn0ZUj09A0anaZIQiZry2u7EUfDcecPXdX46MiBAApM9vC7I9AsmmgkRFrGWFXmfw0KEEWqfxzbdZJNkjJaAJqbYbEhF5NKyGJINax/DI8m0sBEKY8tE6KuX+E582KhDHMng2Gn98D0O16TWPS6k/rvn1e5oX38n1CKKCk4E5Lr/zf3BCrfCEs1p4o+5CoIIH57ijHgZqNXBZKfsjwvhWmCoIU5QXNLV1r7GsVY3afaMH5erqq9EZYs0qlzDBs+oevqv0vD/vt/SvuOJVQJXiGoPG21vQptevCzh+wwVnQzdCPwUtPNepUMrgRZhYxL9uCls0= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046);SRVR:SN1PR07MB2254;BCL:0;PCL:0;RULEID:;SRVR:SN1PR07MB2254; X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2254;4:wNS+eKaOaxSGUCNocSvsVyXs3Gzm1xW12HIZO8cgobkwRWNxgBtwoTli4hDwqNWve5cgvwbGfQGk2KxjaGm2UMe3MxLI/uC0Z/tcCtvAk4kiPHlmzE+K/nwDpy2mFadPM6IyQ6c4qXM/iA1u0XguS9tenwKJTPLOS1bkpLoDOzGaOGQa87j4/je48T7f1YBNCcZObmh8XJTrnqCjriCeEh4Lq8gsuA5/QD2zRHFK6OcJ/R5scInRRe1WOSHsrs2Pmhys9tV+QIwW4fMeMRYNKSZQ/Z836i5TycXk4CHhwLVJ2uIY/6L3ptfMaUp2c7lyvQ/to/ro3Vai7GKJfkX3DvQK/s52kZqq5/qfr+Zvbl8m3E10waX0dFZqB6dYnx8RGovxxlv9FTiDV0PxzUYetKH0wNJ6H/nMkYjw18AcbInVeSFaTSEMgVBCq99iIfMiNUFuAHz65GtkknOneGOwMvMrbUnnrmlnayBYrZoPqKA= X-Forefront-PRVS: 01026E1310 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(189002)(199003)(24454002)(8676002)(54356999)(19580395003)(1076002)(305945005)(92566002)(97736004)(6116002)(9686002)(7846002)(3846002)(23726003)(81156014)(101416001)(33656002)(7736002)(586003)(50466002)(81166006)(6916009)(66066001)(77096005)(4326007)(189998001)(97756001)(50986999)(76506005)(15975445007)(106356001)(105586002)(6666003)(5660300001)(42186005)(83506001)(76176999)(68736007)(33716001)(2950100002)(46406003)(2906002)(4001350100001)(47776003)(110136003)(18370500001)(2004002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR07MB2254;H:localhost;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Received-SPF: None (protection.outlook.com: caviumnetworks.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN1PR07MB2254;23:VYc6lZUGxU0rc8bUIqPvHYS8LnjXB1ZXNZzt6ZyHh?= =?us-ascii?Q?/GDGqEh57xaqPliaBh4nRfkfOn5mFumXKyIdSePY25u0ssXQDSZIdOJV8jCZ?= =?us-ascii?Q?p8nNFpEoYozmYkaNIl8n44faDxEfOX2um/2o3LRz9gX8FACSx6KfSG1tIwmF?= =?us-ascii?Q?JVdCwW73wMISKD4wGq5dP9uQd7VljGetPgqJFJUqS7AD+Gj4OEa3jCkgrhwP?= =?us-ascii?Q?ybEe4zU//Buo7nFLTZTewaZDBDOCmiDt78ziV6B302QImpXtu1zH8F1bY8uE?= =?us-ascii?Q?TS/BW7iDPhUHZzMOAdvccpv2OjHZkPQYH1G5NicRs+U+iG2bOzxcUfJuLJjr?= =?us-ascii?Q?SU2VZ0t2JZojpoNmenPyhClqQBih5HOCWtps8WOFAN12ZxiUbqi10xk8LJcJ?= =?us-ascii?Q?HGAUsarLSNVRVK4H1fzGTk+qJrHhWayyXME99mGXgbt6a+5wga2OcI7FoBVO?= =?us-ascii?Q?vNKbZRSCzjhwgtHKwOf8G5F0H60sdIOQL4lK5U+djTBs7SbNBVfAaAff6N4E?= =?us-ascii?Q?0DTa8pU5BZyM5RtxXJJjaHJcr47e54Lly0NJjaguOJuYFyF9QnSR2C/l5DTc?= =?us-ascii?Q?lD2SN5GRT5KjK64BL1Sr74NhQ5SlKiVtYkJjSAGEAbrOt2qSvinmsBo//q+2?= =?us-ascii?Q?CoQlqwxanSC4Zt+ORDMih5lgHN0u1gDxtzc6ktKZWRuw5lFK5o9RtZAzUc1v?= =?us-ascii?Q?LpsyC7PfIQEskcLXaShYYc0iyY91udOKanHgyiVcMyuw/dn1VypzpeCykHDO?= =?us-ascii?Q?+a7IGmopfyP7JDKc3JnMM5pazID+Y9HY/Wa8oVCzDAuEfQ/NPbOCe4xY/kM8?= =?us-ascii?Q?Hojf3L8BJJD8u8l7CgfAQ0QyPc2JedUsjOw3PqMdabRyjkFQisrWC0vyy2qa?= =?us-ascii?Q?VU0idVOCYi6pDT+B17xphVDV2b9yW614+rPRXBdKft1kJt8/wHs0y9xfhp2B?= =?us-ascii?Q?hnUASooORulkbLvwliOEAI6K0U2uzmaTZgow1MtFC1dq/cUOQv4k13WXNhgV?= =?us-ascii?Q?p0FneEmr8axkqXOFdNhj4bKIE6w69uHqiPg6pjJQ97kOfMkWjM4VBJsCqY5p?= =?us-ascii?Q?W4oOOSKVv97Iht98DDOJJSH+zcM4+jztAXYRG0VW2rJ5jHv6FOgt8QGaNFwX?= =?us-ascii?Q?/QPynQl4i6Gh/qBHWmUuKbAi9l1oR5xQ8cp+xwP24KASjfGUCtprHuHdS+5A?= =?us-ascii?Q?hjA/Q/4RP9eH8Ho+dD4R1HKZHrVTXxnHj3KV/4sD1l2Gr9iyLiitWuKP0lum?= =?us-ascii?Q?lrABcd3c0r1sIoSHlmbWfd7R4EdwzD/2/TkdTpa?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2254;6:qfn2xhW+607TfW3P5CfiXIJYkQw0u+nZXCQ3DRU1EkYPKHFFaYAcRxhUJCcrw9ezBc/ATaH+WHTY3a45fXKxBmNWGsi9Fy+hpNKjpWmFkU+saInChRSuoq4Dbcfl4n5Mpk+gSyLsWc37FY+brtOeRVXDyKQBTgsPjM8iCeMy971wHwnBLp6w1Qz3/SAVjT9mv+Y5qeVhNWDBVuZeNoD2vgbIB9MCPkxxwobah1YtHgJDAzFobWRzyaCA5BtUKZHaAov7aUImsj5uCk3wrpYm+SQPdWwxFgiCTs37Fsc0vQeQf9yB99fw1JMF1e4Rwx6m;5:TMFPGZCd3glXMJy/zhQ+rcKTRTYRmMcvSHVaneoHyFTGTyA1VNUEgoAOxvZtAx1K5Vp6JSdz7xFHrRwuWFfqWkTu9Yb8hHNgUnjusbioFjWii3Kp0oa05e95K3D/DXVsr74Y8BiZ1cajoJX7P0hBkAMa61i57tJV4Dm4xsm9bNA=;24:h0gOASgIOCLXP8R2VsPFX5lxbjULo3fcB0AfW8R3udFgybC0AdpdM/RGIEi8BCpnAx+BAMjKyLzAqdKOifQArCxF0KO89PT+VSAR0TpQykg=;7:OHBUVyihXDLZzLEF3gNTNM0uyNKVdEGJC1NwjHeA3fActhgjGmYj0dfhB8SlJ8LX2ixXajwUug4JiL48qTk0ex6O3pSNEmgaFVdv88X0Ry4lrBTeC6HkiZ5kIfvSfI2P/PWIUS2POTH3uVOfysPQmuHQMeUplT0X9PCzSzzkXfd9j0OmqjyVV9mmVl05AWrpArKAXIWPIj5kmsaVQhkbgjttc1d6OtfPrV0FzYpzJoM5+68kneHEnHPMkeygNGZj89L8HZ/DF0Hxgk2Uy/6Ov5bQnXldnt3ktINBG/L2D2sg65n5tE3Uq6B2pPaHot1m0x1/5Ow+0Jja2P3kvlQd/ml89xqOfjJeBkAKIoZweZ0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2016 17:22:02.3489 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR07MB2254 X-SW-Source: 2016-10/txt/msg00365.txt.bz2 On Fri, Oct 21, 2016 at 02:51:51PM -0200, Adhemerval Zanella wrote: > This patch consolidates all Linux setrlimit and getrlimit on the default > sysdeps/unix/sysv/linux/{set,get}rlimit{64}.c. It contains two exceptions: > > 1. mips32 and mips64n32 which requires a versioned symbol for GLIBC 2.19 > and higher due a broken RLIM64_INFINITY constant. > 2. sparc32 does not define a compat symbol for getrlimit64 for old 2GB > limit. I am not sure if it is required, but a RLIM_INFINITY fix [1] > change its definition without adding a compat symbol. This patch does > not aim to address this possible issue, it follow current symbol > export. > > The default implementation uses prlimit64 for 64 bit rlim_t ({set,get}rlimit64) > and if it fails with ENOSYS it fall back to {get,set}rlimit syscall. This > code path is only used on kernel older than 2.6.36 (basically now only x86) > and I avoid to user __ASSUME_PRLIMTI64 to simplify the implementation. Once > x86 moves to be on par with other architectures regarding minimum kernel > supported we can get rid of using old syscalls and default path. > > A new type size define is added, __RLIM_T_MATCHES_RLIM64_T, where is set as > default for 64 bits ports. This allows the default implementation to avoid > {get,set}rlimit building and alias {get,set}rlimit64 to {get,set}rlimit. > > Checked on x86_64, i386, armhf, aarch64, and powerpc64le. I also did a > sanity build plus check-abi on all other supported architectures. Also checked on aarch64/ilp32 > diff --git a/sysdeps/unix/sysv/linux/setrlimit64.c b/sysdeps/unix/sysv/linux/setrlimit64.c > index 5f444d2..ce5429e 100644 > --- a/sysdeps/unix/sysv/linux/setrlimit64.c > +++ b/sysdeps/unix/sysv/linux/setrlimit64.c > @@ -1,4 +1,5 @@ > -/* Copyright (C) 2010-2016 Free Software Foundation, Inc. > +/* Linux setrlimit64 implementation (64 bits off_t). > + Copyright (C) 2010-2016 Free Software Foundation, Inc. > This file is part of the GNU C Library. > > The GNU C Library is free software; you can redistribute it and/or > @@ -16,25 +17,30 @@ > . */ > > #include > -#include > #include > -#include > -#include > +#include > + > +/* Add this redirection so the strong_alias for __RLIM_T_MATCHES_RLIM64_T > + linking setlimit64 to {__}setrlimit does not thrown a type error. */ > +#undef settrlimit > +#undef __sttrlimit > +#define setrlimit setrlimit_redirect > +#define __setrlimit __setrlimit_redirect > +#include > +#undef setrlimit > +#undef __setrlimit > > /* Set the soft and hard limits for RESOURCE to *RLIMITS. > Only the super-user can increase hard limits. > Return 0 if successful, -1 if not (and sets errno). */ > int > -setrlimit64 (enum __rlimit_resource resource, const struct rlimit64 *rlimits) > +__setrlimit64 (enum __rlimit_resource resource, const struct rlimit64 *rlimits) > { > -#ifdef __ASSUME_PRLIMIT64 > - return INLINE_SYSCALL (prlimit64, 4, 0, resource, rlimits, NULL); > -#else > -# ifdef __NR_prlimit64 > - int res = INLINE_SYSCALL (prlimit64, 4, 0, resource, rlimits, NULL); > +#ifdef __NR_prlimit64 > + int res = INLINE_SYSCALL_CALL (prlimit64, 0, resource, rlimits, NULL); > if (res == 0 || errno != ENOSYS) > return res; > -# endif > +#endif > struct rlimit rlimits32; If __RLIM_T_MATCHES_RLIM64_T is defined, you can bypass conversion. > > if (rlimits->rlim_cur >= RLIM_INFINITY) > @@ -46,6 +52,11 @@ setrlimit64 (enum __rlimit_resource resource, const struct rlimit64 *rlimits) > else > rlimits32.rlim_max = rlimits->rlim_max; > > - return __setrlimit (resource, &rlimits32); > -#endif > + return INLINE_SYSCALL_CALL (setrlimit, resource, &rlimits32); > } > +weak_alias (__setrlimit64, setrlimit64) > + > +#ifdef __RLIM_T_MATCHES_RLIM64_T > +strong_alias (__setrlimit64, __setrlimit) > +weak_alias (__setrlimit64, setrlimit) > +#endif