[XFS] Remove macro-to-function indirections in the mask code

Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
Reviewed-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
This commit is contained in:
Eric Sandeen 2009-01-09 15:53:54 +11:00 committed by Lachlan McIlroy
parent c9fb86a917
commit fb82557f16
3 changed files with 44 additions and 52 deletions

View file

@ -231,7 +231,7 @@ typedef struct xfs_perag
#define XFS_FSB_TO_AGNO(mp,fsbno) \ #define XFS_FSB_TO_AGNO(mp,fsbno) \
((xfs_agnumber_t)((fsbno) >> (mp)->m_sb.sb_agblklog)) ((xfs_agnumber_t)((fsbno) >> (mp)->m_sb.sb_agblklog))
#define XFS_FSB_TO_AGBNO(mp,fsbno) \ #define XFS_FSB_TO_AGBNO(mp,fsbno) \
((xfs_agblock_t)((fsbno) & XFS_MASK32LO((mp)->m_sb.sb_agblklog))) ((xfs_agblock_t)((fsbno) & xfs_mask32lo((mp)->m_sb.sb_agblklog)))
#define XFS_AGB_TO_DADDR(mp,agno,agbno) \ #define XFS_AGB_TO_DADDR(mp,agno,agbno) \
((xfs_daddr_t)XFS_FSB_TO_BB(mp, \ ((xfs_daddr_t)XFS_FSB_TO_BB(mp, \
(xfs_fsblock_t)(agno) * (mp)->m_sb.sb_agblocks + (agbno))) (xfs_fsblock_t)(agno) * (mp)->m_sb.sb_agblocks + (agbno)))

View file

@ -23,24 +23,16 @@
*/ */
/* /*
* masks with n high/low bits set, 32-bit values & 64-bit values * masks with n high/low bits set, 64-bit values
*/ */
#define XFS_MASK32HI(n) xfs_mask32hi(n)
static inline __uint32_t xfs_mask32hi(int n)
{
return (__uint32_t)-1 << (32 - (n));
}
#define XFS_MASK64HI(n) xfs_mask64hi(n)
static inline __uint64_t xfs_mask64hi(int n) static inline __uint64_t xfs_mask64hi(int n)
{ {
return (__uint64_t)-1 << (64 - (n)); return (__uint64_t)-1 << (64 - (n));
} }
#define XFS_MASK32LO(n) xfs_mask32lo(n)
static inline __uint32_t xfs_mask32lo(int n) static inline __uint32_t xfs_mask32lo(int n)
{ {
return ((__uint32_t)1 << (n)) - 1; return ((__uint32_t)1 << (n)) - 1;
} }
#define XFS_MASK64LO(n) xfs_mask64lo(n)
static inline __uint64_t xfs_mask64lo(int n) static inline __uint64_t xfs_mask64lo(int n)
{ {
return ((__uint64_t)1 << (n)) - 1; return ((__uint64_t)1 << (n)) - 1;

View file

@ -110,16 +110,16 @@ __xfs_bmbt_get_all(
ext_flag = (int)(l0 >> (64 - BMBT_EXNTFLAG_BITLEN)); ext_flag = (int)(l0 >> (64 - BMBT_EXNTFLAG_BITLEN));
s->br_startoff = ((xfs_fileoff_t)l0 & s->br_startoff = ((xfs_fileoff_t)l0 &
XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN)) >> 9;
#if XFS_BIG_BLKNOS #if XFS_BIG_BLKNOS
s->br_startblock = (((xfs_fsblock_t)l0 & XFS_MASK64LO(9)) << 43) | s->br_startblock = (((xfs_fsblock_t)l0 & xfs_mask64lo(9)) << 43) |
(((xfs_fsblock_t)l1) >> 21); (((xfs_fsblock_t)l1) >> 21);
#else #else
#ifdef DEBUG #ifdef DEBUG
{ {
xfs_dfsbno_t b; xfs_dfsbno_t b;
b = (((xfs_dfsbno_t)l0 & XFS_MASK64LO(9)) << 43) | b = (((xfs_dfsbno_t)l0 & xfs_mask64lo(9)) << 43) |
(((xfs_dfsbno_t)l1) >> 21); (((xfs_dfsbno_t)l1) >> 21);
ASSERT((b >> 32) == 0 || ISNULLDSTARTBLOCK(b)); ASSERT((b >> 32) == 0 || ISNULLDSTARTBLOCK(b));
s->br_startblock = (xfs_fsblock_t)b; s->br_startblock = (xfs_fsblock_t)b;
@ -128,7 +128,7 @@ __xfs_bmbt_get_all(
s->br_startblock = (xfs_fsblock_t)(((xfs_dfsbno_t)l1) >> 21); s->br_startblock = (xfs_fsblock_t)(((xfs_dfsbno_t)l1) >> 21);
#endif /* DEBUG */ #endif /* DEBUG */
#endif /* XFS_BIG_BLKNOS */ #endif /* XFS_BIG_BLKNOS */
s->br_blockcount = (xfs_filblks_t)(l1 & XFS_MASK64LO(21)); s->br_blockcount = (xfs_filblks_t)(l1 & xfs_mask64lo(21));
/* This is xfs_extent_state() in-line */ /* This is xfs_extent_state() in-line */
if (ext_flag) { if (ext_flag) {
ASSERT(s->br_blockcount != 0); /* saved for DMIG */ ASSERT(s->br_blockcount != 0); /* saved for DMIG */
@ -153,7 +153,7 @@ xfs_filblks_t
xfs_bmbt_get_blockcount( xfs_bmbt_get_blockcount(
xfs_bmbt_rec_host_t *r) xfs_bmbt_rec_host_t *r)
{ {
return (xfs_filblks_t)(r->l1 & XFS_MASK64LO(21)); return (xfs_filblks_t)(r->l1 & xfs_mask64lo(21));
} }
/* /*
@ -164,13 +164,13 @@ xfs_bmbt_get_startblock(
xfs_bmbt_rec_host_t *r) xfs_bmbt_rec_host_t *r)
{ {
#if XFS_BIG_BLKNOS #if XFS_BIG_BLKNOS
return (((xfs_fsblock_t)r->l0 & XFS_MASK64LO(9)) << 43) | return (((xfs_fsblock_t)r->l0 & xfs_mask64lo(9)) << 43) |
(((xfs_fsblock_t)r->l1) >> 21); (((xfs_fsblock_t)r->l1) >> 21);
#else #else
#ifdef DEBUG #ifdef DEBUG
xfs_dfsbno_t b; xfs_dfsbno_t b;
b = (((xfs_dfsbno_t)r->l0 & XFS_MASK64LO(9)) << 43) | b = (((xfs_dfsbno_t)r->l0 & xfs_mask64lo(9)) << 43) |
(((xfs_dfsbno_t)r->l1) >> 21); (((xfs_dfsbno_t)r->l1) >> 21);
ASSERT((b >> 32) == 0 || ISNULLDSTARTBLOCK(b)); ASSERT((b >> 32) == 0 || ISNULLDSTARTBLOCK(b));
return (xfs_fsblock_t)b; return (xfs_fsblock_t)b;
@ -188,7 +188,7 @@ xfs_bmbt_get_startoff(
xfs_bmbt_rec_host_t *r) xfs_bmbt_rec_host_t *r)
{ {
return ((xfs_fileoff_t)r->l0 & return ((xfs_fileoff_t)r->l0 &
XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN)) >> 9;
} }
xfs_exntst_t xfs_exntst_t
@ -219,7 +219,7 @@ xfs_filblks_t
xfs_bmbt_disk_get_blockcount( xfs_bmbt_disk_get_blockcount(
xfs_bmbt_rec_t *r) xfs_bmbt_rec_t *r)
{ {
return (xfs_filblks_t)(be64_to_cpu(r->l1) & XFS_MASK64LO(21)); return (xfs_filblks_t)(be64_to_cpu(r->l1) & xfs_mask64lo(21));
} }
/* /*
@ -230,7 +230,7 @@ xfs_bmbt_disk_get_startoff(
xfs_bmbt_rec_t *r) xfs_bmbt_rec_t *r)
{ {
return ((xfs_fileoff_t)be64_to_cpu(r->l0) & return ((xfs_fileoff_t)be64_to_cpu(r->l0) &
XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN)) >> 9;
} }
@ -248,33 +248,33 @@ xfs_bmbt_set_allf(
int extent_flag = (state == XFS_EXT_NORM) ? 0 : 1; int extent_flag = (state == XFS_EXT_NORM) ? 0 : 1;
ASSERT(state == XFS_EXT_NORM || state == XFS_EXT_UNWRITTEN); ASSERT(state == XFS_EXT_NORM || state == XFS_EXT_UNWRITTEN);
ASSERT((startoff & XFS_MASK64HI(64-BMBT_STARTOFF_BITLEN)) == 0); ASSERT((startoff & xfs_mask64hi(64-BMBT_STARTOFF_BITLEN)) == 0);
ASSERT((blockcount & XFS_MASK64HI(64-BMBT_BLOCKCOUNT_BITLEN)) == 0); ASSERT((blockcount & xfs_mask64hi(64-BMBT_BLOCKCOUNT_BITLEN)) == 0);
#if XFS_BIG_BLKNOS #if XFS_BIG_BLKNOS
ASSERT((startblock & XFS_MASK64HI(64-BMBT_STARTBLOCK_BITLEN)) == 0); ASSERT((startblock & xfs_mask64hi(64-BMBT_STARTBLOCK_BITLEN)) == 0);
r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) |
((xfs_bmbt_rec_base_t)startoff << 9) | ((xfs_bmbt_rec_base_t)startoff << 9) |
((xfs_bmbt_rec_base_t)startblock >> 43); ((xfs_bmbt_rec_base_t)startblock >> 43);
r->l1 = ((xfs_bmbt_rec_base_t)startblock << 21) | r->l1 = ((xfs_bmbt_rec_base_t)startblock << 21) |
((xfs_bmbt_rec_base_t)blockcount & ((xfs_bmbt_rec_base_t)blockcount &
(xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); (xfs_bmbt_rec_base_t)xfs_mask64lo(21));
#else /* !XFS_BIG_BLKNOS */ #else /* !XFS_BIG_BLKNOS */
if (ISNULLSTARTBLOCK(startblock)) { if (ISNULLSTARTBLOCK(startblock)) {
r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) |
((xfs_bmbt_rec_base_t)startoff << 9) | ((xfs_bmbt_rec_base_t)startoff << 9) |
(xfs_bmbt_rec_base_t)XFS_MASK64LO(9); (xfs_bmbt_rec_base_t)xfs_mask64lo(9);
r->l1 = XFS_MASK64HI(11) | r->l1 = xfs_mask64hi(11) |
((xfs_bmbt_rec_base_t)startblock << 21) | ((xfs_bmbt_rec_base_t)startblock << 21) |
((xfs_bmbt_rec_base_t)blockcount & ((xfs_bmbt_rec_base_t)blockcount &
(xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); (xfs_bmbt_rec_base_t)xfs_mask64lo(21));
} else { } else {
r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) |
((xfs_bmbt_rec_base_t)startoff << 9); ((xfs_bmbt_rec_base_t)startoff << 9);
r->l1 = ((xfs_bmbt_rec_base_t)startblock << 21) | r->l1 = ((xfs_bmbt_rec_base_t)startblock << 21) |
((xfs_bmbt_rec_base_t)blockcount & ((xfs_bmbt_rec_base_t)blockcount &
(xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); (xfs_bmbt_rec_base_t)xfs_mask64lo(21));
} }
#endif /* XFS_BIG_BLKNOS */ #endif /* XFS_BIG_BLKNOS */
} }
@ -306,11 +306,11 @@ xfs_bmbt_disk_set_allf(
int extent_flag = (state == XFS_EXT_NORM) ? 0 : 1; int extent_flag = (state == XFS_EXT_NORM) ? 0 : 1;
ASSERT(state == XFS_EXT_NORM || state == XFS_EXT_UNWRITTEN); ASSERT(state == XFS_EXT_NORM || state == XFS_EXT_UNWRITTEN);
ASSERT((startoff & XFS_MASK64HI(64-BMBT_STARTOFF_BITLEN)) == 0); ASSERT((startoff & xfs_mask64hi(64-BMBT_STARTOFF_BITLEN)) == 0);
ASSERT((blockcount & XFS_MASK64HI(64-BMBT_BLOCKCOUNT_BITLEN)) == 0); ASSERT((blockcount & xfs_mask64hi(64-BMBT_BLOCKCOUNT_BITLEN)) == 0);
#if XFS_BIG_BLKNOS #if XFS_BIG_BLKNOS
ASSERT((startblock & XFS_MASK64HI(64-BMBT_STARTBLOCK_BITLEN)) == 0); ASSERT((startblock & xfs_mask64hi(64-BMBT_STARTBLOCK_BITLEN)) == 0);
r->l0 = cpu_to_be64( r->l0 = cpu_to_be64(
((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)extent_flag << 63) |
@ -319,17 +319,17 @@ xfs_bmbt_disk_set_allf(
r->l1 = cpu_to_be64( r->l1 = cpu_to_be64(
((xfs_bmbt_rec_base_t)startblock << 21) | ((xfs_bmbt_rec_base_t)startblock << 21) |
((xfs_bmbt_rec_base_t)blockcount & ((xfs_bmbt_rec_base_t)blockcount &
(xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); (xfs_bmbt_rec_base_t)xfs_mask64lo(21)));
#else /* !XFS_BIG_BLKNOS */ #else /* !XFS_BIG_BLKNOS */
if (ISNULLSTARTBLOCK(startblock)) { if (ISNULLSTARTBLOCK(startblock)) {
r->l0 = cpu_to_be64( r->l0 = cpu_to_be64(
((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)extent_flag << 63) |
((xfs_bmbt_rec_base_t)startoff << 9) | ((xfs_bmbt_rec_base_t)startoff << 9) |
(xfs_bmbt_rec_base_t)XFS_MASK64LO(9)); (xfs_bmbt_rec_base_t)xfs_mask64lo(9));
r->l1 = cpu_to_be64(XFS_MASK64HI(11) | r->l1 = cpu_to_be64(xfs_mask64hi(11) |
((xfs_bmbt_rec_base_t)startblock << 21) | ((xfs_bmbt_rec_base_t)startblock << 21) |
((xfs_bmbt_rec_base_t)blockcount & ((xfs_bmbt_rec_base_t)blockcount &
(xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); (xfs_bmbt_rec_base_t)xfs_mask64lo(21)));
} else { } else {
r->l0 = cpu_to_be64( r->l0 = cpu_to_be64(
((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)extent_flag << 63) |
@ -337,7 +337,7 @@ xfs_bmbt_disk_set_allf(
r->l1 = cpu_to_be64( r->l1 = cpu_to_be64(
((xfs_bmbt_rec_base_t)startblock << 21) | ((xfs_bmbt_rec_base_t)startblock << 21) |
((xfs_bmbt_rec_base_t)blockcount & ((xfs_bmbt_rec_base_t)blockcount &
(xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); (xfs_bmbt_rec_base_t)xfs_mask64lo(21)));
} }
#endif /* XFS_BIG_BLKNOS */ #endif /* XFS_BIG_BLKNOS */
} }
@ -362,9 +362,9 @@ xfs_bmbt_set_blockcount(
xfs_bmbt_rec_host_t *r, xfs_bmbt_rec_host_t *r,
xfs_filblks_t v) xfs_filblks_t v)
{ {
ASSERT((v & XFS_MASK64HI(43)) == 0); ASSERT((v & xfs_mask64hi(43)) == 0);
r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64HI(43)) | r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64hi(43)) |
(xfs_bmbt_rec_base_t)(v & XFS_MASK64LO(21)); (xfs_bmbt_rec_base_t)(v & xfs_mask64lo(21));
} }
/* /*
@ -376,21 +376,21 @@ xfs_bmbt_set_startblock(
xfs_fsblock_t v) xfs_fsblock_t v)
{ {
#if XFS_BIG_BLKNOS #if XFS_BIG_BLKNOS
ASSERT((v & XFS_MASK64HI(12)) == 0); ASSERT((v & xfs_mask64hi(12)) == 0);
r->l0 = (r->l0 & (xfs_bmbt_rec_base_t)XFS_MASK64HI(55)) | r->l0 = (r->l0 & (xfs_bmbt_rec_base_t)xfs_mask64hi(55)) |
(xfs_bmbt_rec_base_t)(v >> 43); (xfs_bmbt_rec_base_t)(v >> 43);
r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)) | r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64lo(21)) |
(xfs_bmbt_rec_base_t)(v << 21); (xfs_bmbt_rec_base_t)(v << 21);
#else /* !XFS_BIG_BLKNOS */ #else /* !XFS_BIG_BLKNOS */
if (ISNULLSTARTBLOCK(v)) { if (ISNULLSTARTBLOCK(v)) {
r->l0 |= (xfs_bmbt_rec_base_t)XFS_MASK64LO(9); r->l0 |= (xfs_bmbt_rec_base_t)xfs_mask64lo(9);
r->l1 = (xfs_bmbt_rec_base_t)XFS_MASK64HI(11) | r->l1 = (xfs_bmbt_rec_base_t)xfs_mask64hi(11) |
((xfs_bmbt_rec_base_t)v << 21) | ((xfs_bmbt_rec_base_t)v << 21) |
(r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64lo(21));
} else { } else {
r->l0 &= ~(xfs_bmbt_rec_base_t)XFS_MASK64LO(9); r->l0 &= ~(xfs_bmbt_rec_base_t)xfs_mask64lo(9);
r->l1 = ((xfs_bmbt_rec_base_t)v << 21) | r->l1 = ((xfs_bmbt_rec_base_t)v << 21) |
(r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64lo(21));
} }
#endif /* XFS_BIG_BLKNOS */ #endif /* XFS_BIG_BLKNOS */
} }
@ -403,10 +403,10 @@ xfs_bmbt_set_startoff(
xfs_bmbt_rec_host_t *r, xfs_bmbt_rec_host_t *r,
xfs_fileoff_t v) xfs_fileoff_t v)
{ {
ASSERT((v & XFS_MASK64HI(9)) == 0); ASSERT((v & xfs_mask64hi(9)) == 0);
r->l0 = (r->l0 & (xfs_bmbt_rec_base_t) XFS_MASK64HI(1)) | r->l0 = (r->l0 & (xfs_bmbt_rec_base_t) xfs_mask64hi(1)) |
((xfs_bmbt_rec_base_t)v << 9) | ((xfs_bmbt_rec_base_t)v << 9) |
(r->l0 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(9)); (r->l0 & (xfs_bmbt_rec_base_t)xfs_mask64lo(9));
} }
/* /*
@ -419,9 +419,9 @@ xfs_bmbt_set_state(
{ {
ASSERT(v == XFS_EXT_NORM || v == XFS_EXT_UNWRITTEN); ASSERT(v == XFS_EXT_NORM || v == XFS_EXT_UNWRITTEN);
if (v == XFS_EXT_NORM) if (v == XFS_EXT_NORM)
r->l0 &= XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN); r->l0 &= xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN);
else else
r->l0 |= XFS_MASK64HI(BMBT_EXNTFLAG_BITLEN); r->l0 |= xfs_mask64hi(BMBT_EXNTFLAG_BITLEN);
} }
/* /*