>From 8248d7bad63b03cc7ca53ca7011a86f23cfb1018 Mon Sep 17 00:00:00 2001
From: Joel Sherrill <joel.sherrill@oarcorp.com>
Date: Wed, 5 Sep 2012 12:33:58 -0500
Subject: [PATCH] Move <memory.h> and <sys/uio.h> to non-networking directory

These two header files were installed from libnetworking even
when networking was disabled. This patch moves them to a
non-networking location and updates uio.h to match the FreeBSD 8.x
source being used for the USB stack and TCP/IP stack upgrade.

 - cpukit/include/memory.h
   Move from cpukit/libnetworking/memory.h. No changes

 - cpukit/include/sys/uio.h
   Move from cpukit/libnetworking/sys/uio.h. Replace with FreeBSD 8.x version.

 - cpukit/include/sys/_iovec.h
   New. FreeBSD 8.x file supporting <sys/uio.h>.

 - cpukit/Makefile.am
   Reflect movement of <memory.h> and <sys/uio.h>.

 - cpukit/preinstall.am
   Regenerate

 - cpukit/libnetworking/nfs/bootp_subr.c
   Eliminate use of uio_procp field no longer in FreeBSD structure. This
   field was set and never read so eliminating the set has no impact.
---
 cpukit/Makefile.am                    |    5 +-
 cpukit/include/memory.h               |    7 ++
 cpukit/include/sys/_iovec.h           |   58 +++++++++++++++
 cpukit/include/sys/uio.h              |  124 +++++++++++++++++++++++++++++++++
 cpukit/libnetworking/memory.h         |    7 --
 cpukit/libnetworking/nfs/bootp_subr.c |    4 +
 cpukit/libnetworking/sys/uio.h        |   99 --------------------------
 cpukit/preinstall.am                  |    8 ++-
 8 files changed, 202 insertions(+), 110 deletions(-)
 create mode 100644 cpukit/include/memory.h
 create mode 100644 cpukit/include/sys/_iovec.h
 create mode 100644 cpukit/include/sys/uio.h
 delete mode 100644 cpukit/libnetworking/memory.h
 delete mode 100644 cpukit/libnetworking/sys/uio.h

diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am
index b5569fa..7315f31 100644
--- a/cpukit/Makefile.am
+++ b/cpukit/Makefile.am
@@ -42,7 +42,7 @@ if NEWLIB
 include_sysdir = $(includedir)/sys
 include_sys_HEADERS =
 
-include_HEADERS += libnetworking/memory.h
+include_HEADERS += include/memory.h
 include_HEADERS += libmd/md4.h
 include_HEADERS += libmd/md5.h
 
@@ -55,7 +55,8 @@ include_sys_HEADERS += libcsupport/include/sys/ttycom.h
 include_sys_HEADERS += libcsupport/include/sys/termios.h
 include_sys_HEADERS += libcsupport/include/sys/utsname.h
 
-include_sys_HEADERS += libnetworking/sys/uio.h
+include_sys_HEADERS += include/sys/uio.h
+include_sys_HEADERS += include/sys/_iovec.h
 include_sys_HEADERS += include/sys/priority.h
 
 if LIBNETWORKING
diff --git a/cpukit/include/memory.h b/cpukit/include/memory.h
new file mode 100644
index 0000000..99fdb5e
--- /dev/null
+++ b/cpukit/include/memory.h
@@ -0,0 +1,7 @@
+/**
+ * @file memory.h
+ *
+ * Dummy include file for FreeBSD routines
+ */
+
+#include <string.h>
diff --git a/cpukit/include/sys/_iovec.h b/cpukit/include/sys/_iovec.h
new file mode 100644
index 0000000..a6ca683
--- /dev/null
+++ b/cpukit/include/sys/_iovec.h
@@ -0,0 +1,58 @@
+/*-
+ * Copyright (c) 1982, 1986, 1993, 1994
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)uio.h	8.5 (Berkeley) 2/22/94
+ * $FreeBSD$
+ */
+
+#ifndef _SYS__IOVEC_HH_
+#define	_SYS__IOVEC_HH_
+
+#include <sys/_types.h>
+
+#ifndef _SIZE_T_DECLARED
+typedef	__size_t	size_t;
+#define	_SIZE_T_DECLARED
+#endif
+
+#ifdef __rtems__
+#ifndef __IOVEC_DEFINED
+#define __IOVEC_DEFINED
+struct iovec {
+	void	*iov_base;	/* Base address. */
+	size_t	 iov_len;	/* Length. */
+};
+#endif /* __IOVEC_DEFINED */
+#else
+struct iovec {
+	void	*iov_base;	/* Base address. */
+	size_t	 iov_len;	/* Length. */
+};
+#endif /* rtems */
+
+#endif /* !_SYS__IOVEC_HH_ */
diff --git a/cpukit/include/sys/uio.h b/cpukit/include/sys/uio.h
new file mode 100644
index 0000000..56956f0
--- /dev/null
+++ b/cpukit/include/sys/uio.h
@@ -0,0 +1,124 @@
+/*-
+ * Copyright (c) 1982, 1986, 1993, 1994
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)uio.h	8.5 (Berkeley) 2/22/94
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_UIO_HH_
+#define	_SYS_UIO_HH_
+
+#include <sys/cdefs.h>
+#ifdef __rtems__
+#include <sys/types.h>
+#endif /* __rtems__ */
+#include <sys/_types.h>
+#include <sys/_iovec.h>
+
+#ifndef __rtems__
+#ifndef _SSIZE_T_DECLARED
+typedef	__ssize_t	ssize_t;
+#define	_SSIZE_T_DECLARED
+#endif
+
+#ifndef _OFF_T_DECLARED
+typedef	__off_t	off_t;
+#define	_OFF_T_DECLARED
+#endif
+#endif /* !__rtems__ */
+
+#if __BSD_VISIBLE
+enum	uio_rw { UIO_READ, UIO_WRITE };
+
+/* Segment flag values. */
+enum uio_seg {
+	UIO_USERSPACE,		/* from user data space */
+	UIO_SYSSPACE,		/* from system space */
+	UIO_NOCOPY		/* don't copy, already in object */
+};
+#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 uio *cloneuio(struct uio *uiop);
+int	copyinfrom(const void * __restrict src, void * __restrict dst,
+	    size_t len, int seg);
+int	copyiniov(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(struct iovec *iovp, u_int iovcnt, struct uio **uiop);
+void	uio_yield(void);
+int	uiomove(void *cp, int n, struct uio *uio);
+int	uiomove_frombuf(void *buf, int buflen, struct uio *uio);
+#ifndef __rtems__
+int	uiomove_fromphys(struct vm_page *ma[], vm_offset_t offset, int n,
+	    struct uio *uio);
+#endif /* !__rtems__ */
+int	uiomoveco(void *cp, int n, struct uio *uio, int disposable);
+
+#else /* !_KERNEL */
+
+__BEGIN_DECLS
+ssize_t	readv(int, const struct iovec *, int);
+ssize_t	writev(int, const struct iovec *, int);
+#if __BSD_VISIBLE
+ssize_t	preadv(int, const struct iovec *, int, off_t);
+ssize_t	pwritev(int, const struct iovec *, int, off_t);
+#endif
+__END_DECLS
+
+#endif /* _KERNEL */
+
+#endif /* !_SYS_UIO_HH_ */
diff --git a/cpukit/libnetworking/memory.h b/cpukit/libnetworking/memory.h
deleted file mode 100644
index 99fdb5e..0000000
--- a/cpukit/libnetworking/memory.h
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * @file memory.h
- *
- * Dummy include file for FreeBSD routines
- */
-
-#include <string.h>
diff --git a/cpukit/libnetworking/nfs/bootp_subr.c b/cpukit/libnetworking/nfs/bootp_subr.c
index 0645b89..911e322 100644
--- a/cpukit/libnetworking/nfs/bootp_subr.c
+++ b/cpukit/libnetworking/nfs/bootp_subr.c
@@ -380,7 +380,9 @@ bootpc_call(
 		auio.uio_rw = UIO_WRITE;
 		auio.uio_offset = 0;
 		auio.uio_resid = sizeof(*call);
+#ifndef __rtems__
 		auio.uio_procp = procp;
+#endif
 		error = sosend(so, nam, &auio, NULL, NULL, 0);
 		if (error) {
 			printf("bootpc_call: sosend: %d\n", error);
@@ -414,7 +416,9 @@ bootpc_call(
 			auio.uio_rw = UIO_READ;
 			auio.uio_offset = 0;
 			auio.uio_resid = sizeof(*reply);
+#ifndef __rtems__
 			auio.uio_procp = procp;
+#endif
 			
 			rcvflg = 0;
 			error = soreceive(so, NULL, &auio, NULL, NULL, &rcvflg);
diff --git a/cpukit/libnetworking/sys/uio.h b/cpukit/libnetworking/sys/uio.h
deleted file mode 100644
index 71e09a2..0000000
--- a/cpukit/libnetworking/sys/uio.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 1982, 1986, 1993, 1994
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)uio.h	8.5 (Berkeley) 2/22/94
- * $FreeBSD: src/sys/sys/uio.h,v 1.40 2006/11/29 19:08:45 alfred Exp $
- */
-
-
-#ifndef _SYS_UIO_H_
-#define	_SYS_UIO_H_
-
-#include <sys/cdefs.h>
-#include <sys/types.h>
-
-/*
- *  POSIX compliant iovec definition
- */
-struct iovec {
-  void    *iov_base;  /* pointer to data to be written */
-  size_t   iov_len;   /* length of this data block */
-};
-
-#if __BSD_VISIBLE
-enum	uio_rw { UIO_READ, UIO_WRITE };
-
-/* Segment flag values. */
-enum uio_seg {
-	UIO_USERSPACE,		/* from user data space */
-	UIO_SYSSPACE,		/* from system space */
-	UIO_NOCOPY		/* don't copy, already in object */
-};
-#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 */
-#if !defined(__rtems__)
-	struct	thread *uio_td;		/* owner */
-#else
-	struct	proc *uio_procp;
-#endif /* !__rtems__ */
-};
-
-/*
- * 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 */
-
-int	uiomove(void *cp, int n, struct uio *uio);
-
-#else /* !_KERNEL */
-
-__BEGIN_DECLS
-ssize_t	readv(int, const struct iovec *, int);
-ssize_t	writev(int, const struct iovec *, int);
-__END_DECLS
-
-#endif /* _KERNEL */
-
-#endif /* !_SYS_UIO_H_ */
diff --git a/cpukit/preinstall.am b/cpukit/preinstall.am
index f6d24bb..c2afa24 100644
--- a/cpukit/preinstall.am
+++ b/cpukit/preinstall.am
@@ -43,7 +43,7 @@ $(PROJECT_INCLUDE)/sys/$(dirstamp):
 	@: > $(PROJECT_INCLUDE)/sys/$(dirstamp)
 PREINSTALL_DIRS += $(PROJECT_INCLUDE)/sys/$(dirstamp)
 
-$(PROJECT_INCLUDE)/memory.h: libnetworking/memory.h $(PROJECT_INCLUDE)/$(dirstamp)
+$(PROJECT_INCLUDE)/memory.h: include/memory.h $(PROJECT_INCLUDE)/$(dirstamp)
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/memory.h
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/memory.h
 
@@ -87,10 +87,14 @@ $(PROJECT_INCLUDE)/sys/utsname.h: libcsupport/include/sys/utsname.h $(PROJECT_IN
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/sys/utsname.h
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/sys/utsname.h
 
-$(PROJECT_INCLUDE)/sys/uio.h: libnetworking/sys/uio.h $(PROJECT_INCLUDE)/sys/$(dirstamp)
+$(PROJECT_INCLUDE)/sys/uio.h: include/sys/uio.h $(PROJECT_INCLUDE)/sys/$(dirstamp)
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/sys/uio.h
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/sys/uio.h
 
+$(PROJECT_INCLUDE)/sys/_iovec.h: include/sys/_iovec.h $(PROJECT_INCLUDE)/sys/$(dirstamp)
+	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/sys/_iovec.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/sys/_iovec.h
+
 $(PROJECT_INCLUDE)/sys/priority.h: include/sys/priority.h $(PROJECT_INCLUDE)/sys/$(dirstamp)
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/sys/priority.h
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/sys/priority.h
-- 
1.7.1

