]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Consolidate non cancellable writev call
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 3 Jul 2017 18:33:23 +0000 (15:33 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 21 Aug 2017 18:37:45 +0000 (15:37 -0300)
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
gmon/gmon.c
resolv/herror.c
sysdeps/generic/not-cancel.h
sysdeps/unix/sysv/linux/not-cancel.h

index 0e0ab13a5df557b6363da9d77710c649a176caf2..6e74ce30650ae29a246af5335ac48c49f1048144 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2017-08-21  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+
+       * 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.
+
 2017-08-21  Joseph Myers  <joseph@codesourcery.com>
 
        Revert:
index 90c7895980edc1419bedc24252d7fd21bac9fd7c..c1d170170a861645dd18ee294d0db03770c798c0 100644 (file)
@@ -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);
     }
 }
 
index b3df236bc95d67df7e9ef214cb651efafb7269f6..45c0a5dbdaf6eb1c5751ea88be2079c59d181077 100644 (file)
@@ -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);
 }
 
 /*
index ee9988a9909e57401dab1f9adbe622009a24e414..e3ed0e6e65c1a3dfdf95d7714341947d28cbcb99 100644 (file)
@@ -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)
index 51824515da98cd61f48694454add1acdbdfca5ab..29926d34948fa720a8dca5c1ae81eb779b7e6351 100644 (file)
@@ -62,10 +62,14 @@ __close_nocancel_nostatus (int fd)
   __close_nocancel (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 void
+__writev_nocancel_nostatus (int fd, const struct iovec *iov, int iovcnt)
+{
+  INTERNAL_SYSCALL_DECL (err);
+  INTERNAL_SYSCALL_CALL (writev, err, fd, iov, iovcnt);
+}
 
 /* Uncancelable fcntl.  */
 #define fcntl_not_cancel(fd, cmd, val) \