Consolidate non cancellable writev call

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.
This commit is contained in:
Adhemerval Zanella 2017-07-03 15:33:23 -03:00
parent df1deda600
commit 19926de954
5 changed files with 30 additions and 12 deletions

View File

@ -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> 2017-08-21 Joseph Myers <joseph@codesourcery.com>
Revert: Revert:

View File

@ -216,7 +216,7 @@ write_hist (int fd)
strncpy (thdr.dimen, "seconds", sizeof (thdr.dimen)); strncpy (thdr.dimen, "seconds", sizeof (thdr.dimen));
thdr.dimen_abbrev = 's'; 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) if (++nfilled == NARCS_PER_WRITEV)
{ {
writev_not_cancel_no_status (fd, iov, 2 * nfilled); __writev_nocancel_nostatus (fd, iov, 2 * nfilled);
nfilled = 0; nfilled = 0;
} }
} }
} }
if (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) for (grp = __bb_head; grp; grp = grp->next)
{ {
ncounts = grp->ncounts; ncounts = grp->ncounts;
writev_not_cancel_no_status (fd, bbhead, 2); __writev_nocancel_nostatus (fd, bbhead, 2);
for (nfilled = i = 0; i < ncounts; ++i) for (nfilled = i = 0; i < ncounts; ++i)
{ {
if (nfilled > (sizeof (bbbody) / sizeof (bbbody[0])) - 2) if (nfilled > (sizeof (bbbody) / sizeof (bbbody[0])) - 2)
{ {
writev_not_cancel_no_status (fd, bbbody, nfilled); __writev_nocancel_nostatus (fd, bbbody, nfilled);
nfilled = 0; nfilled = 0;
} }
@ -325,7 +325,7 @@ write_bb_counts (int fd)
bbbody[nfilled++].iov_base = &grp->counts[i]; bbbody[nfilled++].iov_base = &grp->counts[i];
} }
if (nfilled > 0) if (nfilled > 0)
writev_not_cancel_no_status (fd, bbbody, nfilled); __writev_nocancel_nostatus (fd, bbbody, nfilled);
} }
} }

View File

@ -89,7 +89,7 @@ herror(const char *s) {
v++; v++;
v->iov_base = (char *) "\n"; v->iov_base = (char *) "\n";
v->iov_len = 1; v->iov_len = 1;
writev_not_cancel_no_status(STDERR_FILENO, iov, (v - iov) + 1); __writev_nocancel_nostatus(STDERR_FILENO, iov, (v - iov) + 1);
} }
/* /*

View File

@ -34,7 +34,7 @@
__read (fd, buf, n) __read (fd, buf, n)
#define __write_nocancel(fd, buf, n) \ #define __write_nocancel(fd, buf, n) \
__write (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) (void) __writev (fd, iov, n)
#define fcntl_not_cancel(fd, cmd, val) \ #define fcntl_not_cancel(fd, cmd, val) \
__fcntl (fd, cmd, val) __fcntl (fd, cmd, val)

View File

@ -62,10 +62,14 @@ __close_nocancel_nostatus (int fd)
__close_nocancel (fd); __close_nocancel (fd);
} }
/* Uncancelable writev. */ /* Non cancellable writev syscall that does not also set errno in case of
#define writev_not_cancel_no_status(fd, iov, n) \ failure. */
(void) ({ INTERNAL_SYSCALL_DECL (err); \ static inline void
INTERNAL_SYSCALL (writev, err, 3, (fd), (iov), (n)); }) __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. */ /* Uncancelable fcntl. */
#define fcntl_not_cancel(fd, cmd, val) \ #define fcntl_not_cancel(fd, cmd, val) \