Merge commit 'refs/top-bases/top' into top

This commit is contained in:
Brian Behlendorf 2009-03-12 15:15:48 -07:00
commit 3c3ac661d3
8 changed files with 101 additions and 77 deletions

View File

@ -1,6 +0,0 @@
The bulk of the library is Copyright 2004 Sun Microsystems, Inc.
Portions are Copyright 2006 OmniTI, Inc.
The library is distributed under the terms of the CDDL.
See the file OPENSOLARIS.LICENSE for more information.

View File

@ -66,11 +66,13 @@ AC_DEFUN([ZFS_AC_KERNEL], [
AC_MSG_RESULT([$kernsrcver]) AC_MSG_RESULT([$kernsrcver])
kmoduledir=${INSTALL_MOD_PATH}/lib/modules/$kernsrcver kmoduledir=${INSTALL_MOD_PATH}/lib/modules/$kernsrcver
LINUX=${kernelsrc} LINUX=${kernelsrc}
LINUX_OBJ=${kernelbuild} LINUX_OBJ=${kernelbuild}
LINUX_VERSION=${kernsrcver}
AC_SUBST(LINUX) AC_SUBST(LINUX)
AC_SUBST(LINUX_OBJ) AC_SUBST(LINUX_OBJ)
AC_SUBST(LINUX_VERSION)
AC_SUBST(kmoduledir) AC_SUBST(kmoduledir)
]) ])

View File

@ -19,6 +19,7 @@ libspl_la_SOURCES = \
${top_srcdir}/lib/libspl/strlcpy.c \ ${top_srcdir}/lib/libspl/strlcpy.c \
${top_srcdir}/lib/libspl/strnlen.c \ ${top_srcdir}/lib/libspl/strnlen.c \
${top_srcdir}/lib/libspl/zone.c \ ${top_srcdir}/lib/libspl/zone.c \
${top_srcdir}/lib/libspl/xdr.c \
${top_srcdir}/lib/libspl/asm-${target_cpu}/atomic.S \ ${top_srcdir}/lib/libspl/asm-${target_cpu}/atomic.S \
${top_srcdir}/lib/libspl/include/sys/list.h \ ${top_srcdir}/lib/libspl/include/sys/list.h \
${top_srcdir}/lib/libspl/include/sys/list_impl.h ${top_srcdir}/lib/libspl/include/sys/list_impl.h

View File

@ -1,6 +1,7 @@
noinst_HEADERS = *.h pkginclude_HEADERS = *.h
noinst_HEADERS += ia32/sys/*.h pkginclude_HEADERS += ia32/sys/*.h
noinst_HEADERS += sys/*.h pkginclude_HEADERS += rpc/*.h
noinst_HEADERS += sys/fm/*.h pkginclude_HEADERS += sys/*.h
noinst_HEADERS += sys/sysevent/*.h pkginclude_HEADERS += sys/fm/*.h
noinst_HEADERS += tsol/*.h pkginclude_HEADERS += sys/sysevent/*.h
pkginclude_HEADERS += tsol/*.h

View File

@ -18,16 +18,13 @@
* information: Portions Copyright [yyyy] [name of copyright owner] * information: Portions Copyright [yyyy] [name of copyright owner]
* *
* CDDL HEADER END * CDDL HEADER END
*/ *
/*
* Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms. * Use is subject to license terms.
*/ *
* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T
/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ * All Rights Reserved
/* All Rights Reserved */ *
/*
* Portions of this source code were derived from Berkeley 4.3 BSD * Portions of this source code were derived from Berkeley 4.3 BSD
* under license from the Regents of the University of California. * under license from the Regents of the University of California.
*/ */
@ -37,26 +34,16 @@
#include_next <rpc/xdr.h> #include_next <rpc/xdr.h>
/*
* Strangely, my glibc version (2.3.6) doesn't have xdr_control(), so
* we have to hack it in here (source taken from OpenSolaris).
* By the way, it is assumed the xdrmem implementation is used.
*/
#define xdr_control(a,b,c) xdrmem_control(a,b,c)
/* /*
* These are XDR control operators * These are XDR control operators
*/ */
#define XDR_GET_BYTES_AVAIL 1 #define XDR_GET_BYTES_AVAIL 1
struct xdr_bytesrec { typedef struct xdr_bytesrec {
bool_t xc_is_last_record; bool_t xc_is_last_record;
size_t xc_num_avail; size_t xc_num_avail;
}; } xdr_bytesrec_t;
typedef struct xdr_bytesrec xdr_bytesrec;
/* /*
* These are the request arguments to XDR_CONTROL. * These are the request arguments to XDR_CONTROL.
@ -73,46 +60,6 @@ typedef struct xdr_bytesrec xdr_bytesrec;
#define XDR_RDMAGET 4 #define XDR_RDMAGET 4
#define XDR_RDMASET 5 #define XDR_RDMASET 5
/* FIXME: probably doesn't work */ extern bool_t xdr_control(XDR *xdrs, int request, void *info);
static bool_t
xdrmem_control(XDR *xdrs, int request, void *info)
{
xdr_bytesrec *xptr;
int32_t *int32p;
int len;
switch (request) {
case XDR_GET_BYTES_AVAIL:
xptr = (xdr_bytesrec *)info;
xptr->xc_is_last_record = TRUE;
xptr->xc_num_avail = xdrs->x_handy;
return (TRUE);
case XDR_PEEK:
/*
* Return the next 4 byte unit in the XDR stream.
*/
if (xdrs->x_handy < sizeof (int32_t))
return (FALSE);
int32p = (int32_t *)info;
*int32p = (int32_t)ntohl((uint32_t)
(*((int32_t *)(xdrs->x_private))));
return (TRUE);
case XDR_SKIPBYTES:
/*
* Skip the next N bytes in the XDR stream.
*/
int32p = (int32_t *)info;
len = RNDUP((int)(*int32p));
if ((xdrs->x_handy -= len) < 0)
return (FALSE);
xdrs->x_private += len;
return (TRUE);
}
return (FALSE);
}
#endif #endif

78
lib/libspl/xdr.c Normal file
View File

@ -0,0 +1,78 @@
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*
* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T
* All Rights Reserved
*
* Portions of this source code were derived from Berkeley 4.3 BSD
* under license from the Regents of the University of California.
*/
#include <rpc/xdr.h>
/*
* As of glibc-2.5-25 there is not support for xdr_control(). The
* xdrmem implementation from OpenSolaris is used here.
*
* FIXME: Not well tested it may not work as expected.
*/
bool_t
xdr_control(XDR *xdrs, int request, void *info)
{
xdr_bytesrec_t *xptr;
int32_t *int32p;
int len;
switch (request) {
case XDR_GET_BYTES_AVAIL:
xptr = (xdr_bytesrec_t *)info;
xptr->xc_is_last_record = TRUE;
xptr->xc_num_avail = xdrs->x_handy;
return (TRUE);
case XDR_PEEK:
/*
* Return the next 4 byte unit in the XDR stream.
*/
if (xdrs->x_handy < sizeof (int32_t))
return (FALSE);
int32p = (int32_t *)info;
*int32p = (int32_t)ntohl((uint32_t)
(*((int32_t *)(xdrs->x_private))));
return (TRUE);
case XDR_SKIPBYTES:
/*
* Skip the next N bytes in the XDR stream.
*/
int32p = (int32_t *)info;
len = RNDUP((int)(*int32p));
if ((xdrs->x_handy -= len) < 0)
return (FALSE);
xdrs->x_private += len;
return (TRUE);
}
return (FALSE);
}

View File

@ -1 +1 @@
noinst_HEADERS = sys/*.h pkginclude_HEADERS = sys/*.h

View File

@ -85,7 +85,7 @@ rm -rf $RPM_BUILD_ROOT
%files %files
%defattr(-, root, root) %defattr(-, root, root)
%doc AUTHORS ChangeLog COPYING COPYRIGHT DISCLAIMER GIT %doc AUTHORS ChangeLog COPYING DISCLAIMER GIT
%doc OPENSOLARIS.LICENSE README TODO ZFS.RELEASE %doc OPENSOLARIS.LICENSE README TODO ZFS.RELEASE
%{_sbindir}/* %{_sbindir}/*
%{_libdir}/* %{_libdir}/*
@ -94,6 +94,7 @@ rm -rf $RPM_BUILD_ROOT
%files devel %files devel
%defattr(-,root,root) %defattr(-,root,root)
%{kdir}/include/zfs/* %{kdir}/include/zfs/*
%{_includedir}/*
%post %post
if [ -f /boot/System.map-%{kver} ]; then if [ -f /boot/System.map-%{kver} ]; then