iov_len. (check_iovec_for_write): Ditto. * fhandler.h (fhandler_base::readv): New method. (fhandler_base::writev): Ditto. * fhandler.cc (fhandler_base::readv): New method. (fhandler_base::writev): Ditto. * syscalls.cc (_read): Delegate to readv(2). (_write): Ditto, mutatis mutandi. (readv): Rewrite, based on the old _read code, to use the new fhandler_base::readv method. Improve access mode handling and ensure all calls reach the final strace statement. (writev): Ditto, mutatis mutandi. * include/sys/uio.h (struct iovec): Change field types to match SUSv3. * winsup.h (check_iovec_for_read): New function. (check_iovec_for_write): Ditto. * miscfuncs.cc (check_iovec_for_read): Ditto. (check_iovec_for_write): Ditto.
		
			
				
	
	
		
			39 lines
		
	
	
		
			700 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			700 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* sys/uio.h
 | |
| 
 | |
|    Copyright 1996, 2000, 2001, 2002 Red Hat, Inc.
 | |
| 
 | |
| This file is part of Cygwin.
 | |
| 
 | |
| This software is a copyrighted work licensed under the terms of the
 | |
| Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
 | |
| details. */
 | |
| 
 | |
| #ifndef _UIO_H_
 | |
| #define _UIO_H_
 | |
| 
 | |
| /* For size_t */
 | |
| #include <stddef.h>
 | |
| /* For ssize_t */
 | |
| #include <sys/types.h>
 | |
| 
 | |
| #include <sys/cdefs.h>
 | |
| 
 | |
| __BEGIN_DECLS
 | |
| 
 | |
| /*
 | |
|  * Define the uio buffers used for writev, readv.
 | |
|  */
 | |
| 
 | |
| struct iovec
 | |
| {
 | |
|   void *iov_base;
 | |
|   size_t iov_len;
 | |
| };
 | |
| 
 | |
| extern ssize_t readv __P ((int filedes, const struct iovec *vector, int count));
 | |
| extern ssize_t writev __P ((int filedes, const struct iovec *vector, int count));
 | |
| 
 | |
| __END_DECLS
 | |
| 
 | |
| #endif /* _UIO_H_ */
 |