mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-08 22:30:07 +00:00
hurd: Fix __writev_nocancel_nostatus
* sysdeps/mach/hurd/Makefile [subdir=misc] (sysdep_routines): Add writev_nocancel writev_nocancel_nostatus. * sysdeps/mach/hurd/not-cancel.h (__writev_nocancel_nostatus): Replace macro with function declaration (with hidden prototype in libc). (__writev_nocancel): New function declaration (with hidden prototype in libc). * sysdeps/mach/hurd/writev_nocancel_nostatus.c: New file. * sysdeps/posix/writev_nocancel.c: New file, includes writev.c to make a nocancel variant that calls __write_nocancel. * sysdeps/posix/writev.c (writev): Do not define alias if __writev is renamed.
This commit is contained in:
parent
0c46891442
commit
c1dcc54113
@ -200,6 +200,10 @@ sysdep_routines += f_setlk close_nocancel_nostatus read_nocancel \
|
|||||||
pread64_nocancel write_nocancel pwrite64_nocancel
|
pread64_nocancel write_nocancel pwrite64_nocancel
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq (misc, $(subdir))
|
||||||
|
sysdep_routines += writev_nocancel writev_nocancel_nostatus
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(subdir),sunrpc)
|
ifeq ($(subdir),sunrpc)
|
||||||
sysdep_headers += nfs/nfs.h
|
sysdep_headers += nfs/nfs.h
|
||||||
endif
|
endif
|
||||||
|
@ -54,8 +54,12 @@ __typeof (__write) __write_nocancel;
|
|||||||
/* Non cancellable pwrite syscall (LFS version). */
|
/* Non cancellable pwrite syscall (LFS version). */
|
||||||
__typeof (__pwrite64) __pwrite64_nocancel;
|
__typeof (__pwrite64) __pwrite64_nocancel;
|
||||||
|
|
||||||
#define __writev_nocancel_nostatus(fd, iov, n) \
|
/* Non cancellable writev syscall. */
|
||||||
(void) __writev (fd, iov, n)
|
__typeof (__writev) __writev_nocancel;
|
||||||
|
|
||||||
|
/* Non cancellable writev syscall with no status. */
|
||||||
|
void __writev_nocancel_nostatus (int fd, const struct iovec *vector, int count);
|
||||||
|
|
||||||
# define __waitpid_nocancel(pid, stat_loc, options) \
|
# define __waitpid_nocancel(pid, stat_loc, options) \
|
||||||
__waitpid (pid, stat_loc, options)
|
__waitpid (pid, stat_loc, options)
|
||||||
#define __fcntl64_nocancel(fd, cmd, ...) \
|
#define __fcntl64_nocancel(fd, cmd, ...) \
|
||||||
@ -66,6 +70,8 @@ hidden_proto (__read_nocancel)
|
|||||||
hidden_proto (__pread64_nocancel)
|
hidden_proto (__pread64_nocancel)
|
||||||
hidden_proto (__write_nocancel)
|
hidden_proto (__write_nocancel)
|
||||||
hidden_proto (__pwrite64_nocancel)
|
hidden_proto (__pwrite64_nocancel)
|
||||||
|
hidden_proto (__writev_nocancel)
|
||||||
|
hidden_proto (__writev_nocancel_nostatus)
|
||||||
hidden_proto (__close_nocancel_nostatus)
|
hidden_proto (__close_nocancel_nostatus)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
28
sysdeps/mach/hurd/writev_nocancel_nostatus.c
Normal file
28
sysdeps/mach/hurd/writev_nocancel_nostatus.c
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/* Copyright (C) 1991-2020 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
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with the GNU C Library; if not, see
|
||||||
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <not-cancel.h>
|
||||||
|
|
||||||
|
void
|
||||||
|
__writev_nocancel_nostatus (int fd, const struct iovec *vector, int count)
|
||||||
|
{
|
||||||
|
int save = errno;
|
||||||
|
__writev_nocancel (fd, vector, count);
|
||||||
|
__set_errno (save);
|
||||||
|
}
|
||||||
|
libc_hidden_weak (__writev_nocancel_nostatus)
|
@ -89,4 +89,6 @@ __writev (int fd, const struct iovec *vector, int count)
|
|||||||
return bytes_written;
|
return bytes_written;
|
||||||
}
|
}
|
||||||
libc_hidden_def (__writev)
|
libc_hidden_def (__writev)
|
||||||
|
#ifndef __writev
|
||||||
weak_alias (__writev, writev)
|
weak_alias (__writev, writev)
|
||||||
|
#endif
|
||||||
|
4
sysdeps/posix/writev_nocancel.c
Normal file
4
sysdeps/posix/writev_nocancel.c
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#include <not-cancel.h>
|
||||||
|
#define __writev __writev_nocancel
|
||||||
|
#define __write __write_nocancel
|
||||||
|
#include <sysdeps/posix/writev.c>
|
Loading…
Reference in New Issue
Block a user