From patchwork Tue Jul 4 19:53:46 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 21413 Received: (qmail 74718 invoked by alias); 4 Jul 2017 19:54:23 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 73808 invoked by uid 89); 4 Jul 2017 19:54:16 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-qk0-f173.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=XEecaJqrXxRlEdFexnOLR+Qjquz1J5T1sih4gaDSfGA=; b=FYZzLqqjNSIP1nMle8IzdkxpTAy6uqRyYLtJofL/08mooWfTO406K+YFFbATcmCypK nA5gsCCT7PbRk9+H0ojwvJu92VhZZdeCYH4b2ldHFEXVC+AYasx1w257XOnr3NyL+Qdo RShBFD5GkdFdvo/Sxo/QRkVRb3X6YaGO+d25QASmQJI51w1Uskzdg5FoQgeQFHrN9wSa klkdYloZB6Lb9DLA6EFxDnvI65WDKvG+KbubtblSVIjn3Khbthq1XnhlX66tjIV69v5l RRu6bHt5/8ofB5B+FZ2BeeLX1w5X+l8Oac1XOutb32/NPKXgvsB7Ozdj458n1zhmtkb5 Tyeg== X-Gm-Message-State: AKS2vOxQP7AlsGwOrB4/+XhIWfAn9e1+1D0jUKK2vAV8+9Qx9VKafoaO z7aIsMyCuiWG9dUMzb5tDQ== X-Received: by 10.55.112.66 with SMTP id l63mr50557580qkc.56.1499198050671; Tue, 04 Jul 2017 12:54:10 -0700 (PDT) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH 06/14] Consolidate non cancellable writev call Date: Tue, 4 Jul 2017 16:53:46 -0300 Message-Id: <1499198034-5837-7-git-send-email-adhemerval.zanella@linaro.org> In-Reply-To: <1499198034-5837-1-git-send-email-adhemerval.zanella@linaro.org> References: <1499198034-5837-1-git-send-email-adhemerval.zanella@linaro.org> This patch consolidates all the non cancellable writev calls to use the __writev_nocancel identifier. For non cancellable targets it will be just a macro to call the default respective symbol while on Linux will be a internal one. Checked on x86_64-linux-gnu, x86_64-linux-gnu-x32, and i686-linux-gnu. * gmon/gmon.c (write_hist): Replace writev_not_cancel_no_status with __writev_nocancel_nostatus. (write_call_graph): Likewise. (write_bb_counts): Likewise. * resolv/herror.c (herror): Likewise. * sysdeps/generic/not-cancel.h (writev_not_cancel_no_status): Remove macro. (__writev_nocancel_nostatus): New macro. * sysdeps/unix/sysv/linux/not-cancel.h (writev_not_cancel_no_status): Remove macro. (__writev_nocancel_nostatus): New function. --- ChangeLog | 12 ++++++++++++ gmon/gmon.c | 12 ++++++------ resolv/herror.c | 2 +- sysdeps/generic/not-cancel.h | 2 +- sysdeps/unix/sysv/linux/not-cancel.h | 12 ++++++++---- 5 files changed, 28 insertions(+), 12 deletions(-) diff --git a/gmon/gmon.c b/gmon/gmon.c index b26c27a..8408e53 100644 --- a/gmon/gmon.c +++ b/gmon/gmon.c @@ -216,7 +216,7 @@ write_hist (int fd) strncpy (thdr.dimen, "seconds", sizeof (thdr.dimen)); thdr.dimen_abbrev = 's'; - writev_not_cancel_no_status (fd, iov, 3); + __writev_nocancel_nostatus (fd, iov, 3); } } @@ -273,13 +273,13 @@ write_call_graph (int fd) if (++nfilled == NARCS_PER_WRITEV) { - writev_not_cancel_no_status (fd, iov, 2 * nfilled); + __writev_nocancel_nostatus (fd, iov, 2 * nfilled); nfilled = 0; } } } if (nfilled > 0) - writev_not_cancel_no_status (fd, iov, 2 * nfilled); + __writev_nocancel_nostatus (fd, iov, 2 * nfilled); } @@ -312,12 +312,12 @@ write_bb_counts (int fd) for (grp = __bb_head; grp; grp = grp->next) { ncounts = grp->ncounts; - writev_not_cancel_no_status (fd, bbhead, 2); + __writev_nocancel_nostatus (fd, bbhead, 2); for (nfilled = i = 0; i < ncounts; ++i) { if (nfilled > (sizeof (bbbody) / sizeof (bbbody[0])) - 2) { - writev_not_cancel_no_status (fd, bbbody, nfilled); + __writev_nocancel_nostatus (fd, bbbody, nfilled); nfilled = 0; } @@ -325,7 +325,7 @@ write_bb_counts (int fd) bbbody[nfilled++].iov_base = &grp->counts[i]; } if (nfilled > 0) - writev_not_cancel_no_status (fd, bbbody, nfilled); + __writev_nocancel_nostatus (fd, bbbody, nfilled); } } diff --git a/resolv/herror.c b/resolv/herror.c index b3df236..45c0a5d 100644 --- a/resolv/herror.c +++ b/resolv/herror.c @@ -89,7 +89,7 @@ herror(const char *s) { v++; v->iov_base = (char *) "\n"; v->iov_len = 1; - writev_not_cancel_no_status(STDERR_FILENO, iov, (v - iov) + 1); + __writev_nocancel_nostatus(STDERR_FILENO, iov, (v - iov) + 1); } /* diff --git a/sysdeps/generic/not-cancel.h b/sysdeps/generic/not-cancel.h index 53214cd..9959c87 100644 --- a/sysdeps/generic/not-cancel.h +++ b/sysdeps/generic/not-cancel.h @@ -34,7 +34,7 @@ __read (fd, buf, n) #define __write_nocancel(fd, buf, n) \ __write (fd, buf, n) -#define writev_not_cancel_no_status(fd, iov, n) \ +#define __writev_nocancel_nostatus(fd, iov, n) \ (void) __writev (fd, iov, n) #define fcntl_not_cancel(fd, cmd, val) \ __fcntl (fd, cmd, val) diff --git a/sysdeps/unix/sysv/linux/not-cancel.h b/sysdeps/unix/sysv/linux/not-cancel.h index c620c8a..7fd42c2 100644 --- a/sysdeps/unix/sysv/linux/not-cancel.h +++ b/sysdeps/unix/sysv/linux/not-cancel.h @@ -63,10 +63,14 @@ __close_nocancel_no_status (int fd) return INTERNAL_SYSCALL (close, err, 1, (fd)); } -/* Uncancelable writev. */ -#define writev_not_cancel_no_status(fd, iov, n) \ - (void) ({ INTERNAL_SYSCALL_DECL (err); \ - INTERNAL_SYSCALL (writev, err, 3, (fd), (iov), (n)); }) +/* Non cancellable writev syscall that does not also set errno in case of + failure. */ +static inline int +__writev_nocancel_nostatus (int fd, const struct iovec *iov, int iovcnt) +{ + INTERNAL_SYSCALL_DECL (err); + return INTERNAL_SYSCALL_CALL (writev, err, fd, iov, iovcnt); +} /* Uncancelable fcntl. */ #define fcntl_not_cancel(fd, cmd, val) \