0001
0002 #ifndef FS_CEPH_FRAG_H
0003 #define FS_CEPH_FRAG_H
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 static inline __u32 ceph_frag_make(__u32 b, __u32 v)
0023 {
0024 return (b << 24) |
0025 (v & (0xffffffu << (24-b)) & 0xffffffu);
0026 }
0027 static inline __u32 ceph_frag_bits(__u32 f)
0028 {
0029 return f >> 24;
0030 }
0031 static inline __u32 ceph_frag_value(__u32 f)
0032 {
0033 return f & 0xffffffu;
0034 }
0035 static inline __u32 ceph_frag_mask(__u32 f)
0036 {
0037 return (0xffffffu << (24-ceph_frag_bits(f))) & 0xffffffu;
0038 }
0039 static inline __u32 ceph_frag_mask_shift(__u32 f)
0040 {
0041 return 24 - ceph_frag_bits(f);
0042 }
0043
0044 static inline bool ceph_frag_contains_value(__u32 f, __u32 v)
0045 {
0046 return (v & ceph_frag_mask(f)) == ceph_frag_value(f);
0047 }
0048
0049 static inline __u32 ceph_frag_make_child(__u32 f, int by, int i)
0050 {
0051 int newbits = ceph_frag_bits(f) + by;
0052 return ceph_frag_make(newbits,
0053 ceph_frag_value(f) | (i << (24 - newbits)));
0054 }
0055 static inline bool ceph_frag_is_leftmost(__u32 f)
0056 {
0057 return ceph_frag_value(f) == 0;
0058 }
0059 static inline bool ceph_frag_is_rightmost(__u32 f)
0060 {
0061 return ceph_frag_value(f) == ceph_frag_mask(f);
0062 }
0063 static inline __u32 ceph_frag_next(__u32 f)
0064 {
0065 return ceph_frag_make(ceph_frag_bits(f),
0066 ceph_frag_value(f) + (0x1000000 >> ceph_frag_bits(f)));
0067 }
0068
0069
0070
0071
0072
0073 int ceph_frag_compare(__u32 a, __u32 b);
0074
0075 #endif