linux/fs/xfs/uuid.c
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc.
   3 * All Rights Reserved.
   4 *
   5 * This program is free software; you can redistribute it and/or
   6 * modify it under the terms of the GNU General Public License as
   7 * published by the Free Software Foundation.
   8 *
   9 * This program is distributed in the hope that it would be useful,
  10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12 * GNU General Public License for more details.
  13 *
  14 * You should have received a copy of the GNU General Public License
  15 * along with this program; if not, write the Free Software Foundation,
  16 * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  17 */
  18#include <xfs.h>
  19
  20/* IRIX interpretation of an uuid_t */
  21typedef struct {
  22        __be32  uu_timelow;
  23        __be16  uu_timemid;
  24        __be16  uu_timehi;
  25        __be16  uu_clockseq;
  26        __be16  uu_node[3];
  27} xfs_uu_t;
  28
  29/*
  30 * uuid_getnodeuniq - obtain the node unique fields of a UUID.
  31 *
  32 * This is not in any way a standard or condoned UUID function;
  33 * it just something that's needed for user-level file handles.
  34 */
  35void
  36uuid_getnodeuniq(uuid_t *uuid, int fsid [2])
  37{
  38        xfs_uu_t *uup = (xfs_uu_t *)uuid;
  39
  40        fsid[0] = (be16_to_cpu(uup->uu_clockseq) << 16) |
  41                   be16_to_cpu(uup->uu_timemid);
  42        fsid[1] = be32_to_cpu(uup->uu_timelow);
  43}
  44
  45int
  46uuid_is_nil(uuid_t *uuid)
  47{
  48        int     i;
  49        char    *cp = (char *)uuid;
  50
  51        if (uuid == NULL)
  52                return 0;
  53        /* implied check of version number here... */
  54        for (i = 0; i < sizeof *uuid; i++)
  55                if (*cp++) return 0;    /* not nil */
  56        return 1;       /* is nil */
  57}
  58
  59int
  60uuid_equal(uuid_t *uuid1, uuid_t *uuid2)
  61{
  62        return memcmp(uuid1, uuid2, sizeof(uuid_t)) ? 0 : 1;
  63}
  64