darwin-xnu/bsd/nfs/xdr_subs.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved.
   3 *
   4 * @APPLE_LICENSE_HEADER_START@
   5 * 
   6 * The contents of this file constitute Original Code as defined in and
   7 * are subject to the Apple Public Source License Version 1.1 (the
   8 * "License").  You may not use this file except in compliance with the
   9 * License.  Please obtain a copy of the License at
  10 * http://www.apple.com/publicsource and read it before using this file.
  11 * 
  12 * This Original Code and all software distributed under the License are
  13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
  16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
  17 * License for the specific language governing rights and limitations
  18 * under the License.
  19 * 
  20 * @APPLE_LICENSE_HEADER_END@
  21 */
  22/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
  23/*
  24 * Copyright (c) 1989, 1993
  25 *     The Regents of the University of California.  All rights reserved.
  26 *
  27 * This code is derived from software contributed to Berkeley by
  28 * Rick Macklem at The University of Guelph.
  29 *
  30 * Redistribution and use in source and binary forms, with or without
  31 * modification, are permitted provided that the following conditions
  32 * are met:
  33 * 1. Redistributions of source code must retain the above copyright
  34 *    notice, this list of conditions and the following disclaimer.
  35 * 2. Redistributions in binary form must reproduce the above copyright
  36 *    notice, this list of conditions and the following disclaimer in the
  37 *    documentation and/or other materials provided with the distribution.
  38 * 3. All advertising materials mentioning features or use of this software
  39 *    must display the following acknowledgement:
  40 *     This product includes software developed by the University of
  41 *     California, Berkeley and its contributors.
  42 * 4. Neither the name of the University nor the names of its contributors
  43 *    may be used to endorse or promote products derived from this software
  44 *    without specific prior written permission.
  45 *
  46 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  47 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  48 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  49 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  50 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  51 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  52 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  53 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  54 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  55 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  56 * SUCH DAMAGE.
  57 *
  58 *     @(#)xdr_subs.h  8.3 (Berkeley) 3/30/95
  59 * FreeBSD-Id: xdr_subs.h,v 1.9 1997/02/22 09:42:53 peter Exp $
  60 */
  61 
  62
  63
  64#ifndef _NFS_XDR_SUBS_H_
  65#define _NFS_XDR_SUBS_H_
  66
  67#include <sys/appleapiopts.h>
  68
  69#ifdef __APPLE_API_PRIVATE
  70/*
  71 * Macros used for conversion to/from xdr representation by nfs...
  72 * These use the MACHINE DEPENDENT routines ntohl, htonl
  73 * As defined by "XDR: External Data Representation Standard" RFC1014
  74 *
  75 * To simplify the implementation, we use ntohl/htonl even on big-endian
  76 * machines, and count on them being `#define'd away.  Some of these
  77 * might be slightly more efficient as quad_t copies on a big-endian,
  78 * but we cannot count on their alignment anyway.
  79 */
  80
  81#define fxdr_unsigned(t, v)     ((t)ntohl((long)(v)))
  82#define txdr_unsigned(v)        (htonl((long)(v)))
  83
  84#define fxdr_nfsv2time(f, t) { \
  85        (t)->tv_sec = ntohl(((struct nfsv2_time *)(f))->nfsv2_sec); \
  86        if (((struct nfsv2_time *)(f))->nfsv2_usec != 0xffffffff) \
  87                (t)->tv_nsec = 1000 * ntohl(((struct nfsv2_time *)(f))->nfsv2_usec); \
  88        else \
  89                (t)->tv_nsec = 0; \
  90}
  91#define txdr_nfsv2time(f, t) { \
  92        ((struct nfsv2_time *)(t))->nfsv2_sec = htonl((f)->tv_sec); \
  93        if ((f)->tv_nsec != -1) \
  94                ((struct nfsv2_time *)(t))->nfsv2_usec = htonl((f)->tv_nsec / 1000); \
  95        else \
  96                ((struct nfsv2_time *)(t))->nfsv2_usec = 0xffffffff; \
  97}
  98
  99#define fxdr_nfsv3time(f, t) { \
 100        (t)->tv_sec = ntohl(((struct nfsv3_time *)(f))->nfsv3_sec); \
 101        (t)->tv_nsec = ntohl(((struct nfsv3_time *)(f))->nfsv3_nsec); \
 102}
 103#define txdr_nfsv3time(f, t) { \
 104        ((struct nfsv3_time *)(t))->nfsv3_sec = htonl((f)->tv_sec); \
 105        ((struct nfsv3_time *)(t))->nfsv3_nsec = htonl((f)->tv_nsec); \
 106}
 107
 108#define fxdr_hyper(f, t) { \
 109        ((long *)(t))[_QUAD_HIGHWORD] = ntohl(((long *)(f))[0]); \
 110        ((long *)(t))[_QUAD_LOWWORD] = ntohl(((long *)(f))[1]); \
 111}
 112#define txdr_hyper(f, t) { \
 113        ((long *)(t))[0] = htonl(((long *)(f))[_QUAD_HIGHWORD]); \
 114        ((long *)(t))[1] = htonl(((long *)(f))[_QUAD_LOWWORD]); \
 115}
 116
 117#endif /* __APPLE_API_PRIVATE */
 118#endif /* _NFS_XDR_SUBS_H_ */
 119
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.