mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 12:39:23 +00:00 
			
		
		
		
	 1da177e4c3
			
		
	
	
		1da177e4c3
		
	
	
	
	
		
			
			Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef __LINUX_UIO_H
 | |
| #define __LINUX_UIO_H
 | |
| 
 | |
| #include <linux/compiler.h>
 | |
| #include <linux/types.h>
 | |
| 
 | |
| /*
 | |
|  *	Berkeley style UIO structures	-	Alan Cox 1994.
 | |
|  *
 | |
|  *		This program is free software; you can redistribute it and/or
 | |
|  *		modify it under the terms of the GNU General Public License
 | |
|  *		as published by the Free Software Foundation; either version
 | |
|  *		2 of the License, or (at your option) any later version.
 | |
|  */
 | |
| 
 | |
| 
 | |
| /* A word of warning: Our uio structure will clash with the C library one (which is now obsolete). Remove the C
 | |
|    library one from sys/uio.h if you have a very old library set */
 | |
| 
 | |
| struct iovec
 | |
| {
 | |
| 	void __user *iov_base;	/* BSD uses caddr_t (1003.1g requires void *) */
 | |
| 	__kernel_size_t iov_len; /* Must be size_t (1003.1g) */
 | |
| };
 | |
| 
 | |
| #ifdef __KERNEL__
 | |
| 
 | |
| struct kvec {
 | |
| 	void *iov_base; /* and that should *never* hold a userland pointer */
 | |
| 	size_t iov_len;
 | |
| };
 | |
| 
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|  *	UIO_MAXIOV shall be at least 16 1003.1g (5.4.1.1)
 | |
|  */
 | |
|  
 | |
| #define UIO_FASTIOV	8
 | |
| #define UIO_MAXIOV	1024
 | |
| #if 0
 | |
| #define UIO_MAXIOV	16	/* Maximum iovec's in one operation 
 | |
| 				   16 matches BSD */
 | |
|                                 /* Beg pardon: BSD has 1024 --ANK */
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|  * Total number of bytes covered by an iovec.
 | |
|  *
 | |
|  * NOTE that it is not safe to use this function until all the iovec's
 | |
|  * segment lengths have been validated.  Because the individual lengths can
 | |
|  * overflow a size_t when added together.
 | |
|  */
 | |
| static inline size_t iov_length(const struct iovec *iov, unsigned long nr_segs)
 | |
| {
 | |
| 	unsigned long seg;
 | |
| 	size_t ret = 0;
 | |
| 
 | |
| 	for (seg = 0; seg < nr_segs; seg++)
 | |
| 		ret += iov[seg].iov_len;
 | |
| 	return ret;
 | |
| }
 | |
| 
 | |
| unsigned long iov_shorten(struct iovec *iov, unsigned long nr_segs, size_t to);
 | |
| 
 | |
| #endif
 |