[PATCH v2 40/45] RTEMS: Introduce <machine/_kernel_uio.h>

Sebastian Huber <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
This helps to avoid Newlib updates due to FreeBSD kernel space changes.

Signed-off-by: Sebastian Huber <[email protected]>
---
 newlib/libc/sys/rtems/include/sys/uio.h | 60 ++++-----------------------------
 1 file changed, 6 insertions(+), 54 deletions(-)

diff --git a/newlib/libc/sys/rtems/include/sys/uio.h b/newlib/libc/sys/rtems/include/sys/uio.h
index 4aff08ead..38d5ba9df 100644
--- a/newlib/libc/sys/rtems/include/sys/uio.h
+++ b/newlib/libc/sys/rtems/include/sys/uio.h
@@ -50,59 +50,7 @@ typedef	__off_t	off_t;
 #define	_OFF_T_DECLARED
 #endif
 
-#ifdef _KERNEL
-
-struct uio {
-	struct	iovec *uio_iov;		/* scatter/gather list */
-	int	uio_iovcnt;		/* length of scatter/gather list */
-	off_t	uio_offset;		/* offset in target object */
-	ssize_t	uio_resid;		/* remaining bytes to process */
-	enum	uio_seg uio_segflg;	/* address space */
-	enum	uio_rw uio_rw;		/* operation */
-	struct	thread *uio_td;		/* owner */
-};
-
-/*
- * Limits
- *
- * N.B.: UIO_MAXIOV must be no less than IOV_MAX from <sys/syslimits.h>
- * which in turn must be no less than _XOPEN_IOV_MAX from <limits.h>.  If
- * we ever make this tunable (probably pointless), then IOV_MAX should be
- * removed from <sys/syslimits.h> and applications would be expected to use
- * sysconf(3) to find out the correct value, or else assume the worst
- * (_XOPEN_IOV_MAX).  Perhaps UIO_MAXIOV should be simply defined as
- * IOV_MAX.
- */
-#define UIO_MAXIOV	1024		/* max 1K of iov's */
-
-struct vm_object;
-struct vm_page;
-struct bus_dma_segment;
-
-struct uio *cloneuio(struct uio *uiop);
-int	copyinfrom(const void * __restrict src, void * __restrict dst,
-	    size_t len, int seg);
-int	copyiniov(const struct iovec *iovp, u_int iovcnt, struct iovec **iov,
-	    int error);
-int	copyinstrfrom(const void * __restrict src, void * __restrict dst,
-	    size_t len, size_t * __restrict copied, int seg);
-int	copyinuio(const struct iovec *iovp, u_int iovcnt, struct uio **uiop);
-int	copyout_map(struct thread *td, vm_offset_t *addr, size_t sz);
-int	copyout_unmap(struct thread *td, vm_offset_t addr, size_t sz);
-int	physcopyin(void *src, vm_paddr_t dst, size_t len);
-int	physcopyout(vm_paddr_t src, void *dst, size_t len);
-int	physcopyin_vlist(struct bus_dma_segment *src, off_t offset,
-	    vm_paddr_t dst, size_t len);
-int	physcopyout_vlist(vm_paddr_t src, struct bus_dma_segment *dst,
-	    off_t offset, size_t len);
-int	uiomove(void *cp, int n, struct uio *uio);
-int	uiomove_frombuf(void *buf, int buflen, struct uio *uio);
-int	uiomove_fromphys(struct vm_page *ma[], vm_offset_t offset, int n,
-	    struct uio *uio);
-int	uiomove_nofault(void *cp, int n, struct uio *uio);
-int	uiomove_object(struct vm_object *obj, off_t obj_size, struct uio *uio);
-
-#else /* !_KERNEL */
+#ifndef _KERNEL
 
 __BEGIN_DECLS
 ssize_t	readv(int, const struct iovec *, int);
@@ -113,6 +61,10 @@ ssize_t	pwritev(int, const struct iovec *, int, off_t);
 #endif
 __END_DECLS
 
-#endif /* _KERNEL */
+#endif /* !_KERNEL */
 
+#ifdef _KERNEL
+/* Header file provided outside of Newlib */
+#include <machine/_kernel_uio.h>
+#endif
 #endif /* !_SYS_UIO_H_ */
-- 
2.13.7
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.