The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/fs/ufs/swab.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  *  linux/fs/ufs/swab.h
    3  *
    4  * Copyright (C) 1997, 1998 Francois-Rene Rideau <fare@tunes.org>
    5  * Copyright (C) 1998 Jakub Jelinek <jj@ultra.linux.cz>
    6  * Copyright (C) 2001 Christoph Hellwig <hch@infradead.org>
    7  */
    8 
    9 #ifndef _UFS_SWAB_H
   10 #define _UFS_SWAB_H
   11 
   12 /*
   13  * Notes:
   14  *    HERE WE ASSUME EITHER BIG OR LITTLE ENDIAN UFSes
   15  *    in case there are ufs implementations that have strange bytesexes,
   16  *    you'll need to modify code here as well as in ufs_super.c and ufs_fs.h
   17  *    to support them.
   18  */
   19 
   20 enum {
   21         BYTESEX_LE,
   22         BYTESEX_BE
   23 };
   24 
   25 static __inline u64
   26 fs64_to_cpu(struct super_block *sbp, u64 n)
   27 {
   28         if (sbp->u.ufs_sb.s_bytesex == BYTESEX_LE)
   29                 return le64_to_cpu(n);
   30         else
   31                 return be64_to_cpu(n);
   32 }
   33 
   34 static __inline u64
   35 cpu_to_fs64(struct super_block *sbp, u64 n)
   36 {
   37         if (sbp->u.ufs_sb.s_bytesex == BYTESEX_LE)
   38                 return cpu_to_le64(n);
   39         else
   40                 return cpu_to_be64(n);
   41 }
   42 
   43 static __inline u32
   44 fs64_add(struct super_block *sbp, u32 *n, int d)
   45 {
   46         if (sbp->u.ufs_sb.s_bytesex == BYTESEX_LE)
   47                 return *n = cpu_to_le64(le64_to_cpu(*n)+d);
   48         else
   49                 return *n = cpu_to_be64(be64_to_cpu(*n)+d);
   50 }
   51 
   52 static __inline u32
   53 fs64_sub(struct super_block *sbp, u32 *n, int d)
   54 {
   55         if (sbp->u.ufs_sb.s_bytesex == BYTESEX_LE)
   56                 return *n = cpu_to_le64(le64_to_cpu(*n)-d);
   57         else
   58                 return *n = cpu_to_be64(be64_to_cpu(*n)-d);
   59 }
   60 
   61 static __inline u32
   62 fs32_to_cpu(struct super_block *sbp, u32 n)
   63 {
   64         if (sbp->u.ufs_sb.s_bytesex == BYTESEX_LE)
   65                 return le32_to_cpu(n);
   66         else
   67                 return be32_to_cpu(n);
   68 }
   69 
   70 static __inline u32
   71 cpu_to_fs32(struct super_block *sbp, u32 n)
   72 {
   73         if (sbp->u.ufs_sb.s_bytesex == BYTESEX_LE)
   74                 return cpu_to_le32(n);
   75         else
   76                 return cpu_to_be32(n);
   77 }
   78 
   79 static __inline u32
   80 fs32_add(struct super_block *sbp, u32 *n, int d)
   81 {
   82         if (sbp->u.ufs_sb.s_bytesex == BYTESEX_LE)
   83                 return *n = cpu_to_le32(le32_to_cpu(*n)+d);
   84         else
   85                 return *n = cpu_to_be32(be32_to_cpu(*n)+d);
   86 }
   87 
   88 static __inline u32
   89 fs32_sub(struct super_block *sbp, u32 *n, int d)
   90 {
   91         if (sbp->u.ufs_sb.s_bytesex == BYTESEX_LE)
   92                 return *n = cpu_to_le32(le32_to_cpu(*n)-d);
   93         else
   94                 return *n = cpu_to_be32(be32_to_cpu(*n)-d);
   95 }
   96 
   97 static __inline u16
   98 fs16_to_cpu(struct super_block *sbp, u16 n)
   99 {
  100         if (sbp->u.ufs_sb.s_bytesex == BYTESEX_LE)
  101                 return le16_to_cpu(n);
  102         else
  103                 return be16_to_cpu(n);
  104 }
  105 
  106 static __inline u16
  107 cpu_to_fs16(struct super_block *sbp, u16 n)
  108 {
  109         if (sbp->u.ufs_sb.s_bytesex == BYTESEX_LE)
  110                 return cpu_to_le16(n);
  111         else
  112                 return cpu_to_be16(n);
  113 }
  114 
  115 static __inline u16
  116 fs16_add(struct super_block *sbp, u16 *n, int d)
  117 {
  118         if (sbp->u.ufs_sb.s_bytesex == BYTESEX_LE)
  119                 return *n = cpu_to_le16(le16_to_cpu(*n)+d);
  120         else
  121                 return *n = cpu_to_be16(be16_to_cpu(*n)+d);
  122 }
  123 
  124 static __inline u16
  125 fs16_sub(struct super_block *sbp, u16 *n, int d)
  126 {
  127         if (sbp->u.ufs_sb.s_bytesex == BYTESEX_LE)
  128                 return *n = cpu_to_le16(le16_to_cpu(*n)-d);
  129         else
  130                 return *n = cpu_to_be16(be16_to_cpu(*n)-d);
  131 }
  132 
  133 #endif /* _UFS_SWAB_H */

Cache object: d1d9c8f09949d4e256b53faf6955b9d7


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.