Message ID | 1492200452-4653-1-git-send-email-ynorov@caviumnetworks.com |
---|---|
State | New, archived |
Headers |
Received: (qmail 99692 invoked by alias); 14 Apr 2017 20:07:50 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: <libc-alpha.sourceware.org> List-Unsubscribe: <mailto:libc-alpha-unsubscribe-##L=##H@sourceware.org> List-Subscribe: <mailto:libc-alpha-subscribe@sourceware.org> List-Archive: <http://sourceware.org/ml/libc-alpha/> List-Post: <mailto:libc-alpha@sourceware.org> List-Help: <mailto:libc-alpha-help@sourceware.org>, <http://sourceware.org/ml/#faqs> Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 99674 invoked by uid 89); 14 Apr 2017 20:07:49 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=tricky, 7660, H*r:sk:NAM03-B, HX-Microsoft-Antispam-PRVS:sk:BN3PR07 X-HELO: NAM03-BY2-obe.outbound.protection.outlook.com Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=caviumnetworks.com; From: Yury Norov <ynorov@caviumnetworks.com> To: libc-alpha@sourceware.org Cc: Yury Norov <ynorov@caviumnetworks.com>, Adhemerval Zanella <adhemerval.zanella@linaro.org> Subject: [PATCH] SYSCALL_CANCEL: reduce the size of generated code Date: Fri, 14 Apr 2017 23:07:32 +0300 Message-Id: <1492200452-4653-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-ClientProxiedBy: DB6P191CA0018.EURP191.PROD.OUTLOOK.COM (10.175.236.156) To BN3PR0701MB1267.namprd07.prod.outlook.com (10.160.118.141) X-MS-Office365-Filtering-Correlation-Id: 7a2b2fea-1018-4226-c099-08d48371ea4e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:BN3PR0701MB1267; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1267; 3:tGDKAkVvG0JXPPMByRBKQAs45FTcU+PToK3RQYwRBrKe0hydpK49f8xA0IHaNeI34voDPk7XVrrLvIJrQzul6Aeep1YGrju294ZYIfZcQgVy1HWPUyEQHpZzwnSasFV+9yleiCqW6gra/WNf5nmOFKiuaYcjIGPahOFPdTcAn7bZ572yuhJXvK5wMD0mHg5hjB1k1fGD6hZDvbjjBdR427bOwYP1WkO0OaUySrjfrkV2le1OnnseLseACAgdtqKJkqLZzVnfd+vqdQmRM6zZQh6Ooiw5bXHtZ/iuAfCkFQzFLQAOa1kFnj7H1MPOZ8xIOAMNMlmsPGzi5og9+NCUag==; 25:fd95KOjzsKpf9Qneqd/zBvIaAZ5A2ohgnM6Ahhy8mgno3Z0dJfj1nfOxjYYKghPowdzXMNeDVW2tfzF8vviEJLXsudYCu/fVVluWQIb+5WTkMm3PJ+SuUVWBgvymD8zQ7VMWJsbH+4vnEjOaJ+aEuWzQdGTPku71k4qLEJcjA/1TUNvML4gwG4qPetP+ZY58Txq32gSBt0IZS97qY5oS4fZ4UvnvRmkmk4HB/5w/kpIc33BviRTL5BjbB6usIpinQC1f1J1Eyvnz4oRI+f1Z9uG+cynG7Ge5kapaZBvyTyJ8Pq/8W11HkIwB/dki73aDfaX4fCBG8YURYPIusAl7IdIgYhAhcqOVpqfQCG/yrz4ZhHfxinq5tytYVa1glauIdreWPuO7ezpAZMx97KgyR9Z9IIUElpsyxS+GipssSu2jEtnpjsO6uLri11gScg2OrlCQGSiBejkuFYCT05kHLQ== X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1267; 31:KPhpQR8E4zotrjaTg8G6J+RErrZNeXjOgtzsDIebWSmAC6HnFoNGXupV2BZUR2mhLrENNWp0ICgmXx/5PTVuTLqJ7u85mbhqzsDBiYuJMBZk1ZB2+5ZwS3RcPysqAfQsA7NPRRArlo3QfLJrAjkyKOqOFUvOUcyEi/pJg9QvWMFeQq+MuqpvvxrorMD7nkdnNci7sgkwnKObM3ckZk1tTe9pq8eztp41BIpF1R6eORg=; 20:+zwa/TVcfF5pCTfRc40kb4hgTR79ReJDhe2IyXjnQ3Pd8+SPY2JzNPfBTRpk9HY8dsSBBFTmB55W1vDtvvaNv1/uGed7FZFyayDYUqeHN8FzZoueP5p7Y6jf0R7b30lDioeVeT+yuhlK0N6bQx00J1ErtZ0IR3PV2za+NhIsyvoKafJ8NWq0WYkJ2YTMVpJORLTKVPTPYz/ulS1HUKpLbx1QgdqK5daU7zj+G+BKJAIaz9f1QE3hQz+6zW1WpWalzks12gctycmlNH4jbs5qdei++rEyJRg3Sv/iKaCrPBnGKJdM9ySD6k+gwU2ertlj89RmhBjjHiFbXTN3M4ESt9j4GFHDper5a/scPxLcdtXF04jW8NRBNcUsBdVlc0IJL+pzZiYI8q9qLnuaIEXdWk5dxX/Djdk8GQX9CpjfMGVASnGLTN4XMPvgVoTtvNKFSnuwmel42POTp1mjuRIBKj0NwfI5jiyGODfaurtp77xMXh5shR4wBICWzbXFQg+DCyD+lIqy+Ii07XA4EigKyhhuuemkKJ2Y7j/Tk2AtGyC66iwUHKQE58gUOTL8T9TTNOpzUj39fvHsJDxjZd8Biw+jVqQYgivUz1RjmRolZw0= X-Microsoft-Antispam-PRVS: <BN3PR0701MB12679595BE6427170F3F1E62EE050@BN3PR0701MB1267.namprd07.prod.outlook.com> X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(6041248)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(20161123562025)(20161123555025)(20161123564025)(6072148); SRVR:BN3PR0701MB1267; BCL:0; PCL:0; RULEID:; SRVR:BN3PR0701MB1267; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1267; 4:Iyml3JubLCN4lqVDqyFiBc+/6qAAjSKiTy7T4gq4QYJjN9VlYj3IEjbOgiY6jjRhT1METWIn+4xoRO/8d1yxfH/cXMk/ijAUHdKv4k++WgrSRf0a99VFt0w5HlqAuNFQ+M/0zYMSgyhG4K5LGgyOz5pkZ7qFaqd8jbu34l7DCgwhar+UDzbc/CK5qbh0hf3mxSaXh2xWMwZxAJotX6dfBEViwbJNZXh+xN4qLcT+Y7KkHn56RNZRCgo8kPowLGBEd1Cy53WIE7tt+Oq32GlidPJI05ojQmgpEgz2lTi52LHUwjpDkEBU6cmIwIkYVK5HEUIKfi7kAJADc7km+Us0aGlgWAGLHAOkBT6RCLImDGcySh1vu2d2f99trUipbHAV2R4iLG4lIuACEBrK5k5/1SLRL6PPr8fA7N2hM8Dvg7iDidbqDF994PPWdOfsqyOsGx2qHHTR1uREkP87SfL8S+PIHECbNfjJ2hB2e2NbcMNc3y1v0dBR/u/lOiYAz6TMvXtXjkLRJG7kDa12sPX99BEhfexBhmso3p5Rpyif9uKNn5MaOqG50kNYFTyo2N1QnYsxZeMFEqxaLJ/u71RbIV9spiqHYf/Mh6Xm2FF2/ft+AyNlHMHraJI/7Klt4edtyZhj6D7FdyIWe+sLQdTBCF46+5QdzL5ldbGG+yUo9+JbopbLk/QxlDLkw/Q7fkpKS53opnZuU8WcEcY0wBEGIQ== X-Forefront-PRVS: 02778BF158 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(39840400002)(39410400002)(39400400002)(39450400003)(189998001)(50986999)(54906002)(305945005)(3846002)(6116002)(7736002)(8676002)(42186005)(53936002)(2906002)(6486002)(50226002)(50466002)(81166006)(48376002)(575784001)(66066001)(110136004)(38730400002)(36756003)(2361001)(2351001)(4326008)(25786009)(5003940100001)(6916009)(6666003)(33646002)(76506005)(6496005)(47776003)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR0701MB1267; H:localhost; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR0701MB1267; 23:CDjSha1/8RvzKLXXs5pTwZszKY8oSecoZH8D3T+?= =?us-ascii?Q?IINsrhtPj45JGtpWaTkMR5+FDBXpJkAPO9+qs3DsmuMhmdvtrOH0fTMf+3Tw?= =?us-ascii?Q?Sf7LaZUww6qJLajT9NOWfJoKPFLapGeCu21sr/3xAyTVZZXAADm18Dbo7cqC?= =?us-ascii?Q?swjAtPwrRS19b+LpUsRQru4lKra5wR+AOK3lRmz4JvDYczvDQRTkoeyh35el?= =?us-ascii?Q?4FzzU650sMbi87SorNSEkp10w29YuQebuRB6g2ShOg3ZchmZMJPdOknQebWo?= =?us-ascii?Q?jP0ttn82HH3Z/foaN1BDNYLbaez2vg8wOhezviI+M3+mmF+aTbta4Bu3IHrh?= =?us-ascii?Q?thTxa7Lov2u9LrtXg9QJhidqc8HhiIMutHvjNRt9NImz4IJWmAPI7EZBZE90?= =?us-ascii?Q?06wgO+0yKzbKdhq5vRCq8ykDkqAHDed4Sh2K2jdl/7iOhVnXGTUBPRugfHgS?= =?us-ascii?Q?PitzySHJeNHbi8PGi89rVqp9mcC6ljyOpUeaxqqcLawuZCLL7VfLzGwlwEXh?= =?us-ascii?Q?7YluDZJHakwXW0dfoJ9TEUg29JoVNHoe/oX4CT8FJS4FLTQHdE74E0Eh9Vp4?= =?us-ascii?Q?7h3rx42uv0+Gqz4yNwCtZ3XDfSXzaKHayyD1dHMUkx7L3x+NM0MH844NRRW0?= =?us-ascii?Q?6pHg8TAg4lE9AjiGWLuD5MuE/VeuRWSZJOMkoB+3uhs1DLzKhRvejTp3ncvZ?= =?us-ascii?Q?c60B8X5Dh+ydxDYs0vzNTHRbJYeeKRxSj0s2kntXql/48OfYnOuYlM/4A6xJ?= =?us-ascii?Q?vOTeFO+jHPTzGmigExzhMPZTpNIzSmEe1zbItaXd3/HfG/IW/AjyI93YAkhf?= =?us-ascii?Q?YBo0lzfkUaPdUCp0aF7LkVbOC/6E7xUeqG4vw/HVOcHOJSyaE1wMFCa+N6rr?= =?us-ascii?Q?PsfguJ4FEY1JRKKDY8/XM2490X6OU6jOcFQ5wH/FLR1OQQ+hCSrQ9Mlf/0Ga?= =?us-ascii?Q?wgtpAIYrfzZ49wkoLNeMvjk4udMwf74X6WDiMb3w8kx38BrxAjVDrjWIAfdv?= =?us-ascii?Q?MOdplSiTWsKfqzbc3dVr2cJc+?= X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1267; 6:6gLFvXYLdbeGQcmatOL27B+1ZF7ITqPdOJajS6ITJHa1UBX6zXa5U73jcpWweK1Lp552lS5plGmCksHnX2ai93yjKVbL+DRqeo/lEEKlrbq7SjiSCgniuJr7MfqczObY70NvD8sDIjDUwZqs7AABnjpF0FyCT2zC1HAVO7DRmOhHDERbbls2O1wuQulg9OqfLA1CUBwuE+Yp8eUhPEUrdmLGzly3sQWdwu8Q+cZDvLuPQADJPI1iFrZRtIObhn08TOttT4QiZsuGkytsBiheni5iBhQTp60anT6zs2jgPpffWI5GK/wfm9vwEeLLdPfVWlV3k56b8zDVQRx/7tVxvtGHveLaJUR+K+CwT8MS9ZLux0q+zj7vzStsejsvQ+S+3nixBJT/ah9lHN9lCL/2/ESnHU8AeZhKG8K/WZWP46kZqjbLnGNx6R0MoeEfr801dYxZy7u8GnC9yW8hdfeluQ==; 5:V8gjhYXqy3Sns8UhAuPCjriVD5r1rJC0rEiisO0GxRbWtGwb555jBmkEBxX5yy5i5rUbPQfYsk3iabACOnR84RfQ9t4FkuX8EH6U7IsCnhjaNNfyYrNPnVUTQDsUzY5fMkgBzgIel6SHelw7xJL8iw==; 24:rwjce05qKiZYwlW09Tft8+E4BJBv/ZXFYi51/ihQnVrMcVVfF6klKShVkqeEnoABCoSJtVEW/qHT+dw2AiBUhI1OC1bGeDLiMdeZ+pI2mnM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1267; 7:P4Ipy05cIEKwqWP8veMYDUOEqLaif+4Li4+GiO+8SCi5ryzZSqQG7XwhPjxGwSOXudO2puj4l1oYa7woCEC6wPJeEKvRBNwTLpCywSlvKLUlfaLsZogELNOMWfOte0pfu1VuzXS00mJ42ugBrqbzi9fnb4/aphMHD5darPg9ukhVhS1ool5r4NZOYNWFsnyE/vfFhh+7I38Vwdr3WZBqCKBxUJnq5SEkG40vrkvrrNVnKXWc3xttTmZLSxXDPQs/cvLdl3Vy0iMLjyT8MSmOIX+3z+Cd9msUVFPm3PQdFYPMiTzrLqAi1jnwoySYNKHwBHj+1ZTlL/FhSKAcTKt5Dw== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2017 20:07:44.8082 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR0701MB1267 |
Commit Message
Yury Norov
April 14, 2017, 8:07 p.m. UTC
SYSCALL_CANCEL() currently calls INLINE_SYSCALL_CALL() both in true and false branches of the "if (SINGLE_THREAD_P)" condition. If arguments that passed in INLINE_SYSCALL_CALL() are wrapped with tricky macros or require other additional handling, the code that does it becomes duplicated, and it may increase the size of function that use it significantly. This patch reworks the SYSCALL_CANCEL() to call INLINE_SYSCALL_CALL() only once. On arm64/ilp32 it reduces the size of sync_file_range.o from 8736 to 7660 bytes. The sync_file_range() is a simple single-line function though: int sync_file_range (int fd, __off64_t offset, __off64_t len, unsigned int flags) { return SYSCALL_CANCEL (sync_file_range2, fd, flags, SYSCALL_LL64 (offset), SYSCALL_LL64 (len)); } * sysdeps/unix/sysdep.h: Reduce duplication in SYSCALL_CANCEL() macro. --- sysdeps/unix/sysdep.h | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-)
Comments
On 04/14/2017 10:07 PM, Yury Norov wrote: > SYSCALL_CANCEL() currently calls INLINE_SYSCALL_CALL() both in true and > false branches of the "if (SINGLE_THREAD_P)" condition. If arguments that > passed in INLINE_SYSCALL_CALL() are wrapped with tricky macros or require > other additional handling, the code that does it becomes duplicated, and > it may increase the size of function that use it significantly. It also widens the window for the race, so I'm not sure if this is a good idea. I think this code will change with the cancellation fixes anyway. Thanks, Florian
diff --git a/sysdeps/unix/sysdep.h b/sysdeps/unix/sysdep.h index 38c2432..f0fa9da 100644 --- a/sysdeps/unix/sysdep.h +++ b/sysdeps/unix/sysdep.h @@ -91,14 +91,13 @@ #define SYSCALL_CANCEL(...) \ ({ \ long int sc_ret; \ - if (SINGLE_THREAD_P) \ - sc_ret = INLINE_SYSCALL_CALL (__VA_ARGS__); \ - else \ - { \ - int sc_cancel_oldtype = LIBC_CANCEL_ASYNC (); \ - sc_ret = INLINE_SYSCALL_CALL (__VA_ARGS__); \ - LIBC_CANCEL_RESET (sc_cancel_oldtype); \ - } \ + int sc_cancel_oldtype; \ + bool multithread = !SINGLE_THREAD_P; \ + if (multithread) \ + sc_cancel_oldtype = LIBC_CANCEL_ASYNC (); \ + sc_ret = INLINE_SYSCALL_CALL (__VA_ARGS__); \ + if (multithread) \ + LIBC_CANCEL_RESET (sc_cancel_oldtype); \ sc_ret; \ })